HTTP monitor metrics in Synthetic on Grail

  • Latest Dynatrace
  • Reference

Metrics and dimensions

Monitor

Metric keyMetric nameMetric descriptionUnitDimensions
dt.synthetic.http.availabilityAvailability rate (by location) [HTTP monitor]The availability rate of HTTP monitors.%dt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context

interpolated
dt.synthetic.http.dnsDNS lookup time (by location) [HTTP monitor]The time taken to resolve the hostname for a target URL for the sum of all requests.msdt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.download_timeDownload time (by location) [HTTP monitor]The time taken to download the HTTP response for the sum of all steps.

This metric is not based on the metric in Synthetic Classic.
msdt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.durationDuration (by location) [HTTP monitor]The duration of the sum of all requests.msdt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.duration_thresholdDuration threshold [HTTP monitor]The performance threshold for the sum of all requests.msdt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.executionsExecution count (by status) [HTTP monitor]The number of monitor executions.

The maintenance_window dimension is available in Synthetic Classic only.
countdt.entity.http_check

dt.entity.synthetic_location

result.status.message

result.status.code

result.state

result.http_status.code

dt.maintenance_window_ids

dt.synthetic.monitored_entity_ids

dt.security_context

maintenance_window
dt.synthetic.http.response_sizeResponse size (by location) [HTTP monitor]The response size of the sum of all requests.Bydt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.tcp_connect_timeTCP connect time (by location) [HTTP monitor]The time taken to establish the TCP connection to the server (including SSL) for the sum of all requests.msdt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.time_to_first_byteTime to first byte (by location) [HTTP monitor]The time taken until the first byte of the response is received from the server, relevant application caches, or a local resource. Calculated for the sum of all steps.msdt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.tls_handshake_timeTLS handshake time (by location) [HTTP monitor]The time taken to complete the TLS handshake for the sum of all requests.msdt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.redirects_countRedirects count (by location) [HTTP monitor]The number of redirects for the sum of all requests.countdt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.redirects_timeRedirects Time (by location) [HTTP monitor]The time taken to complete the redirects for the sum of all requests.msdt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.waiting_timeWaiting time (by location)[HTTP monitor]The time taken for the server to respond with the first byte for the sum of all steps.

This metric is not based on the metric in Synthetic Classic.
msdt.entity.http_check

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context

Steps

Metric keyMetric nameMetric descriptionUnitDimensions
dt.synthetic.http.request.dnsDNS lookup time (by request, location) [HTTP monitor]The time taken to resolve the hostname for a target URL for individual HTTP requests.msdt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.request.download_timeDownload time (by step, location) [HTTP monitor]The time taken to resolve the hostname for a target URL for individual HTTP steps.

This metric is not based on the metric in Synthetic Classic.
msdt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.request.durationDuration (by request, location) [HTTP monitor]The duration of individual HTTP requests.msdt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.request.executionsExecution count (request) [HTTP monitor]The number of request executions.countdt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

result.status.message

result.status.code

result.state

result.http_status.code

dt.maintenance_window_ids

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.request.response_sizeResponse size (by request, location) [HTTP monitor]The response size of individual HTTP requests.Bydt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.request.tcp_connect_timeTCP connect time (by request, location) [HTTP monitor]The time taken to establish the TCP connection to the server (including SSL) for individual HTTP requests.msdt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.request.time_to_first_byteTime to first byte (by request, location) [HTTP monitor]The time taken until the first byte of the response is received from the server, relevant application caches, or a local resource. Calculated for individual HTTP requests.msdt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.request.tls_handshake_timeTLS handshake time (by request, location) [HTTP monitor]The time taken to complete the TLS handshake for individual HTTP requests.msdt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.request.redirects_countRedirects count (request) [HTTP monitor]The number of redirects.countdt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.request.redirects_timeRedirects Time (request) [HTTP monitor]The time taken to complete the redirects.msdt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context
dt.synthetic.http.request.waiting_timeWaiting time (step) (by location) [HTTP monitor]The time taken for the server to respond with the first byte.

This metric is not based on the metric in Synthetic Classic.
msdt.entity.http_check

dt.entity.http_check_step

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

dt.security_context

Deprecated

