With network availability monitors (NAM), you can check the availability of your hosts, devices, and services.
There are three types of NAM monitors: ICMP, TCP, and DNS. To learn more about them, see NAM types.
You can create NAM monitors in
Synthetic in latest Dynatrace or through API.
With NAM monitors, you can include more than one step.
For example, if you want to monitor a group of 4 hosts with an ICMP test, you want to apply the same conditions (such as frequency, location executing test, and number of packets) for each host from your group.
NAM offers you the possibility of addressing this in multiple ways:
You can define 4 separate tests, one per host. The benefit of this approach is that Dynatrace triggers a separate problem for each host and you can assign separate notifications for each one. You can also adjust test parameters for each host separately.
You can define a single test with 4 requests (within 1 step). The same ICMP checks are executed, but there will be differences in reporting and alerting. The number or percentage of hosts that are down is reported with the Requests Success rate metric. You can configure a customized threshold for failing the whole monitor. For example, if it's OK that 1 out of 4 hosts is down, because of rolling out an update, you can define it on the >=75% level. There's always a single problem generated for a monitor, yet still, it contains detailed info about hosts that don't respond. Another benefit of this approach is easier maintenance (adjusting single setting for all 4 hosts).
Finally, filters offer defining tests against dynamically changing structure, for example if you want to define ICMP tests against a given host group, you don't need to adjust the NAM monitor test after the host group configuration change.
You need to define constraints for each monitor. Constraints are conditions that need to be met to consider the monitor’s execution successful. It is obligatory to define the Success rate constraint. See step-level constraints to learn more.
To create a NAM monitor in latest Dynatrace
Synthetic and select Create monitor.The Create synthetic monitor page shows the types of synthetic monitor you can create.
Select Network monitor (NAM) to get started.
DNS, ICMP, or TCP.After you specify the general settings, select Continue.
The Requests section has two editing modes. You can switch back and forth between these modes.
Settings per request (you can add multiple requests) are:
You can provide targets for requests as an explicit list, or filter monitored hosts using a filter expression.
You can combine both the List of targets and the Filter expression in a single monitor step. When used together, the monitor step will include the combined set of targets from both fields.
If you want to create another request, select Add next request and specify the above for the next request.
Use Duplicate to duplicate a request and then edit it from that point instead of starting from scratch each time you add a request.
After you specify all requests, select Continue.
In the Frequency and locations section, specify the frequency and locations.
1 min, 2 min, 5 min, 10 min, 15 min, 30 min, or 1 h) or select On demand only for manual execution.After you specify the frequency and locations, select Continue.
In Outage handling, you can enable and configure the following settings related to problem and alert generation:
After you specify the outage and performance settings, select Continue.
In the Summary section, verify your settings.
After you review the summary, select Save to create your monitor or Back to go back and adjust your monitor settings.
Target filter gives an option to filter hosts monitored by Dynatrace or custom devices having IP addresses. With this filter, you can select those two types of targets based on:
type)tag)hostId) (deprecated, works for hosts only, use entity ID instead)entityId)hostGroup)managementZone)ipMask)ipRange)processGroupInstance)interfacesOf)extensionName)IP range and IP mask are filters for hosts or devices known for the Dynatrace server, not an option to scan the network.
AND and OR (case insensitive)== and !=!=.* (selects all hosts monitored by Dynatrace)tag == tagname or hostGroup == group1(tag == tagname1:tagvalue1 or tag == tagname1:tagvalue2) and (hostGroup == group1 or managementZone == zone1)tag != tagname1 and tag != tagname2:tagvaluetag == tagname:tagvalue and (managementZone == zone1 or managementZone == zone2)tag == "[tagwithbrackets and spaces]":"value, with, commas, and, spaces"ipMask == 127.0.0.1/24hostId == HOST-000123type == CUSTOM_DEVICE and ipMask == 172.17.0.2/24entityId == HOST-045BFCDA3F507D30 or entityId == CUSTOM_DEVICE-13081D4B74B3E2C8type == HOST and processGroupInstance == PROCESS_GROUP_INSTANCE-07611353BB98908Ctype == CUSTOM_DEVICE and interfacesOf == CUSTOM_DEVICE-E1A88946BF04D5E7type == CUSTOM_DEVICE and extensionName == "Docker devices"The performance threshold metric is compared to metric calculated for each request within monitor/step. For example, if TCP port check monitor, tests on the same host port 80 and 443 separately, Dynatrace compares threshold TCP connection establishment time twice, once for port 80 and once for port 443.
There are three performance metrics for three types of NAM monitors:
Violating defined performance triggers a Problem (Slowdown).
Similarly to availability problems:
You can configure the way Dynatrace aggregates results for each packet for ICMP requests with single execution. Dynatrace supports AVG, MAX and MIN with AVG as the default method.
You can define performance thresholds when configuring the request for your synthetic monitor. The defined performance threshold is the same for all requests within a single step. In cases, where there's a need to build a multi-step NAM monitor, it's possible to define various thresholds for each step.
To define thresholds
Follow the steps described in Create a NAM monitor section.
In the Requests step, scroll down the page and see Performance thresholds alerting section.
Select Generate a problem and send an alert on performance threshold violations. check box.
Turn on Advanced performance thresholds settings toggle.
In this section you can set the Number of request executions in analyzed sliding window and the Number of violating request executions in analyzed sliding window. For de-alerting samples we require n most recent non-violating request executions.
Red color annotation over performance charts indicates the period of time during which the performance threshold is raised. Additionally, a threshold is drawn on the performance chart, and you can examine which requests are above the threshold.
You may narrow down the time range only to that for which the problem was active using zoom functionality.
To manage your NAM monitors via REST API
Search for and select Dynatrace API.
In the Select a definition field, select Synthetic - Network availability monitors.
Authenticate with your API token.
For details, see Authentication.
Perform one of the following actions.
| To do this | Go to Synthetic - Network availability monitors and select this |
|---|---|
| Get all synthetic monitors | GET /synthetic/monitors |
| Create a synthetic monitor definition | POST /synthetic/monitors |
| Delete a synthetic monitor definition for the given monitor ID | DELETE /synthetic/monitors/{monitorId} |
| Get all synthetic monitor definition for the given monitor ID | GET /synthetic/monitors/{monitorId} |
| Update a synthetic monitor definition for the given monitor ID. | PUT /synthetic/monitors/{monitorId} |
See Synthetic monitors API v2 for more details.
Optional
Monitors consist of requests, always of the same type (ICMP, TCP, or DNS).
If you don't provide the value, defaults will apply.
PT0.1SPT0.5SPT1SPT10SPT1M30SPT1MPT2MPT5MThe packet transmission interval is hardcoded to 200ms, which corresponds to the minimum value allowed for the -i option of the Linux ping command without requiring elevated privileges.
Constraints are conditions that need to be met to consider monitor’s execution successful. You need to define constraints for each monitor.
SUCCESS_RATE_PERCENTRequired
This is an obligatory constraint for all monitors' request success rate. The default value is >=80%.
Percentage of successful requests in a step.
Actual success rate = ratio of the number of requests that didn't fail to all requests.
For example, if 1 request out of 6 has failed, the ratio is (6-1)/6 = 83.33%.
| Property | Type | Description | Value | Default value |
|---|---|---|---|---|
operator | string | Comparison operator to compare actual and expected value | >=, >, <=, <, =, or != | >= |
value | integer | Expected value of success rate to use for comparison | Range = 0–100 | 80 |
{"type": "SUCCESS_RATE_PERCENT","properties": {"value": "80","operator": ">"}}
For requests with only one target, we suggest setting the constraints values to 100.
ICMP_SUCCESS_RATE_PERCENTRequired
This is an obligatory constraint for ICMP monitors request success rate. The default value is >=80%.
Percentage of successful pings (echo requests) in a request.
Actual success rate = ratio of number of the packets received to number of packets sent.
For example, if 5 packets were sent and 4 packets were received, the ratio is 4/5 = 80.00%.
| Property | Type | Description | Value | Default value |
|---|---|---|---|---|
operator | string | Comparison operator to compare actual and expected value | >=, >, <=, <, =, or != | >= |
value | integer | Expected value of success rate to use for comparison | Range = 0–100 | 80 |
{"type": "ICMP_SUCCESS_RATE_PERCENT","properties": {"value": "80","operator": ">"}}
TCP_PORT_UNREACHABLEOptional
This is an optional constraint for TCP monitors. This is a special constraint that inverts the execution status for TCP requests. It should be applied if it's expected that the port being checked is unreachable.
This constraint has no configuration properties.
If this constraint is applied:
Execution timeout (12033) and TCP socket connection error (22000) statuses are detected after performing a connection attempt, they are interpreted as HEALTHY (0).HEALTHY (0) connection status is interpreted as CONSTRAINT_VIOLATED (1401) because we expected a failure.UNEXPECTED_ERROR (-1) and UNKNOWN_HOST (12013) statuses are preserved and reported as is.{"type": "TCP_PORT_UNREACHABLE","properties": {}}
DNS constraints are optional, but at least one must be defined to indicate what is a successful query.
DNS_STATUS_CODEDNS_STATUS_CODE by default is 1, having status code =0 is the simplest example of a successful query.
| Property | Type | Description | Value | Default value |
|---|---|---|---|---|
operator | string | Comparison operator to compare actual and expected value | = or != | = |
statusCode | integer | Numeric code indicating status of DNS response Exclusive with status | Valid code, for example, 0Range = 0–65535 | 0 |
status | string | Mnemonic representing DNS status code Exclusive with statusCode | Valid status, for example, NOERROR | NOERROR |
{"type": "DNS_STATUS_CODE","properties": {"operator": "=","statusCode": "0"}}
{"type": "DNS_STATUS_CODE","properties": {"operator": "=","status": "NOERROR"}}
DNS_IP_ADDRESSVerifies the IP address value returned in A/AAAA records.
| Property | Type | Description | Value | Default value |
|---|---|---|---|---|
quantifier | string | How many records must match the condition for the constraint to pass | any (at least one) or all | any |
operator | string | Comparison operator | =, != or in | = for an address, in for a subnet |
recordType | string | DNS record type | A or AAAA | A if address/subnet is IPv4AAAA if address/subnet is IPv6 |
address | string | IPv4 address in dot notation or IPv6 address in colon notation Only with the operators =, !=Exclusive with subnet | Valid address, for example, 192.168.0.1, 2001:db8::2:1 | |
subnet | string | IPv4 subnet in dot notation or IPv6 subnet in colon notation, followed by network prefix length Only with the operator inExclusive with address | Valid subnet, for example, 172.22.80.0/20, 2001:db8:85a3::0/48 |
{"type": "DNS_IP_ADDRESS","properties": {"quantifier": "any","recordType": "A","operator": "=","address": "54.208.9.71"}}
{"type": "DNS_IP_ADDRESS","properties": {"quantifier": "all","recordType": "A","operator": "in","subnet": "10.102.44.0/24"}}
DNS_RECORD_COUNTVerifies the count of records of a given type.
| Property | Type | Description | Value | Default value |
|---|---|---|---|---|
operator | string | Comparison operator | >=, >, <=, <, =, or != | > |
recordType | string | DNS record type | Valid record type, for example, MX | |
value | integer | Expected record count | Valid count, for example 2 Range = 0–65535 | 80 |
{"type": "DNS_RECORD_COUNT","properties": {"recordType": "A","operator": ">","value": "80"}}
DNS_TIME_TO_LIVEVerifies the time to live (TTL) of records of a given type.
| Property | Type | Description | Value | Default value |
|---|---|---|---|---|
quantifier | string | How many records must match the condition for the constraint to pass | any (at least one) or all | any |
operator | string | Comparison operator | >=, >, <=, <, =, or != | > |
recordType | string | DNS record type | Valid record type, for example, NS | |
value | integer | Expected TTL in seconds | Valid TTL, for example 3600 Range = 0–2147483647 | 80 |
{"type": "DNS_TIME_TO_LIVE","properties": {"quantifier": "any","recordType": "A","operator": ">=","value": "80"}}
DNS_RECORD_VALUEVerifies the raw value of records of a given type, with the value format depending on the record type.
Constraints process all records in a response, regardless of the section to which they belong (answer, authority, or additional).
| Property | Type | Description | Value | Default value |
|---|---|---|---|---|
quantifier | string | How many records must match the condition for the constraint to pass | any (at least one) or all | any |
operator | string | Comparison operator - contains checks if the record value contains a given sequence.- matches checks if record value matches a given pattern. | contains or matches | contains |
recordType | string | DNS record type | Valid record type, for example, TXT | |
sequence | string | Sequence of characters that the record value should contain Only with the operator containsExclusive with pattern | Non-empty sequence, for example, ms71815323 | |
pattern | string | Pattern to be matched against the record value, with * denoting 0 or more charactersOnly with the operator matchesExclusive with sequence | Non-empty pattern, for example, "v=spf1 include:* |
{"type": "DNS_RECORD_VALUE","properties": {"quantifier": "any","recordType": "TXT","operator": "contains","sequence": "ms71815323"}}
{"type": "DNS_RECORD_VALUE","properties": {"quantifier": "any","recordType": "TXT","operator": "matches","pattern": "\"v=spf1 include:*"}}
Synthetic Classic