> ## Documentation Index
> Fetch the complete documentation index at: https://www.checklyhq.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ICMP Monitor Configuration

> Configure your ICMP monitor to verify host reachability and measure network latency.

### Basic Setup

Configure your ICMP monitor by specifying the target host:

![ICMP monitor request configuration options showing target host and ping count](https://mintcdn.com/checkly-422f444a/KivkdNKXvH3haof5/images/icmp_monitor_request_configuration.png?fit=max\&auto=format\&n=KivkdNKXvH3haof5\&q=85\&s=ce568832a4000338cc0f1f3ce22be0ac)

* **Hostname or IP address:** The server you want to monitor (e.g. `db.example.com` or `203.0.113.1`)
* **IP family:** Choose between IPv4 (default) or IPv6
* **Pings per run:** Number of ICMP Echo Request packets to send per check run (1-50, default: 10)

### Packet Loss Limits

Define packet loss thresholds to determine when an ICMP monitor should be considered degraded or failed:

![ICMP monitor packet loss limits interface](https://mintcdn.com/checkly-422f444a/KivkdNKXvH3haof5/images/icmp-packet-loss-threshold.png?fit=max\&auto=format\&n=KivkdNKXvH3haof5\&q=85\&s=093dc24f7e4d6012482447554f1a1bd5)

### Assertions

Use assertions to validate ICMP results and make sure your host meets availability and performance expectations.

![ICMP monitor assertion example for latency and JSON response](https://mintcdn.com/checkly-422f444a/KivkdNKXvH3haof5/images/icmp_monitor_assertion_example.png?fit=max\&auto=format\&n=KivkdNKXvH3haof5\&q=85\&s=9a3e42ea5c763ec1cfef1fb08f506d2e)

You can create assertions based on:

* **Latency metrics:** ICMP monitors send 10 pings per run by default and measure round-trip time (RTT) for every received packet. You can validate the resulting `min`, `max`, `avg`, or `stddev` latency values.
* **JSON response:** Assert against the JSON response structure. This allows you to target specific fields using JSON path assertions. For example:

  * `$.latency.max` → catch latency spikes
  * `$.packetsReceived` → detect dropped ping responses
  * `$.dnsResolutionTime` → separate DNS issues from ICMP latency
  * `$.pingResults[*].ttl` → check TTL values

  Learn more about JSON path assertions: [JSON responses with JSON path](https://www.checklyhq.com/docs/detect/assertions.md#json-responses-with-json-path).

### JSON Response Schema

The ICMP response is parsed into a structured JSON format. All responses share a common structure:

```json theme={null}
{
  "hostname": "46.225.5.223", // Target hostname or IP provided in the monitor
  "resolvedIp": "46.225.5.223", // Final IP address used for the ping
  "ipFamily": "IPv4", // IP version (IPv4 or IPv6)
  "pingCount": 10, // Number of ICMP Echo Requests to sent
  "packetsSent": 10, // Number of packets transmitted
  "packetsReceived": 9, // Number of packets received
  "packetSize": 64, // ICMP payload size in bytes
  "packetLoss": 10, // Packet loss percentage
  "latency": {
    "avg": 104.67472366666668, // Average round-trip time of all ICMP Echo Requests in milliseconds
    "min": 104.024927, // Minimum RTT in milliseconds
    "max": 105.107583, // Maximum RTT in milliseconds
    "stdDev": 0.3808160582180707 // Standard deviation of RTT in milliseconds
  },
  "pingResults": [
    {
      "sequence": 0, // ICMP sequence number
      "type": 0, // ICMP type (0 = Echo Reply)
      "code": 0, // ICMP code (usually 0 for Echo Reply)
      "success": true, // Whether this ping received a valid reply
      "rtt": 104.917277, // Round-trip time for this packet in milliseconds
      "ttl": 53  // Time To Live value from the reply
    }
    // ... one entry per ping attempt
  ]
}
```

### Frequency

Set how often the monitor runs (every 10 seconds to 24 hours):

![ICMP monitor frequency selection interface](https://mintcdn.com/checkly-422f444a/Y_M8E0tne2AGh-nm/images/dns-monitors/frequency.png?fit=max\&auto=format\&n=Y_M8E0tne2AGh-nm\&q=85\&s=56d58e1ab43d72502fd32e7678bf222d)

### Scheduling & Locations

![ICMP monitor scheduling strategy and location selection interface](https://mintcdn.com/checkly-422f444a/Y_M8E0tne2AGh-nm/images/dns-monitors/scheduling.png?fit=max\&auto=format\&n=Y_M8E0tne2AGh-nm\&q=85\&s=8c6c65eb252f9602c0ab5f8ba3eeabdd)

* **Strategy:** Choose between round-robin or parallel execution. Learn more about [scheduling strategies](https://www.checklyhq.com/docs/concepts/scheduling.md)
* **Locations:** Select [public](https://www.checklyhq.com/docs/concepts/locations.md#public-locations) or [private](https://www.checklyhq.com/docs/platform/private-locations/overview.md) locations to run the monitor from

### Additional Settings

* **Name:** Give your monitor a clear name to identify it in dashboards and alerts
* **Description:** Add context about what this monitor does and why it matters. Supports markdown, max 500 characters. When a failure occurs, [Rocky AI](https://www.checklyhq.com/docs/ai/rocky-ai.md) uses the description to provide more accurate [root cause and user impact analysis](https://www.checklyhq.com/docs/resolve/ai-root-cause-analysis/overview.md)
* **Tags:** Use tags to organize monitors across [dashboards](https://www.checklyhq.com/docs/communicate/dashboards/overview.md) and [maintenance windows](https://www.checklyhq.com/docs/communicate/maintenance-windows/overview.md)
* **Retries:** Define how failed runs should be retried. See [retry strategies](https://www.checklyhq.com/docs/communicate/alerts/retries.md)
* **Alerting:** Configure your [alert settings](https://www.checklyhq.com/docs/communicate/alerts/configuration.md), [alert channels](https://www.checklyhq.com/docs/communicate/alerts/channels.md), or set up [webhooks](https://www.checklyhq.com/docs/integrations/alerts/webhooks.md) for custom integrations


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.