Try it free

NAM monitor metrics in Synthetic Monitoring

  • Latest Dynatrace
  • Reference

Metrics and dimensions

Dimensions (all network availability monitors)

NameTypeDescriptionExample value

dt.entity.host

string

If available, monitored entity ID for target

HOST-024C103F7F86A290

dt.entity.multiprotocol_monitor

string

Monitor ID (monitored entity ID)

MULTIPROTOCOL_MONITOR-3F6C9D500287BBAF

dt.entity.synthetic_location

string

Synthetic location ID (monitored entity ID)

SYNTHETIC_LOCATION-A4F834D72840EFC1

dt.maintenance_window_ids

array

UUIDs of maintenance windows

c715d677-eb1b-3e1b-8dbc-db06cad5b8eb

dt.security_context

string

The security context is used in access permissions to limit the visibility

mySecurityContext

dt.synthetic.monitor.id

string

Synthetic monitor ID

SYNTHETIC_TEST-1234567890ABCDEF

dt.synthetic.monitored_entity_ids

array

IDs of monitored entities

APPLICATION-EA7C4B59F27D43EB

dt.synthetic.step.id

string

Identifier of the step

SYNTHETIC_TEST_STEP-1234567890ABCDEF

interpolated

boolean

Information whether monitor availability was interpolated

false

monitor.name

string

Name of the monitor

My NAM monitor

primary_tags.__key__

string

User-defined primary Grail tags

tag-value

request.id

numeric

Request sequential ID

2

request.target_address

string

Address of target entity

54.171.216.19

request.type

string

Type of request

icmp, tcp

result.state

string

Result state of monitor execution

SUCCESS, FAIL

result.status.code

numeric

Numeric representation of the execution status

0, 1401

result.status.message

string

Execution status

HEALTHY, CONSTRAINT_VIOLATED

step.id

numeric

Step sequential ID

1

step.name

string

Name of the step

My step

step.sequence_number

numeric

Sequence number of the step (starting from 0)

0

Monitor metrics (all network availability monitors)

NameTypeDimensionsDescription

dt.synthetic.multi_protocol.availability (the latest Dynatrace)

