Browse the Knowledge Hub211 resources
Datadog review: pricing, alternatives and setup
Datadog is a commercial SaaS observability platform covering infrastructure metrics, APM with distributed tracing, logs, real user monitoring, synthetic tests and CI test analytics. For QA teams the useful parts are APM for explaining performance test results, Synthetic Monitoring and Continuous Testing for API, browser and mobile checks in CI and production, and Test Optimization for tracking flaky tests.
QAble has evaluated this tool and works alongside it. The factual sections are complete; our view is bounded to what we have actually seen rather than a long-term verdict.
- last reviewed
- 13 October 2026
- version covered
- Datadog SaaS, Agent 7.84
- licence
- Commercial
At a glance
Datadog at a glance
- Vendor
- Datadog
- Category
- Monitoring
- Licence
- Commercial
- Platforms
- Cloud
- Integrates with
- Kubernetes, AWS, Jenkins, Selenium
- First released
- 2010
- Version reviewed
- Datadog SaaS, Agent 7.84
Verdict
Our verdict on Datadog
Strengths
- APM traces break a slow request into time per service, database query and external call
- One platform holds metrics, traces, logs, synthetic results and CI test results, all filterable by env, service and version
- Synthetic tests cover HTTP, SSL, DNS, WebSocket, TCP, UDP, ICMP and gRPC, plus browser and mobile app journeys
- Continuous Testing runs the same synthetic tests from CI, with a tunnel to reach private environments
- Test Optimization flags flaky tests, with opt-in Early Flake Detection, Auto Test Retries and Test Impact Analysis
Weaknesses
- Billed per product and unit: hosts, GB, test runs and committers, which makes total cost hard to forecast
- Commercial SaaS only; telemetry and recorded tests live in Datadog’s cloud
- Browser tests are recorded and stored in Datadog, not reviewed as code in your repository
- k6’s built-in StatsD output was removed, so older Datadog plus k6 tutorials no longer work
Our take
Datadog is worth its price for a QA team when the organisation already sends its production telemetry there. Then a load test against staging can be read through the same APM traces, dashboards and monitors that operations use, and a slow checkout becomes a named service, endpoint and query rather than a percentile. Synthetic tests extend the same view into production with scheduled API and browser checks. QAble has evaluated Datadog for these uses rather than run a long-term estate on it, so treat this as a bounded take. The cautions are cost and lock-in: every product is billed on its own unit, so synthetic run counts and test spans need a budget, and recorded browser tests live in Datadog rather than in your repository.
We have evaluated this tool rather than maintained a long-running suite on it, so this is a bounded view rather than a long-term verdict. The rest of this page is factual.
How it works
What is Datadog and how does it work?
An Agent per host, a SaaS back end
The Datadog Agent runs on each host or as a container, collects system and integration metrics, and forwards them to your Datadog site. It also receives traces from language tracers such as dd-trace on port 8126 and custom metrics through DogStatsD on UDP port 8125. Everything is stored and queried in Datadog’s cloud, so there is no database to size or run, which is the main operational difference from a Prometheus and Grafana stack. Accounts live on a specific site, such as US1 at datadoghq.com or one of the EU and other regional sites, and every Agent, tracer and API call must use the same site through DD_SITE.
Unified service tagging ties the data together
Three reserved tags, env, service and version, set through DD_ENV, DD_SERVICE and DD_VERSION, connect metrics, traces and logs from the same deployment. For testing this is what makes results attributable. If the staging deployment sets env to staging and version to the build number, a load test’s traces, error logs and latency graphs can be filtered to exactly that build, and two builds can be compared under the same load. Without these tags, data from several environments and releases blends together and a performance regression cannot be pinned to a change.
Synthetic tests run from locations, on a schedule or on demand
Synthetic tests run from Datadog-managed locations around the world or from private locations you host, which is how internal APIs and websites are monitored. API tests cover HTTP, SSL, DNS, WebSocket, TCP, UDP, ICMP and gRPC, singly or as multistep chains. Browser tests are created from templates, from scratch or by recording with the Datadog Record Test Chrome extension, and run on Chrome, Firefox and Edge at chosen device sizes, at frequencies from every minute to once a week. Mobile app tests and network path tests complete the set. Continuous Testing triggers the same tests from CI instead of a schedule.
Test Optimization instruments the test runner
Test Optimization reports each automated test as a span, so test duration, failures and flakiness become searchable data rather than CI log lines. A language library hooks into the test framework: for JavaScript, dd-trace loaded through NODE_OPTIONS instruments Jest 28 or later with jest-circus, and Playwright 1.38 or later; .NET, Java, Python, Ruby, Swift and Go are supported, and JUnit XML can be uploaded for anything else. In agentless mode results go straight to Datadog with an API key. When an integration test calls services that are themselves traced, the backend trace appears in the test’s details.
Strengths
What it does well
Explaining performance test results with APM
A load test tells you that p95 latency doubled at 400 users. APM traces captured during that run show which service, endpoint and database query the time went into, and whether errors came from your code or a dependency. That turns a performance finding into a ticket a developer can fix, which is most of the value of running the test at all.
Load tool metrics beside system metrics
k6 can send metrics to the Agent’s DogStatsD listener through the xk6-output-statsd extension, or through its OpenTelemetry output, and Datadog installs a k6 dashboard when it first sees k6.http_reqs. Load, latency and errors from the test then share a timeline with host, container and APM data, without running a separate time-series database.
Synthetic checks in production
Scheduled API and browser tests run from many locations and alert through Datadog monitors when a journey breaks. For teams deploying several times a day, a login and checkout check every few minutes in production is often the control that catches what pre-release testing missed, such as a misconfigured feature flag or an expired certificate.
The same tests as CI gates
Continuous Testing runs existing synthetic tests from a pipeline through the datadog-ci CLI or the official GitHub Action, selected by public ID or a search such as tag:e2e-tests. Test overrides change the start URL and variables per run, so one browser test can check a preview environment, and the tunnel option reaches environments that are not on the public internet.
Flaky test management across the suite
Test Optimization tracks every test’s history, so a test that passes and fails on the same commit is flagged as flaky rather than rerun until green. Early Flake Detection retries new tests to catch flakiness before it merges, Auto Test Retries keeps a known flaky test from failing the build, and Test Impact Analysis skips tests unaffected by a change. All three are opt-in.
Run markers through the Events API
Posting an event at the start and end of a load test, tagged with the run ID and build, puts a marker on dashboards and in the event stream. Months later, anyone comparing graphs can see exactly when each test ran and against which version, which manual notes rarely achieve.
Pricing
Datadog pricing and licensing
Datadog is commercial SaaS, priced per product on that product’s own unit, and most products offer annual and higher on-demand rates. On the pricing page today, list prices include Infrastructure Pro from $15 per host per month billed annually, Synthetic API tests from $5 per 10,000 runs and browser tests from $12 per 1,000 runs, and Test Optimization from $20 per committer per month, each billed annually. Infrastructure has a free tier, and Datadog’s own pages offer a 14-day trial of the platform.
- Licence: proprietary SaaS. The Agent and tracing libraries are open source on GitHub, but the platform they send data to is a paid service.
- Free tier: Infrastructure Free covers up to 5 hosts with 1-day metric retention and core collection and visualisation, which is enough to learn the product, not to run a performance test programme.
- Paid units: Infrastructure and APM per host, logs per GB ingested plus per million events indexed, synthetic tests per run, Continuous Testing parallelisation per slot, and Test Optimization and CI Pipeline Visibility per committer.
- How cost scales: synthetic cost scales with frequency multiplied by locations, so a browser test every five minutes from five locations runs about 43,000 times a month. Model schedules before creating them.
- Hidden costs: high-cardinality custom metrics from load tools, verbose logs during soak tests and spans from large test suites all add billable volume. Set budgets and usage monitors early.
Checked against the vendor’s own pages on 13 October 2026. Pricing changes; confirm on the official site before buying.
Getting started
Getting started with Datadog
Setup, step by step
- Start a trial and note your Datadog site, such as datadoghq.com or datadoghq.eu, from the URL you log in at.
- Create an API key, and an application key for CI tools, in your organisation settings.
- Run the Agent on the staging host with APM enabled, and set DD_ENV, DD_SERVICE and DD_VERSION on the application.
- Create one API test in Synthetic Monitoring against a staging health endpoint and tag it e2e-tests.
- Add the synthetics config file below to the repository and run the tests from your machine with datadog-ci.
Install
npm install --save-dev @datadog/datadog-ci
npx datadog-ci plugin install synthetics
# DD_API_KEY, DD_APP_KEY and DATADOG_SITE must be set
npx datadog-ci synthetics run-tests --search "tag:e2e-tests"A first example
// checkout.synthetics.json: picked up by the default **/*.synthetics.json glob
{
"tests": [
{
"id": "abc-d3f-ghi",
"testOverrides": {
"startUrl": "https://staging.example.com/checkout",
"variables": { "COUPON": "QA-TEST-10" }
}
}
]
}What trips people up first
Mixing Datadog sites. Keys belong to one site, and the Agent, tracers, datadog-ci and API calls all default to the US1 site at datadoghq.com. An EU or other regional account then sees authentication failures or simply no data, which looks like a broken setup. Set DD_SITE for the Agent and tracers, DATADOG_SITE for datadog-ci, the datadog-site input in the GitHub Action, and the matching API host for curl calls. The second hurdle is the two keys: the API key sends data, but triggering synthetic tests from CI also needs an application key.
In practice
Using Datadog in practice
Instrumenting the system before a load test
Traces only explain a performance test if they were collected during it, so instrument staging first. Run the Agent with APM enabled, attach the tracer to each service, and set the unified service tags, using the build number as version. Confirm that a single request appears as a full trace across services before scheduling the test. During the run, keep sampling in mind: by default the Agent adjusts sampling to target about ten traces per second overall, so under load most requests are not kept as traces. Judge latency from metrics and use traces to explain representative slow requests, not to count them.
# Agent with APM, reachable from other containers on the same network
docker run -d --name datadog-agent \
--cgroupns host --pid host \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /proc/:/host/proc/:ro \
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
-e DD_API_KEY=$DD_API_KEY \
-e DD_SITE=datadoghq.eu \
-e DD_APM_ENABLED=true \
-e DD_APM_NON_LOCAL_TRAFFIC=true \
registry.datadoghq.com/agent:7
# On each application container: unified service tags
# DD_ENV=staging DD_SERVICE=checkout-api DD_VERSION=1.42.0
# DD_AGENT_HOST=datadog-agentGating pull requests with Continuous Testing
Run the synthetic tests tagged for end-to-end checks on every pull request, against the preview or staging URL the pipeline just deployed. The official action reads *.synthetics.json files by default, or selects tests by public ID or search query, and waits for results so a failure fails the job. If the environment is private, set tunnel to true rather than opening it to the internet. The batch timeout defaults to 30 minutes and failOnTimeout defaults to true, so a stuck test fails the build rather than hanging it.
# .github/workflows/synthetics.yml
name: synthetics
on: pull_request
jobs:
e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Run Datadog synthetic tests
uses: DataDog/[email protected]
with:
api-key: ${{ secrets.DD_API_KEY }}
app-key: ${{ secrets.DD_APP_KEY }}
datadog-site: datadoghq.eu
test-search-query: 'tag:e2e-tests'
# Reach a staging host that is not publicly exposed
tunnel: trueSending Playwright or Jest results to Test Optimization
For a JavaScript suite in GitHub Actions, install dd-trace as a development dependency and run the tests with agentless mode on. Set NODE_OPTIONS only on the test step: if it is set for the whole job, npm install also tries to preload dd-trace before it is installed and fails with Cannot find module dd-trace/ci/init. With parallel runners, the variables must be on the parent process so every worker inherits them. Once results arrive, enable flaky test detection and retries in the Test Optimization settings rather than adding retries in the framework, so Datadog can tell a real failure from a flake.
# .github/workflows/e2e.yml (excerpt)
- uses: actions/setup-node@v7
with:
node-version: 24
- run: npm ci
- name: Playwright tests reported to Datadog
run: npx playwright test
env:
# Scoped to this step so npm ci is unaffected
NODE_OPTIONS: -r dd-trace/ci/init
DD_CIVISIBILITY_AGENTLESS_ENABLED: 'true'
DD_API_KEY: ${{ secrets.DD_API_KEY }}
DD_SITE: datadoghq.eu
DD_ENV: ci
DD_SERVICE: web-e2eMarking load test runs on dashboards
Post an event before and after each performance test, tagged with the run ID, the build and the scenario. The v1 Events endpoint accepts a title and text with an API key, which is enough for run markers; the v2 endpoint adds structured change and alert categories and needs an application key as well. Use the API host for your site, such as api.datadoghq.eu for EU accounts. Then overlay the events on the performance dashboard, so every graph shows exactly which window belongs to which run.
# Mark the start of a k6 run (use your site's API host)
curl -sf -X POST "https://api.datadoghq.eu/api/v1/events" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: $DD_API_KEY" \
-d '{
"title": "Load test started: checkout-peak",
"text": "k6 run 812 against build 1.42.0",
"tags": ["loadtest", "run:812", "env:staging"]
}'Keeping synthetic tests and costs under control
Treat synthetic tests like any other suite. Tag every test with its owner, journey and purpose, such as production monitor or CI gate, so search queries select the right set. Keep CI-only tests unscheduled and trigger them from pipelines, since scheduled runs are billed whether anyone reads them or not. Use test overrides and global variables for URLs and credentials instead of cloning a test per environment. Review run volume monthly against the billing units, and delete tests nobody owns. Because recorded browser tests live in Datadog, export their definitions through the API or manage them with Terraform if you need review and history.
Pitfalls
Common pitfalls
Following k6 tutorials that use --out statsd
Why it happens: k6 deprecated its built-in StatsD output in v0.47.0 and removed it in v0.55.0, so older Datadog plus k6 guides fail on current k6.
The fix: Build k6 with xk6 build --with github.com/LeonAdato/xk6-output-statsd and run with --out output-statsd and K6_STATSD_ENABLE_TAGS=true, or use the OpenTelemetry output.
No data, or 403 errors, on a non-US account
Why it happens: Every Datadog tool defaults to datadoghq.com, and keys are valid only on the site where they were created.
The fix: Set the site everywhere: DD_SITE for the Agent and tracers, DATADOG_SITE for datadog-ci, datadog-site in the GitHub Action and the right API host for HTTP calls.
npm ci failing after adding Test Optimization
Why it happens: NODE_OPTIONS set to -r dd-trace/ci/init at job level applies to every Node process, including the install that has not yet installed dd-trace.
The fix: Put NODE_OPTIONS and the other Test Optimization variables in the env block of the test step only.
Load test traces that cannot be separated from other traffic
Why it happens: Without env and version tags, staging traffic from the load test, manual testers and other jobs share one service view, so latency cannot be attributed to the test or the build.
The fix: Apply unified service tagging with DD_ENV, DD_SERVICE and DD_VERSION on every service, and post run markers through the Events API.
A synthetic bill far above the estimate
Why it happens: Runs multiply by frequency, locations and devices. A browser test every minute from several locations quickly reaches hundreds of thousands of billable runs a month.
The fix: Calculate runs before saving a schedule, use fewer locations for low-risk journeys, and trigger CI-only tests from pipelines rather than on a timer.
Retrying flaky tests in the framework and in Datadog at once
Why it happens: Framework retries hide the first failure, so Datadog sees a pass and cannot classify the test as flaky, while Auto Test Retries may add further attempts.
The fix: Choose one retry mechanism. If Test Optimization is in use, prefer its Auto Test Retries and Early Flake Detection so flakiness stays visible.
Compared
Datadog alternatives compared
| Tool | Licence | Hosting | Free tier | Synthetic tests | Billing units |
|---|---|---|---|---|---|
| Datadog | Commercial SaaS | Datadog cloud, Agent on your hosts | Up to 5 hosts, 1-day retention | API, browser and mobile app tests | Per host, GB, test run, committer |
| Grafana | AGPL 3.0 OSS; Cloud and Enterprise paid | Self-hosted or Grafana Cloud | Cloud Free: 10k series, 50 GB logs | Cloud only: HTTP, MultiHTTP, k6 browser | Cloud platform fee plus usage |
| New Relic | Commercial, with a free tier | New Relic cloud | 100 GB ingest, one full user | Yes, 500 checks a month free | Per GB ingested plus per user |
| Prometheus | Apache 2.0 | Self-hosted | Free and open source | Probes via blackbox exporter | None; you run the servers |
FAQ
Frequently asked questions
What is Datadog?
Datadog is a commercial SaaS observability platform covering infrastructure metrics, APM with distributed tracing, logs, real user monitoring, synthetic tests and CI test analytics. For QA teams the useful parts are APM for explaining performance test results, Synthetic Monitoring and Continuous Testing for API, browser and mobile checks in CI and production, and Test Optimization for tracking flaky tests.
What are the best Datadog alternatives?
The alternatives most often weighed against Datadog are Grafana, New Relic, Prometheus and Dynatrace. The comparison on this page sets them side by side on licence, hosting, free tier, synthetic tests and billing units, and the verdict above says where Datadog is the wrong choice and which of them to pick instead.
Is Datadog free?
Partly. Infrastructure Free monitors up to 5 hosts with 1-day metric retention, and Datadog offers a 14-day trial of the wider platform. APM, logs, synthetic tests, Continuous Testing and Test Optimization are paid products, each billed on its own unit, such as per host, per GB, per test run or per committer, with annual and on-demand rates.
Can Datadog be used for performance testing?
Datadog does not generate load itself; it observes the system while a load tool such as k6, JMeter or Gatling does. Its value is APM traces, host and container metrics and logs captured during the run, which explain why latency or errors rose. k6 metrics can be sent to the Agent through the xk6-output-statsd extension or the OpenTelemetry output.
What are Datadog synthetic tests?
Scripted checks that run from Datadog-managed or private locations. API tests cover HTTP, SSL, DNS, WebSocket, TCP, UDP, ICMP and gRPC, singly or chained. Browser tests are recorded or built in the app and run on Chrome, Firefox or Edge. Mobile app tests cover iOS and Android. They run on a schedule as monitors or on demand from CI through Continuous Testing.
Datadog vs Grafana: which should a QA team use?
Use whichever your organisation already runs in production, because the value comes from seeing test traffic in the same traces and dashboards as real traffic. Datadog is one commercial platform with its own Agent, APM and synthetic tests. Grafana is open source and queries data sources you run, such as Prometheus, with synthetic checks and hosted k6 in Grafana Cloud.
How do I run Datadog synthetic tests in GitHub Actions?
Use the official DataDog/synthetics-ci-github-action, currently v4.1.1, with your API and application keys as secrets. Select tests with public-ids, test-search-query or *.synthetics.json files, set datadog-site if you are not on US1, and set tunnel to true for private environments. The action waits for results and fails the job when a test fails.
Does Datadog detect flaky tests?
Yes, through Test Optimization. Once a test framework is instrumented, Datadog records each test’s history and flags tests that both pass and fail on the same code. Early Flake Detection retries new tests to catch flakiness before merge, and Auto Test Retries retries failures up to a set number of times. Both are opt-in, and the product is billed per committer.
Can Datadog synthetic tests reach a staging site behind a firewall?
Yes, in two ways. For tests triggered from CI, the Continuous Testing tunnel routes requests through the machine running datadog-ci or the GitHub Action, so it can reach whatever that runner can reach. For scheduled monitoring, a private location that you host runs the tests from inside your network.
Alternatives
Datadog alternatives worth weighing
Grafana
Open-source dashboards and alerting over many data sources, widely used to watch load tests live next to server and application metrics.
New Relic
Full-stack observability platform with APM, browser monitoring and synthetics.
Dynatrace
Enterprise observability with automatic instrumentation and AI-assisted root cause analysis.
Resources
Where to go next
Picking the wrong tool costs more than picking late.
QAble advises on toolchain decisions and then implements them, with engineers who have run these tools on real delivery. Start with a free QA audit.