Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Info

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

Status
colourGreen
titleLAST TESTED ON CHECKMK 2.3.0P1


Panel
borderColorblack
bgColor#f8f8f8
titleTable of Contents

Table of Contents

Debug the

...

Smart Ping in the cmc.log

  1. Increase the log to debug →
    • Smart
    ping
    • Ping

  2. Checkin Check in the cmc.log (as site user)

    Code Block
    languagebash
    themeRDark
    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 Smart Ping timeout, and the max check attempts of the host:

Please replace host_name = Myhost with the affected Checkmk Hosts

Code Block
languagebash
themeRDark
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 To use this command, you have to must create (as a site user) a file dump.py in ~/local/bin. The file should look like this: Debugging of smart ping

...

Smart Ping#thecontentof./dump.py

Code Block
languagebash
themeRDark
OMD[workshopmysite]:~/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

Code Block
languagebash
themeRDark
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-Prepending a timestamp to each line of output from a command

the content of ./dump.py

Code Block
languagepy
themeRDark
#!/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:

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


Filter by label (Content by label)
showLabelsfalse
max5
spacesKB
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel in ( "smart_ping" , "smartping" , "troubleshooting" ) and type = "page" and space = "KB"
labelssmart_ping smartping

...