Debug Smart Ping

This article details how to debug and troubleshoot the Smart Ping feature within Checkmk.

LAST TESTED ON CHECKMK 2.2.0P1

Table of Contents

Debug the Smart Ping in the cmc.log

  1. Increase the log to debug
  2. Check in the cmc.log (as site user)

    grep -e <IP> -e <HOSTNAME> ~/var/log/cmc.log | grep -e "smartping timeout" -e "received p"


Livestatus query

With this command, you can check the check interval, retry interval, Smart Ping timeout, and the max check attempts of the host:

Please replace host_name = Myhost with the affected Checkmk Hosts

OMD[mysite]:~$ lq "GET hosts\nColumns: host_name check_interval retry_interval smartping_timeout max_check_attempts state state_type\nFilter: host_name = <Myhost>"


Debugging the Smart Ping via cli

To use this command, you must create (as a site user) a file dump.py in ~/local/bin. The file should look like this: Debugging of Smart Ping#thecontentof./dump.py

OMD[mysite]:~/local/bin$ ~/lib/cmc/icmpreceiver |python3 ~/local/bin/dump.py |grep --line-buffered  "127.0.0.1" |perl -pe 'use POSIX strftime; print strftime "[%Y-%m-%d %H:%M:%S] ", localtime'

or you can use the command with the dump.py

OMD[mysite]:~$ ~/lib/cmc/icmpreceiver |python3 /local/bin/dump.py |grep --line-buffered  "127.0.0.1" |ts -i



If Perl is not possible, you will find it here: https://unix.stackexchange.com/questions/26728/prepending-a-timestamp-to-each-line-of-output-from-a-command

the content of ./dump.py

#!/usr/bin/env python3

import ipaddress
import sys

def main() -> None:
    while True:
        addr = ipaddress.ip_address(sys.stdin.buffer.read(4))
        sys.stdout.write(f"{addr!s}\n")
        sys.stdout.flush()

if __name__ == "__main__":
    main()           


You can use this online instead of the ./dump.py:

 ~/lib/cmc/icmpreceiver | perl -ne 'map { CORE::say join "." => unpack "CCCC", pack "L", $_ } unpack "L*";'