Skip to content

icmp_check — multi-target ping

Free tier. Pings a list of targets every cycle and reports reachability, packet loss and round-trip-time statistics per target. This is the agent's equivalent of the classic PRTG ping sensor, multi-target in a single probe instance.

Quick start

# probes.d/20-ping.yaml
- name: ping-core
  type: icmp_check
  params:
    targets: ["10.0.0.1", "core-switch.lan", "8.8.8.8"]
    interval: 60

Parameters

Parameter Must set Default Description
targets Yes - Hostnames or addresses to ping. Example: 10.0.0.1, gw.example.com
count No 4 Echo requests per target per cycle
timeout No 5 Budget in seconds for the whole round on one target
interval No 60 Seconds between cycles
packet_size No 56 ICMP payload size in bytes
privileged No - Raw ICMP sockets (true) or datagram sockets (false); default true on Windows and as root on Linux

Targets are pinged in parallel (bounded), so a large list does not stretch the cycle by the sum of timeouts.

Metrics

One series per metric per target (the target tag discriminates; the resolved ip rides along).

Metric Unit Description
senhub.icmp.up bool 1 when at least one reply came back this cycle
senhub.icmp.packet_loss % Lost echo requests over the cycle
senhub.icmp.packets.sent / .received count Requests/replies this cycle
senhub.icmp.rtt.min / .avg / .max / .stddev ms Round-trip statistics (emitted only when at least one reply arrived)

An unreachable target is a measurement (up = 0, loss 100%), not a probe failure: the probe stays healthy and keeps reporting.

Privileges

  • Linux: running as root (the current agent requirement), the probe defaults to privileged raw sockets — unprivileged ICMP datagram sockets are gated by net.ipv4.ping_group_range, which stock Ubuntu/Debian servers ship disabled, and root does not bypass that sysctl. As a non-root process the default is unprivileged: if pings fail with a permission error, widen the range to include the agent's group or set privileged: true (requires CAP_NET_RAW). The permission error now carries this hint in the log.
  • Windows: raw sockets only — the probe defaults to privileged: true and the agent service runs elevated.
  • macOS: unprivileged mode works out of the box.

Metric reference

Every metric this probe can emit. Metric is the OpenTelemetry name the OTLP, Prometheus and Zabbix outputs derive theirs from. Name is what a Nagios check and the API metrics= filter match. PRTG channel is the label PRTG shows, placeholders filled from the series' tags.

Metric Name PRTG channel Unit Description
senhub.icmp.up senhub.icmp.up Ping {target} Reachability # 1 when the target answered at least one echo request in the last cycle, 0 otherwise
senhub.icmp.packet_loss senhub.icmp.packet_loss Ping {target} Packet Loss % Percentage of echo requests without a reply in the last cycle
senhub.icmp.packets.sent senhub.icmp.packets.sent Ping {target} Packets Sent # Echo requests sent in the last cycle
senhub.icmp.packets.received senhub.icmp.packets.received Ping {target} Packets Received # Echo replies received in the last cycle
senhub.icmp.rtt.min senhub.icmp.rtt.min Ping {target} RTT Min ms Minimum round-trip time over the last cycle
senhub.icmp.rtt.avg senhub.icmp.rtt.avg Ping {target} RTT Avg ms Average round-trip time over the last cycle
senhub.icmp.rtt.max senhub.icmp.rtt.max Ping {target} RTT Max ms Maximum round-trip time over the last cycle
senhub.icmp.rtt.stddev senhub.icmp.rtt.stddev Ping {target} RTT StdDev ms Round-trip time standard deviation (jitter proxy) over the last cycle