Synthetic Monitoring & Continuous Testing Metrics

Overview

The following metrics are generated by Synthetic Monitoring tests and Continuous Testing settings.

Metrics starting with:

  • synthetics.test_runs come from all your Synthetic tests
  • datadog.estimated_usage.synthetics.* return relevant usage data from your Synthetic tests
  • synthetics.on_demand return relevant usage data for Continuous Testing

Metrics starting with:

General metrics

synthetics.test_runs
(count)
The number of Synthetic test runs.
Shown as run
synthetics.test_run_steps
(count)
The number of Synthetic test steps.
Shown as step
datadog.estimated_usage.synthetics.api_test_runs
(count)
Estimated usage for API tests.
Shown as run
datadog.estimated_usage.synthetics.browser_test_runs
(count)
Estimated usage for browser tests.
Shown as run

API tests

synthetics.api.response
(count)
The count of API responses we receive.
Shown as request

HTTP tests

synthetics.http.response.time
(gauge)
The overall time the request took to be processed.
Shown as millisecond
synthetics.http.response.size
(gauge)
The size of the response in bytes.
Shown as byte
synthetics.http.redirect.time
(gauge)
The time spent during redirections.
Shown as millisecond
synthetics.http.dns.time
(gauge)
The time spent resolving the DNS name of the last request.
Shown as millisecond
synthetics.http.connect.time
(gauge)
The time to establish the TCP connection to the server.
Shown as millisecond
synthetics.http.ssl.time
(gauge)
The duration of the TLS handshake. This metric does not appear if the last request is not over HTTPS.
Shown as millisecond
synthetics.http.send.time
(gauge)
The time to send the request.
Shown as millisecond
synthetics.http.firstbyte.time
(gauge)
The time spent waiting for the first byte of response to be received.
Shown as millisecond
synthetics.http.download.time
(gauge)
The time spent downloading the response.
Shown as millisecond
synthetics.http.response
(count)
The count of HTTP responses we receive.
Shown as request
synthetics.http.response.time.distrib
(gauge)
The overall time the request took to be processed.
Shown as millisecond
synthetics.http.firstbyte.time.distrib
(gauge)
The time spent waiting for the first byte of response to be received.
Shown as millisecond
synthetics.http.redirect.time.distrib
(gauge)
The time spent during redirections.
Shown as millisecond
synthetics.http.dns.time.distrib
(gauge)
The time spent resolving the DNS name of the last request.
Shown as millisecond
synthetics.http.connect.time.distrib
(gauge)
The time to establish the TCP connection to the server.
Shown as millisecond
synthetics.http.ssl.time.distrib
(gauge)
The duration of the TLS handshake. This metric does not appear if the last request is not over HTTPS.
Shown as millisecond
synthetics.http.download.time.distrib
(gauge)
The time spent downloading the response.
Shown as millisecond

SSL tests

synthetics.ssl.dns.time
(gauge)
The duration of the DNS lookup.
Shown as millisecond
synthetics.ssl.handshake.time
(gauge)
The duration of the TLS handshake.
Shown as millisecond
synthetics.ssl.response.time
(gauge)
The overall time the request took to be processed.
Shown as millisecond
synthetics.ssl.time_to_expiry
(gauge)
The remaining time before the SSL certificate expires.
Shown as minute
synthetics.ssl.response
(count)
The count of SSL responses we receive.
Shown as request
synthetics.ssl.response.time.distrib
(gauge)
The overall time the request took to be processed.
Shown as millisecond

DNS tests

synthetics.dns.response.time
(gauge)
The overall time the request took to be processed.
Shown as millisecond
synthetics.dns.response.time.distrib
(gauge)
The overall time the request took to be processed.
Shown as millisecond

WebSocket tests

synthetics.websocket.response.time
(gauge)
The overall time the websocket request took to be processed.
Shown as millisecond
synthetics.websocket.redirect.time
(gauge)
The time spent during redirections.
Shown as millisecond
synthetics.websocket.dns.time
(gauge)
The duration of the DNS lookup.
Shown as millisecond
synthetics.websocket.connect.time
(gauge)
The overall connection time for the websocket request.
Shown as millisecond
synthetics.websocket.ssl.time
(gauge)
The duration of the TLS handshake.
Shown as millisecond
synthetics.websocket.firstbyte.time
(gauge)
The time spent waiting for the first byte of response to be received.
Shown as millisecond
synthetics.websocket.download.time
(gauge)
The time spent downloading the response.
Shown as millisecond
synthetics.websocket.open.time
(gauge)
The overall time the websocket remained open.
Shown as millisecond
synthetics.websocket.receive.time
(gauge)
The overall time the websocket connection spent receiving data.
Shown as millisecond
synthetics.websocket.response.time.distrib
(gauge)
The overall time the websocket request took to be processed.
Shown as millisecond
synthetics.websocket.firstbyte.time.distrib
(gauge)
The time spent waiting for the first byte of response to be received.
Shown as millisecond