builtin:synthetic.multiProtocol.availability (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

interpolated

Availability calculated based on the execution status of visits: 100% for code=0: HEALTHY, SCRIPT_FINISH, SKIPPED; 0% for error status codes such as 1401 - CONSTRAINT_VIOLATED

dt.synthetic.multi_protocol.execution_time (the latest Dynatrace)

builtin:synthetic.multiProtocol.executionTime (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

Duration between the start and end the time of visit execution (in milliseconds)Metric available only if visit execution took place; both start time and end time must be available.

dt.synthetic.multi_protocol.executions (the latest Dynatrace)

builtin:synthetic.multiProtocol.executions (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

dt.maintenance_window_ids

result.state

result.status.code

result.status.message

Number of monitor executions in time

dt.synthetic.multi_protocol.success_rate (the latest Dynatrace)

builtin:synthetic.multiProtocol.successRate (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

Ratio of executed steps that didn't fail (successes and skips) to all executed steps. We take into account steps that were actually executed rather than steps intended to be executed. For example, with 2 successful steps, 1 failed step, and 8 not started, the ratio is 2/3, or 66.67%.

Step metrics (all network availability monitors)

NameTypeDimensionsDescription

dt.synthetic.multi_protocol.step.availability (the latest Dynatrace)

builtin:synthetic.multiProtocol.step.availability (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.type

Availability calculated based on the execution status of steps:

  • 100% for code=0: HEALTHY, SCRIPT_FINISH, SKIPPED
  • 0% for error status codes such as 1401 - CONSTRAINT_VIOLATED

dt.synthetic.multi_protocol.step.execution_time (the latest Dynatrace)

builtin:synthetic.multiProtocol.step.executionTime (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.type

Duration between the start and the end time of step execution (in milliseconds). The metric is available only if the step execution took place, with a well-defined end time; therefore, it's not available for skipped steps.

dt.synthetic.multi_protocol.step.executions (the latest Dynatrace)

builtin:synthetic.multiProtocol.step.executions (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.type

result.state

result.status.code

result.status.message

Number of step executions in time

dt.synthetic.multi_protocol.step.success_rate (the latest Dynatrace)

builtin:synthetic.multiProtocol.step.successRate (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.type

Ratio of executed requests that didn't fail to all executed requests. If a step doesn't have executed requests (because nothing matches its definition in a monitor configuration), we return the value 100%.

For example, with 2 successful requests and 1 failed request, the ratio is 2/3, or 66.67%.

Request metrics (all network availability monitors)

NameTypeDimensionsDescription

dt.synthetic.multi_protocol.request.availability (the latest Dynatrace)

builtin:synthetic.multiProtocol.request.availability (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.host (only for monitors with filter defined)

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.id

request.target.address

request.type

Availability calculated based on the execution status of requests:

  • 100% for code=0: HEALTHY, SCRIPT_FINISH, SKIPPED
  • 0% for error status codes such as 1401 - CONSTRAINT_VIOLATED

dt.synthetic.multi_protocol.request.executions (the latest Dynatrace)

builtin:synthetic.multiProtocol.request.executions (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.host (only for monitors with filter defined)

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.id

request.target.address

request.type

result.state

result.status.code

result.status.message

Number of request executions in time

ICMP monitor metrics

NameTypeDimensionsDescription

dt.synthetic.multi_protocol.icmp.packets_received (the latest Dynatrace)

builtin:synthetic.multiProtocol.icmp.packetsReceived (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.host (only for monitors with filter defined)

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.id

request.target.address

request.type

Number of packets that were returned successfully

dt.synthetic.multi_protocol.icmp.packets_sent (the latest Dynatrace)

builtin:synthetic.multiProtocol.icmp.packetsSent (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.host (only for monitors with filter defined)

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.id

request.target.address

request.type

Total number of packets sent

dt.synthetic.multi_protocol.icmp.request_execution_time (the latest Dynatrace)

builtin:synthetic.multiProtocol.icmp.requestExecutionTime (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.host (only for monitors with filter defined)

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.id

request.target.address

request.type

Duration between the start and the end time of request handling (in milliseconds). This metric is always provided, even if actual request execution didn't occur (for example, because of exceptions or timeouts).

Diagnostic metric—allows validation of the external ping process execution time.

dt.synthetic.multi_protocol.icmp.round_trip_time (the latest Dynatrace)

builtin:synthetic.multiProtocol.icmp.roundTripTime (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.host (only for monitors with filter defined)

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.id

request.target.address

request.type

Round-Trip Time for received packets

dt.synthetic.multi_protocol.icmp.success_rate (the latest Dynatrace)

builtin:synthetic.multiProtocol.icmp.successRate (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.host (only for monitors with filter defined)

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.id

request.target.address

request.type

Ratio of received packets to sent packets. Doesn't take into account the configured number of packets to be sent.

For example, out of 10 packets to be sent, if 5 were sent and 4 were received, the ratio is 4/5, or 80.00%.

TCP monitor dimensions

NameTypeDescriptionExample value

request.tcp_port_number

string

TCP request port number, as provided in monitor configuration

665

TCP monitor metrics

NameTypeDimensionsDescription

dt.synthetic.multi_protocol.tcp.connection_time (the latest Dynatrace)

builtin:synthetic.multiProtocol.tcp.connectionTime (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.host (only for monitors with filter defined)

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.id

request.target.address

request.type

request.tcp_port_number

Duration between the start time (socket creation and connection) and the end time (when connection is successfully established) in milliseconds. The metric is available only if the request execution completed without exceptions or timeouts and has a well-defined end time.

DNS monitor dimensions

NameTypeDescriptionExample value

request.dns_record_type

string

DNS record type to be queried by request, as provided in configuration

A, AAAA, CNAME

DNS monitor metrics

NameTypeDimensionsDescription

dt.synthetic.multi_protocol.dns.resolution_time (the latest Dynatrace)

builtin:synthetic.multiProtocol.dns.resolutionTime (previous Dynatrace)

numeric

dt.synthetic.monitor.id

dt.entity.multiprotocol_monitor

monitor.name

dt.synthetic.step.id

step.name

step.sequence_number

dt.entity.synthetic_location

dt.entity.host (only for monitors with filter defined)

dt.synthetic.monitored_entity_ids

primary_tags.__key__

dt.security_context

step.id

request.id

request.target.address

request.type

request.dns_record_type

Duration between the start and the end time of the request to the DNS server, in milliseconds.

The metric is available only if the request execution took place (with no exceptions or timeouts), with a well-defined end time.

DQL queries to extract data

Use DQL queries to extract data with metrics and dimensions.

The following examples use Notebooks Notebooks to demonstrate how to work with the results of network availability monitors. They use result metrics as a starting point to explore possibilities of extracting and interpreting data with DQL.

Host entity status for ICMP requests

The monitor MULTIPROTOCOL_MONITOR-5C2F92334DF71A90 executes ICMP requests and filters monitored hosts with "targetFilter": "hostGroup == e2e-synthetic-private-location" (which resolves to about 26 hosts).

By using the dt.synthetic.multi_protocol.request.executions metric and splitting it by the dt.entity.host and result.status.message dimensions, we can display the status of the connection to a particular monitored host entity in this host group. Some hosts do not fulfill the expected success rate; instead of being HEALTHY, their requests are marked as CONSTRAINT_VIOLATED.

timeseries status = avg(dt.synthetic.multi_protocol.request.executions),
by:{dt.entity.host, result.status.message},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-5C2F92334DF71A90"
Host entity status for the ICMP requests
Host entity status for the ICMP requests

Number of ICMP packets sent and received

The monitor MULTIPROTOCOL_MONITOR-548C3CD54183CED9 executes ICMP requests to hosts with the explicitly defined IP addresses, 18.x.x.x, 10.x.x.x, and 34.x.x.x. Each of these IP addresses is mapped to a distinct host.

We use the sum of the dt.synthetic.multi_protocol.icmp.packets_sent and the sum of the dt.synthetic.multi_protocol.icmp.packets_received metrics to get insight into how many packets were sent and received.

We split results by the request.target_address dimension and filter data for 18.x.x.x and 10.x.x.x only.

For 18.x.x.x, the same number of packets were received as were sent, but for 10.x.x.x, all packets are lost and none were received.

timeseries {
packets_sent = sum(dt.synthetic.multi_protocol.icmp.packets_sent),
packets_received= sum(dt.synthetic.multi_protocol.icmp.packets_received)
},
by:{request.target_address},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-548C3CD54183CED9"
AND (
request.target_address == "18.x.x.x"
OR request.target_address == "10.x.x.x"
)
ICMP packets sent and received
ICMP packets sent and received

Target status for TCP requests

The monitor MULTIPROTOCOL_MONITOR-74E68F22FF5E9227 executes TCP requests to hosts from a host group that resolves to the IP addresses 18.x.x.x, 34.x.x.x, and 44.x.x.x.

To display the status of the TCP connection for an IP-port pair, we use the dt.synthetic.multi_protocol.request.executions metric and split it by the following dimensions:

  • request.target_address
  • request.tcp_port_number
  • result.status.message

In the following example:

  • Each host has the ports 22 (SSH) and 8080 (HTTP server) open, and each connection to the hosts on these ports succeeds with the HEALTHY status.
  • No service uses the standard HTTP port 80. Therefore, connections to all hosts on that port fail with the TCP socket connection error status.

Note that results of this query can be limited to just successful requests by filtering by the multi_protocol.result.status.code dimension (code == 0).

timeseries status = sum(dt.synthetic.multi_protocol.request.executions),
by: {request.target_address, request.tcp_port_number, result.status.message},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-74E68F22FF5E9227"
// and result.status.code == 0
Target status for TCP requests
Target status for TCP requests

TCP connection time to target port

The monitor MULTIPROTOCOL_MONITOR-74E68F22FF5E9227 executes TCP requests to hosts from a host group that resolves to the IP addresses 18.x.x.x, 34.x.x.x, and 44.x.x.x.

In the following example, we split the results by monitored host entity IDs.

To check typical time taken for a successful connection to the target port for a host, we use the average of the dt.synthetic.multi_protocol.tcp.connection_time metric split by the dimensions:

  • dt.entity.host
  • request.target_address
  • request.tcp_port_number

Only ports 22 (SSH) and 8080 (HTTP server) are open, and these are the only ports for which dt.synthetic.multi_protocol.tcp.connection_time is available. The hosts are effectively in different geographical locations (Ohio, Oregon, and North Virginia in the United States), so a difference in connection times is expected.

timeseries duration = avg(dt.synthetic.multi_protocol.tcp.connection_time),
by:{dt.entity.host, request.target_address, request.tcp_port_number},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-74E68F22FF5E9227"
TCP connection time to target port
TCP connection time to target port

Execution statuses

All network availability monitors

Code / messageExampleDescription

0 HEALTHY

-

All is well.

-1 UNEXPECTED_ERROR

Resource saturation

Unexpected problem that's usually related to monitor's execution components.

1401 CONSTRAINT_VIOLATED

-

Constraint conditions that were defined in monitor's configuration weren't met.

1604 VALIDATION_ERROR

-

Improper monitor configuration detected.

12013 UNKNOWN_HOST

Error in the hostname

IP address of the host cannot be determined. Possible causes:

  • Invalid hostname
  • DNS server unreachable
  • DNS cache issues
  • Firewall or proxy interference

12033 Execution timeout

Server operates slowly.

Timeout of request execution. Possible causes:

  • Network issues
  • Slow or unresponsive server or service
  • Connection blocked by firewall rules
  • Timeout is too small.

TCP monitor execution statuses

Code / messageExampleDescription

22000 TCP socket connection error

Service is not listening on a specified port.

This status means that the host was identified and available, but the TCP connection couldn't be established or was unexpectedly closed. An additional explanation for the exact exception is provided. The status is used if a java.net.SocketException is returned during the connection attempt. Possible causes:

  • Service is not listening on the specified port.
  • Service reached resource or connection limit.
  • Service became unavailable during the socket connection process.