> ## Documentation Index
> Fetch the complete documentation index at: https://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:

<Frame>
  <img src="https://mintcdn.com/checkly-422f444a/KivkdNKXvH3haof5/images/icmp_monitor_request_configuration.png?fit=max&auto=format&n=KivkdNKXvH3haof5&q=85&s=ce568832a4000338cc0f1f3ce22be0ac" alt="ICMP monitor request configuration options showing target host and ping count" width="2648" height="454" data-path="images/icmp_monitor_request_configuration.png" />
</Frame>

* **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:

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/checkly-422f444a/KivkdNKXvH3haof5/images/icmp-packet-loss-threshold.png?fit=max&auto=format&n=KivkdNKXvH3haof5&q=85&s=093dc24f7e4d6012482447554f1a1bd5" alt="ICMP monitor packet loss limits interface" width="2580" height="506" data-path="images/icmp-packet-loss-threshold.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/checkly-422f444a/KivkdNKXvH3haof5/images/icmp-packet-loss-threshold-dark.png?fit=max&auto=format&n=KivkdNKXvH3haof5&q=85&s=61ee7d30e89a13384919016d6b1a8c87" alt="ICMP monitor packet loss limits interface" width="2544" height="512" data-path="images/icmp-packet-loss-threshold-dark.png" />
</Frame>

### Assertions

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

<Frame>
  <img src="https://mintcdn.com/checkly-422f444a/KivkdNKXvH3haof5/images/icmp_monitor_assertion_example.png?fit=max&auto=format&n=KivkdNKXvH3haof5&q=85&s=9a3e42ea5c763ec1cfef1fb08f506d2e" alt="ICMP monitor assertion example for latency and JSON response" width="2610" height="390" data-path="images/icmp_monitor_assertion_example.png" />
</Frame>

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](/detect/assertions/#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):

<Frame>
  <img className="block dark:hidden" src="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" alt="ICMP monitor frequency selection interface" width="2848" height="478" data-path="images/dns-monitors/frequency.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/checkly-422f444a/Y_M8E0tne2AGh-nm/images/dns-monitors/frequency-dark.png?fit=max&auto=format&n=Y_M8E0tne2AGh-nm&q=85&s=070450751ac17db8bf65a85c4ccb6f18" alt="ICMP monitor frequency selection interface" width="2878" height="478" data-path="images/dns-monitors/frequency-dark.png" />
</Frame>

### Scheduling & Locations

<Frame>
  <img className="block dark:hidden" src="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" alt="ICMP monitor scheduling strategy and location selection interface" width="2848" height="2026" data-path="images/dns-monitors/scheduling.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/checkly-422f444a/Y_M8E0tne2AGh-nm/images/dns-monitors/scheduling-dark.png?fit=max&auto=format&n=Y_M8E0tne2AGh-nm&q=85&s=a0c728231628204f092e4fbe4f85ff08" alt="ICMP monitor scheduling strategy and location selection interface" width="2848" height="2026" data-path="images/dns-monitors/scheduling-dark.png" />
</Frame>

* **Strategy:** Choose between round-robin or parallel execution. Learn more about [scheduling strategies](/concepts/scheduling)
* **Locations:** Select [public](/concepts/locations/#public-locations) or [private](/platform/private-locations/overview) 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](/ai/rocky-ai) uses the description to provide more accurate [root cause and user impact analysis](/resolve/ai-root-cause-analysis/overview)
* **Tags:** Use tags to organize monitors across [dashboards](/communicate/dashboards/overview/) and [maintenance windows](/communicate/maintenance-windows/overview)
* **Retries:** Define how failed runs should be retried. See [retry strategies](/communicate/alerts/retries)
* **Alerting:** Configure your [alert settings](/communicate/alerts/configuration), [alert channels](/communicate/alerts/channels), or set up [webhooks](/integrations/alerts/webhooks) for custom integrations
