Skip to end of metadata
Go to start of metadata


Debug the smart ping in the cmc.log

  1. Increase the log to debug
    1. How to collect troubleshooting data for various issue types#Core → Smart ping
  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

For using this command, you have to create (as site user) a file dump.py in ~/local/bin. The file should look like this: thecontentof./dump.py

OMD[workshop]:~/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

 ~/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 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*";'