Metric keyMetric nameMetric descriptionUnitDimensions
dt.synthetic.http.availability.excluding_maintenance_windowsAvailability rate excluding maintenance windows (by location) [HTTP monitor]The availability rate of HTTP monitors excluding maintenance windows.

The metric doesn't exist in the latest Dynatrace.
%dt.entity.http_check

dt.entity.synthetic_location

Use cases

The following use cases show how you can use the metrics in your DQL queries.

Track monitor availability

Suppose you need to identify monitors that have availability issues.

The following query uses the dt.synthetic.http.availability metric and the dt.entity.http_check dimension to return the monitors sorted by their availability, with the least available monitors listed first.

timeseries {
availability_series = avg(dt.synthetic.http.availability) },
by:{ dt.entity.http_check }
| fieldsAdd monitor_name = entityName(dt.entity.http_check)
| summarize { monitor_name = takeFirst(monitor_name),
availability = avg(arrayAvg(availability_series)) },
by: {dt.entity.http_check}
| sort availability asc

The raw response looks like this:

{
"records": [
{
"dt.entity.http_check": "HTTP_CHECK-D1DF6416D98DF200",
"monitor_name": "HTTP monitor",
"availability": 0
},
{
"dt.entity.http_check": "HTTP_CHECK-DD85DA9C14659614",
"monitor_name": "HTTP monitor2",
"availability": 31.746031746031743
},
{
"dt.entity.http_check": "HTTP_CHECK-ADA43EC2FFF9115D",
"monitor_name": "HTTP monitor3",
"availability": 46.03174603174603
},
{
"dt.entity.http_check": "HTTP_CHECK-0135CB5835BEAEA8",
"monitor_name": "HTTP monitor4",
"availability": 100
},

Identify the most problematic locations

Suppose you need to identify the locations with the lowest availability and the slowest average response time for HTTP requests.

The following query uses the dt.synthetic.http.request.duration and dt.synthetic.http.availability metrics and the dt.entity.synthetic_location dimension.

timeseries {
availability_series = avg(dt.synthetic.http.availability),
performance_series = avg(dt.synthetic.http.request.duration) },
by:{ dt.entity.synthetic_location }
| fieldsAdd location_name = entityName(dt.entity.synthetic_location)
| summarize { location_name = takeFirst(location_name),
availability = avg(arrayAvg((availability_series))),
request_duration = avg(arrayAvg(performance_series))},
by: {dt.entity.synthetic_location}
| sort availability asc, request_duration desc

The raw response looks like this:

{
{
"records": [
{
"dt.entity.synthetic_location": "SYNTHETIC_LOCATION-00000000000003B3",
"location_name": "Las Vegas",
"availability": 23.809523809523807,
"request_duration": 2662.3457875457875
},
{
"dt.entity.synthetic_location": "SYNTHETIC_LOCATION-0000000000000004",
"location_name": "Amazon US East (N. Virginia)",
"availability": 60.714285714285715,
"request_duration": 1297.4880952380952
},
{
"dt.entity.synthetic_location": "SYNTHETIC_LOCATION-2D4A33F9E13D70E7",
"location_name": "Oslo",
"availability": 66.66666666666667,
"request_duration": 1114.1904761904761
},
{
"dt.entity.synthetic_location": "SYNTHETIC_LOCATION-0000000000000064",
"location_name": "Gdańsk",
"availability": 70,
"request_duration": 294.2772881374772
},
{
"dt.entity.synthetic_location": "SYNTHETIC_LOCATION-9FFF47C604374908",
"location_name": "Dublin",
"availability": 72.06349206349208,
"request_duration": 1146.2952380952381
},

Identify status codes retrieved during test executions

Suppose you need to identify the error status codes (>= 400) retrieved during test executions.

The following query uses the dt.synthetic.http.executions metric and the result.http_status.code dimension.

timeseries {
execution_series = sum(dt.synthetic.http.executions)
}, by:{ result.http_status.code }
| filter result.http_status.code >= 400
| summarize { executions = sum(execution_series[]),
status.code = toString(takeFirst(result.http_status.code)) },
by: { timeframe, interval, result.http_status.code}

The visualized response looks like this:

(Cut) Metrics_Error codes for HTTP monitors

Related tags
Digital Experience