Checkmk_icmp Jitter

I’ve been asked to add a jitter measurement to some remote endpoint devices we monitor for customers but don’t have local resources/nodes.

Looking for some advice on approaches. I would prefer to leverage existing items where possible with forward compatibility being desired.

Currently, we’re using CheckMK 2.3 CME edition but will be going to 2.4 next quarter (migrating some deprecated items first).

It looks like the native “Check hosts with PING (ICMP Echo Request)” AKA checkmk_icmp includes a jitter and MOS parameter that works but is not a configurable option in the weUI.

$ /opt/omd/versions/2.3.0p38.cme/lib/nagios/plugins/check_icmp --help
Copyright (c) 2005 Andreas Ericsson <ae@op5.se>
Copyright (c) 2005-2008 Monitoring Plugins Development Team
        <devel@monitoring-plugins.org>

Usage:
 check_icmp [options] [-H] host1 host2 hostN

Options:
 -J
    jitter mode  warning,critical, ex. 40.000ms,50.000ms , unit in ms
 -M
    MOS mode, between 0 and 4.4  warning,critical, ex. 3.5,3.0

Standard check (manual)

$ /opt/omd/versions/2.3.0p38.cme/lib/nagios/plugins/check_icmp -n 6 -t 20 -w 1500.00,80.00% -c 3000.00,100.00% 10.254.1.11
OK - 10.254.1.11 rta 3.640ms lost 0%|rta=3.640ms;1500.000;3000.000;0; rtmax=5.910ms;;;; rtmin=0.000ms;;;; pl=0%;80;100;0;100

Adding -J or -M works as long as you include -R otherwise it doesn’t include the RTA/min/max.

$ /opt/omd/versions/2.3.0p38.cme/lib/nagios/plugins/check_icmp -n 6 -t 20 -R 100ms,200ms -M 3.5,3.0 -w 1500.000,80% -c 3000.000,100% -J 40.000,50.000 10.254.1.1
OK - 10.254.1.1 rta 3.426ms jitter 0.983ms MOS 4.4|rta=3.426ms;1500.000;3000.000;0; rtmax=4.942ms;;;; rtmin=0.000ms;;;; jitter_avg=0.983ms;40.000;50.000;0; jitter_max=2.097ms;;;; jitter_min=0.147ms;;;; mos=4.4;3.5;3.0;0;5

I’ve tested several approaches including:

  • Quick and dirty use “Integrate Nagios plug-ins” and setup a service PING with the for the service name but this requires manual thresholds
    check_icmp -n 6 -t 20 -R 100ms,200ms -M 3.5,3.0 -w 1500.000,80% -c 3000.000,100% -J 40.000,50.000 $_HOSTADDRESS_4$
  • Extending the native check but don’t know how I would safely do this. Various attempts to ‘augment’ the UI options and server_side_calls with override files did not work as intended. Not even sure this is possible or recommended.
  • A custom agent along the lines of an alternate “Check hosts with PING plus jitter (ICMP Echo Request)” approach but I haven’t been able to get that working either.

Any thoughts or advice if someone has done something like this?

Sincerely,

Scotsie

Figured out a solution and it was easier than I expected. My earlier attempts were overthinking things and dealing with trying to generate 2 separate calls instead of adding the proper flags to a single check.

Built out a plugin folder using the newer plugin API(s) and copied over the existing icmp files for wato and the server_side_calls.

Modified them to add options for the Jitter and MOS flags to the existing check_icmp compiled nagios plugin that CheckMK uses.

Made the repo public in github and posting a mkp file. Might submit to the CheckMK Exchange for formal review but posting here in case anyone else is looking for something similar.

As always, feedback or advice is welcome.

Sincerely,

Scotsie

1 Like