TCP tests

synthetics.tcp.response.time
(gauge)
The overall time the request took to be processed.
Shown as millisecond
synthetics.tcp.dns.time
(gauge)
The duration of the DNS lookup.
Shown as millisecond
synthetics.tcp.connect.time
(gauge)
The time to establish the TCP connection.
Shown as millisecond
synthetics.tcp.response.time.distrib
(gauge)
The overall time the request took to be processed.
Shown as millisecond

UDP tests

synthetics.udp.response.time
(gauge)
The overall time the UDP request took to be processed.
Shown as millisecond
synthetics.udp.dns.time
(gauge)
The duration of the DNS lookup.
Shown as millisecond
synthetics.udp.message.time
(gauge)
The overall time for a message to be received. This does not include DNS time.
Shown as millisecond
synthetics.udp.response.time.distrib
(gauge)
The overall time the UDP request took to be processed.
Shown as millisecond

ICMP tests

synthetics.icmp.hops
(gauge)
The number of hops associated with the traceroute execution.
Shown as hop
synthetics.icmp.packet_loss_percentage
(gauge)
The percentage of packet loss associated with the last ping.
Shown as percent
synthetics.icmp.latency_avg
(gauge)
The average latency across all pings.
Shown as millisecond
synthetics.icmp.latency_max
(gauge)
The maximum latency across all pings.
Shown as millisecond
synthetics.icmp.latency_min
(gauge)
The minimum latency across all pings.
Shown as millisecond
synthetics.icmp.latency_stddev
(gauge)
The standard deviation latency across all pings.
Shown as millisecond
synthetics.icmp.packets_received
(gauge)
The number of packets successfully received.
Shown as packet
synthetics.icmp.packets_sent
(gauge)
The number of packets sent.
Shown as packet

For more information on API test timings, read the guide on API Test Timings and Variations.

Multistep API tests

synthetics.multi.response.time
(gauge)
The overall time the multistep request took to be processed.
Shown as millisecond
synthetics.multi.response.time.distrib
(gauge)
The overall time the multistep request took to be processed.
Shown as millisecond

Browser tests

synthetics.browser.test_duration
(gauge)
The total time it took to execute the browser test.
Shown as millisecond
synthetics.browser.time_to_interactive
(gauge)
The time until a page can be interacted with. Calculated from the first page in a browser test.
Shown as millisecond
synthetics.browser.number_of_buckets
(count)
The number of buckets in a browser test. Every 25 steps in a browser test is a single bucket.
synthetics.browser.step.largest_contentful_paint
(gauge)
The Largest Contentful Paint (core web vital) in a browser test step.
Shown as millisecond
synthetics.browser.step.cumulative_layout_shift
(gauge)
The Cumulative Layout Shift (core web vital) in a browser test step.
synthetics.browser.step.duration
(gauge)
The total time it took to execute a browser test step.
Shown as millisecond
synthetics.browser.time_to_interactive.distrib
(gauge)
The time until a page can be interacted with. Calculated from the first page in a browser test.
Shown as millisecond
synthetics.browser.step.largest_contentful_paint.distrib
(gauge)
The Largest Contentful Paint (core web vital) in a browser test step.
Shown as millisecond
synthetics.browser.step.cumulative_layout_shift.distrib
(gauge)
The Cumulative Layout Shift (core web vital) in a browser test step.
synthetics.browser.test_duration.distrib
(gauge)
The total time it took to execute the browser test.
Shown as millisecond
synthetics.browser.step.duration.distrib
(gauge)
The total time it took to execute a browser test step.
Shown as millisecond

Private locations

synthetics.pl.worker.running
(gauge)
The number of worker containers available for a private location to run tests.
Shown as worker
synthetics.pl.worker.outdated
(gauge)
The number of worker containers running an old image version that can now be upgraded.
Shown as worker
synthetics.pl.worker.pulled_tests
(gauge)
The number of tests pulled by a worker container for a private location.
synthetics.pl.worker.remaining_slots
(gauge)
The available worker slots to run Synthetic tests. This value depends on the concurrency parameter of a private location.
synthetics.pl.worker.concurrency
(count)
The average worker concurrency value.

Continuous Testing

synthetics.on_demand.concurrency
(count)
The average parallelization for Continuous Testing.

For more information about parallelization, see Continuous Testing Settings.

Further Reading