Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 36 Next »

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. Checkin 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: Debug 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*";'


  • No labels