Datadog

EOL Risk Scores
in your Datadog account

The endoflife.ai integration for Datadog is available in the Datadog Integrations catalog. It brings the EOL Risk Score™, days to end of life and CISA Known Exploited Vulnerabilities exposure for 600+ products into Datadog as metrics, and an optional stack scan narrows them to the software running on the hosts Datadog already monitors. Free to use; the exporter is open source (MIT) and reads the same public file anyone can download.

What it does

A small Python exporter pushes four metric families into your Datadog account. Every point is tagged with the product (endoflife.ai slug), its letter grade, its lifecycle label and date, its lifecycle phase (approaching, past or none) and whether an active CISA KEV entry applies.

endoflife.risk_score
The EOL Risk Score™ (0–100) for each tracked product. Higher means more dangerous to keep running.
endoflife.days_until_eol
Days until the product's end-of-life date; negative once it has passed. Powers countdown and urgency widgets.
endoflife.kev_factor_score
The CISA Known Exploited Vulnerabilities component of the score on its own (0–20). Non-zero only when the product has an active KEV entry.
endoflife.stack_risk_score
The score scoped to software detected on hosts in your own Datadog account, tagged by host name. Written by the optional stack scan.

The dashboard. The integration tile includes the EOL Risk Overview dashboard: products past end of life with an active CISA KEV entry, the nearest end-of-life deadlines, products by risk grade and, once the stack scan has run, your riskiest hosts.

The stack scan. dd_stack_scan.py reads your host inventory from Datadog (host names, host tags and the apps the Datadog Agent detected), matches it against endoflife.ai's products on your own machine, and pushes endoflife.stack_risk_score per host and product back to Datadog. That turns a catalog-wide reference into a view of what you actually run.

Set it up

Python 3.8 or later, standard library only: nothing to install. The steps below come from the exporter's README.

Step 1
In Datadog, open Integrations, search endoflife and install the endoflife.ai tile (app.datadoghq.com/integrations/endoflife, login required).

Step 2
Get the exporter from the public repository github.com/endoflife-ai/datadog-eol-metrics (clone it or download dd_push.py and dd_stack_scan.py).

Step 3
In Datadog, Organization Settings → API Keys: create or copy an API key. Set the environment variables (Windows shown; use export elsewhere). DD_SITE is optional and defaults to datadoghq.com; set it to your account's site if different: datadoghq.eu, us3.datadoghq.com, us5.datadoghq.com, ap1.datadoghq.com, ddog-gov.com.

shell
setx DD_API_KEY "your-datadog-api-key"
setx DD_SITE    "datadoghq.com"

Step 4
Push the catalog scores, then confirm in Metrics → Summary (search endoflife.risk_score). Schedule the push daily (cron, Task Scheduler, a CI job): endoflife.ai rebuilds the scores every day.

shell
python dd_push.py

Step 5
Optional: score the software on your own hosts. The stack scan reads the Datadog Hosts API, which needs an application key as well (Organization Settings → Application Keys). DD_APP_KEY is needed only for this step.

shell
setx DD_APP_KEY "your-datadog-application-key"
python dd_stack_scan.py --sample          # try the matching logic on synthetic hosts; pushes nothing to Datadog
python dd_stack_scan.py                   # scan your real hosts and push the matches to Datadog

If the scan finds no matches, the product names your hosts report may need entries in the script's alias map; the script says so when it happens.

Monitors. The repository's assets/monitors/ folder holds four monitor templates: critical EOL risk, end of life within 30 days, host running end-of-life software, and KEV-exposed product. To create one, open Monitors → New Monitor → Import from JSON and paste the object under the file's definition key.

What data goes where

The exporter reads one public file, endoflife.ai/scores.json, rebuilt daily. From the repository's README:

The exporter downloads endoflife.ai's public scores file and identifies itself by user agent (endoflife-datadog-exporter/<version>), so endoflife.ai can count active installations in aggregate. Nothing else is sent to endoflife.ai: your Datadog API and application keys go only to Datadog, and the stack scan reads your host inventory from Datadog, matches it locally and pushes the results only to Datadog. There is no install ID and no telemetry endpoint. github.com/endoflife-ai/datadog-eol-metrics, Data collection

The stack scan's user agent is endoflife-datadog-exporter-stackscan/<version>. We count fetches of the scores file per user agent, per day, in aggregate; no install ID exists to count.

Free, and what the paid API adds

The integration is free: the tile, the exporter and the scores file cost nothing, and no endoflife.ai key is needed. The paid developer API is for teams that check stacks and SBOMs programmatically at volume: /v1/batch scores a list of products in one call and /v1/sbom resolves and scores a CycloneDX or SPDX document. Plans start at USD 89 a month (Starter, 10,000 requests per day); see the API page for every tier.

Every date names its source For the products endoflife.ai verifies directly, the date behind the score is read from the vendor's own lifecycle page; for the rest it comes from the open endoflife.date dataset, and the API says which. Questions or a date you believe is wrong: [email protected]. Corrections are published.

FAQ

Does the endoflife.ai integration for Datadog cost anything?

No. The integration tile, the exporter and the public scores file it reads are free, and no endoflife.ai account or key is needed.

What does endoflife.ai learn about my Datadog account?

Nothing beyond a download of the public scores file. The exporter identifies itself by user agent so we can count installations in aggregate; there is no install ID. Your Datadog API and application keys go only to Datadog, and the stack scan matches your host inventory on your own machine and pushes the results only to Datadog.

Which Datadog sites does it support?

Set DD_SITE to your account's site: datadoghq.com (the default), datadoghq.eu, us3.datadoghq.com, us5.datadoghq.com, ap1.datadoghq.com or ddog-gov.com.

Why does the stack scan need an application key?

The stack scan reads your host list from the Datadog Hosts API, which needs both an API key and an application key. The catalog push (dd_push.py) needs only DD_API_KEY.

How often should the exporter run?

Once a day. endoflife.ai rebuilds scores.json daily, so a daily scheduled run (cron, Task Scheduler or a CI job) keeps the metrics current.

Is this integration made by Datadog?

No. It is built and supported by endoflife.ai and is available in the Datadog Integrations catalog. endoflife.ai is not affiliated with or endorsed by Datadog, Inc. Support: [email protected].

Not on Datadog?

The same data runs our Dynatrace exporter, Grafana dashboard, Zabbix template, Nagios check and the developer API.

All integrations Dynatrace Risk Score methodology