PING (check_icmp): rtmin is always zero

CMK version: 2.3p20 - 2.3p25
OS version: RHEL 8.8, Rocky 9.5

After the upgrade to 2.3p20 - 23p25 the rtmin of PING (check_icmp) is always zero:
image

I found out that there might be a problem with /lib/nagios/plugins/check_icmp plugin. After I copied the “check_icmp” from the older version 2.3p12 the result of rttmin is then again available.

I checked the output of the check_icmp output and I see that:
Vesrion 2.3p20-25:

 lib/nagios/plugins/check_icmp -H google.de -w 200,80% -c300,90%
OK - google.de rta 14.886ms lost 0%|rta=14.886ms;200.000;300.000;0; rtmax=14.994ms;;;; rtmin=0.000ms;;;; pl=0%;80;90;0;100

Version 2.3p12:

/lib/nagios/plugins/check_icmp -H server22 -w 100,80% -c200,100% -p 4 -4
OK - srv701: rta 0.835ms, lost 0%|rta=0.835ms;100.000;200.000;0; pl=0%;80;100;; rtmax=0.861ms;;;; rtmin=0.796ms;;;;

Also the graph is now OK:

Does anyone see a similar issue?

1 Like

Hi,

i have the same issue running CMK Raw 2.3.0p25 under Ubuntu 24.04.1 LTS. Looked through the changelog, but didn’t notice anything that would mention a change in the icmp plugin.

Let me know if there is any update / fix on this topic

1 Like

Since 2.3.0p19 the monitoring-plugins package (from where check_icmp is) was updated to the version 2.4.0.
On github you see some changes to the check_icmp after the release of 2.4.0.

One with rtmin in the description.

There was also an issue with your problem.

It is solved but no new release.

3 Likes

Sorry for answering to this old topic but I have the exact same problem.

Today I updated Debian from 12 to 13 and checkmk RAW from 2.2.0p46.cre to 2.3.0p41.cre and than to 2.4.0p18.cre

Now all my rtmin values are zero :frowning: With the old check_icmp file from version 2.2 the check does not work.

When the problem was solved in november 2024 why is there no new release?

Can I get a new check_icmp file and replace it on my server or what is the workaround?

The value is important for a lot of our hosts. How can I fix this problem?

At the moment there is only a 3.0.0-rc1 release candidate available on the monitoring plugins github page. You can download and compile the plugins on your system to test if the problem is gone then. The fix for the check_icmp is included in the changelog.

1 Like

Thanks, I will try that. I only compiled a little hello-world c code so far and Im not sure if I go the right way here… This is the way I know but not the right one:

I downloaded the file from here:

https://www.monitoring-plugins.org/download/monitoring-plugins-3.0.0-rc1.tar.gz

Than I found this tutorial

To compile version 2.x of the plugins, you run:

$ gzip -dc monitoring-plugins-2.x.tar.gz | tar -xf -
$ cd monitoring-plugins-2.x
$ ./configure
$ make

But I dont know what now to do.

All screenshots are done on my test machine.

But I’m way more wondering about the problem itself. Occurs this problem only for a very few people or is this the expected and accepted bahavior?

Hi @albzundy

Typically, to compile “whatever” one uses the “rule of three”, i.e.:

  1. ./configure
  2. make
  3. make install

For Ubuntu/Debian systems one typically installs the package build-essential to
have all basic required tools for software development. Your screenshot above,
shows that your system is missing libtool. Try to install it either separately or via
build-essential and retry.

Side note (please don’t shoot me):

You mean “then” you found the tutorial… :slight_smile:

Happy New Year!
Thomas

1 Like

Happy new year!

thank you very much! Sorry for misspelling than/then, I was in a hurry.

I installed the build-essentials but didn’t recognised that I need also libtool.

Next try

…. a lot of lines later

and again a lot of lines later

ntp peer certificate problem … I only want check_icmp so I don’t care about that. Or should I?

But where can I find the compiled check_icmp file? Or is the compilation process failed?

When I try “make install” I get an error, too.

root@debian:~/monitoring-plugins-3.0.0-rc1# make install
Making install in gl
make[1]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/gl“ wird betreten
make  install-recursive
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/gl“ wird betreten
make[3]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/gl“ wird betreten
make[4]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/gl“ wird betreten
make[4]: Für das Ziel „install-exec-am“ ist nichts zu tun.
make[4]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/gl“ wird verlassen
make[3]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/gl“ wird verlassen
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/gl“ wird verlassen
make[1]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/gl“ wird verlassen
Making install in tap
make[1]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/tap“ wird betreten
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/tap“ wird betreten
make[2]: Für das Ziel „install-exec-am“ ist nichts zu tun.
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/tap“ wird verlassen
make[1]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/tap“ wird verlassen
Making install in lib
make[1]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/lib“ wird betreten
Making install in .
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/lib“ wird betreten
make[3]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/lib“ wird betreten
make[3]: Für das Ziel „install-exec-am“ ist nichts zu tun.
make[3]: Für das Ziel „install-data-am“ ist nichts zu tun.
make[3]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/lib“ wird verlassen
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/lib“ wird verlassen
Making install in tests
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/lib/tests“ wird betreten
make[3]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/lib/tests“ wird betreten
make[3]: Für das Ziel „install-exec-am“ ist nichts zu tun.
make[3]: Für das Ziel „install-data-am“ ist nichts zu tun.
make[3]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/lib/tests“ wird verlassen
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/lib/tests“ wird verlassen
make[1]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/lib“ wird verlassen
Making install in plugins
make[1]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/plugins“ wird betreten
Making install in picohttpparser
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/plugins/picohttpparser“ wird betreten
make[3]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/plugins/picohttpparser“ wird betreten
make[3]: Für das Ziel „install-exec-am“ ist nichts zu tun.
make[3]: Für das Ziel „install-data-am“ ist nichts zu tun.
make[3]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/plugins/picohttpparser“ wird verlassen
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/plugins/picohttpparser“ wird verlassen
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/plugins“ wird betreten
  CC       check_ntp_peer.o
check_ntp_peer.c:44:10: fatal error: openssl/x509.h: Datei oder Verzeichnis nicht gefunden
   44 | #include <openssl/x509.h>
      |          ^~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [Makefile:2867: check_ntp_peer.o] Fehler 1
make[2]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/plugins“ wird verlassen
make[1]: *** [Makefile:2988: install-recursive] Fehler 1
make[1]: Verzeichnis „/root/monitoring-plugins-3.0.0-rc1/plugins“ wird verlassen
make: *** [Makefile:1955: install-recursive] Fehler 1
root@debian:~/monitoring-plugins-3.0.0-rc1# find -name "check_icmp*"
./plugins-root/check_icmp.c
./plugins-root/.deps/check_icmp.Po
./plugins-root/check_icmp.d
./plugins-root/check_icmp.d/.deps/check_icmp_helpers.Po
./plugins-root/check_icmp.d/check_icmp_helpers.c
./plugins-root/check_icmp.d/check_icmp_helpers.h
./plugins-root/t/check_icmp.t
root@debian:~/monitoring-plugins-3.0.0-rc1# check_icmp
-bash: check_icmp: Kommando nicht gefunden.
root@debian:~/monitoring-plugins-3.0.0-rc1#

Is there any checkMK (RAW?) user who fixed the rtmin problem and can provide me a check_icmp file? Or does everybody work with this deficiency?

Hi @albzundy

Looks like your missing some headers to successfully compile the code.
Try installing the SSL headers and retry ./configure, make and make install.
I believe the package in Debian is called libssl-dev but I’m not sure.

HTH,
Thomas

EDIT: I downloaded the tarball myself and successfully compiled it. I had to
install libssl-dev and libsnmp-dev to get rid of make errors. check_icmp
“lands” in plugins-root when it’s done. I’ll attach it here, but not sure
if it’ll work on your system:

check_icmp.zip.txt (189.7 KB)

You need to rename this to check_icmp.zip and then extract it.

HTH,
Thomas

1 Like

I checked on one of my Ubuntu 24.04 systems here and i had to install the following.

apt install build-essential
apt install automake
apt install libsnmp-dev

Then i executed the

./autogen.sh

inside the source folder. After this only

make

The finished plugins you will find inside

plugins/
plugins-root/
plugins-scripts/

The “check_icmp” will be inside “plugins-root”

Test after compile looks like this.

./check_icmp -H 192.168.188.1
[OK] - ok=1, warning=0, critical=0, unknown=0
        \_[OK] - 192.168.188.1
                \_[OK] - 192.168.188.1
                        \_[OK] - rta 5.754ms
                        \_[OK] - packet loss 0.0%|'192.168.188.1rta'=5ms;;; '192.168.188.1rtmin'=5.096000ms;;; '192.168.188.1rtmax'=5.925000ms;;;'192.168.188.1pl'=0.000000%;;;

Pay attention - the performance data names are completely different than they are now.

For this check_icmp it would be better to use the json output and use this output as datasource for some own check code :smiley:

If you replace the old check_icmp with the new one all the old graphing data will be gone.

Example JSON output.

{"state":"OK","summary":"ok=1, warning=0, critical=0, unknown=0","checks":[{"output":"192.168.188.1","state":"OK","checks":[{"output":"192.168.188.1","state":"OK","checks":[{"output":"rta 4.777ms","state":"OK","perfdata":[{"label":"192.168.188.1rta","value":{"type":"int","value":"4"},"uom":"ms"},{"label":"192.168.188.1rtmin","value":{"type":"double","value":"4.239000"},"uom":"ms"},{"label":"192.168.188.1rtmax","value":{"type":"double","value":"5.571000"},"uom":"ms"}]},{"output":"packet loss 0.0%","state":"OK","perfdata":[{"label":"192.168.188.1pl","value":{"type":"double","value":"0.000000"},"uom":"%"}]}]}]}]}

Good thing for the new check_icmp is the multi host check.

./check_icmp -H www.google.de -H www.heise.de -H www.akamai.com
[OK] - ok=3, warning=0, critical=0, unknown=0
        \_[OK] - www.akamai.com
                \_[OK] - 2.16.241.211
                        \_[OK] - rta 15.887ms
                        \_[OK] - packet loss 0.0%
        \_[OK] - www.heise.de
                \_[OK] - 193.99.144.85
                        \_[OK] - rta 17.374ms
                        \_[OK] - packet loss 0.0%
        \_[OK] - www.google.de
                \_[OK] - 142.250.185.67
                        \_[OK] - rta 16.227ms
                        \_[OK] - packet loss 0.0%|'2.16.241.211rta'=15ms;;; '2.16.241.211rtmin'=15.604000ms;;; '2.16.241.211rtmax'=16.560000ms;;;'2.16.241.211pl'=0.000000%;;; '193.99.144.85rta'=17ms;;; '193.99.144.85rtmin'=16.528000ms;;; '193.99.144.85rtmax'=17.917000ms;;;'193.99.144.85pl'=0.000000%;;; '142.250.185.67rta'=16ms;;; '142.250.185.67rtmin'=15.614000ms;;; '142.250.185.67rtmax'=16.590000ms;;;'142.250.185.67pl'=0.000000%;;;
2 Likes

Great! Thank you very much for the information and the provided file!

I installed libssl-dev and libsnmp-dev and repeated the procedure from the beginning.

$ gzip -dc monitoring-plugins-2.x.tar.gz | tar -xf -
$ cd monitoring-plugins-2.x
$ ./configure
$ make

Now it worked!

But now Im not sure if I should use the file when the output is different. Thanks for the detailed description @andreas-doehler !

When the names in the plugin output are different I know there will be new performance data graphics. Its not good if the old graphics are lost but the new names are the future or did I misunderstood? This will be applied to all checkMK users as soon the new check_icmp official release is integrated in a new checkMK release. (I guess?)

Of course it could be nice for an own check but the only thing I want is normal working ICMP checks in checkMK :smiley: I cannot be the only one?

I will install a test installation on my test server first…

I installed the latest checkMK RAW version 2.4.0p18 on my test system and created a new site and a host.

Like on our productive checkmk the rtmin is always 0.

I replaced the check_icmp file with the new compiled one. And of course made it executable

grafik

Looks good but the file size is significant smaller…

I think it’s not plug and play compatible with the check_icmp v3

Looks like we must surrender to our fate and live with rtmin always zero until it is fixed for everyone.

1 Like

As far as i know - rtmin is not relevant for most of the users. Most times only max and average values are used to find some problems. Yes a minimal value would also be nice to have.

1 Like

Thank you for the clarification.

Yes probably the rtmax and rtavg is in most cases enough. We have a lot of hosts with LTE backup connection. We use the check_icmp to determine when LTE and when DSL is in use. Its a special use case beacause we dont manage or monitor the modems. But we are owner of the devices behind the modem. So we can only look at the check_icmp results. But maybe the rtmin and rtavg will work for that and its more a matter of principle that I searched for a solution. A bit unpleasant because it concerns almost every host.

Is this only in the cre/RAW edition?

And what about the check_icmp uses in checkmk 2.3.0p12 ? @stager999 said the old check_icmp file from 2.3.0p12 worked in 2.3.0p25. Maybe it will work in 2.4.0?

I only used checkmk 2.2.0 in the past. 2.3.0 is only stopover during update process beacause thats the recommended way.

Monday I will take a look which check_icmp versions are included in different checkmk versions … Just in case there’s a happy surprise :smiley: . Probably we will stay on the current version.

Have a nice weekend

For the sake of completeness the different check_icmp versions in checkmk (raw):

/omd/versions/2.2.0p47.cre/lib/nagios/plugins/check_icmp -V
check_icmp v2.3.3 (monitoring-plugins 2.3.3)

 /omd/versions/2.3.0p12.cre/lib/nagios/plugins/check_icmp -V
check_icmp v2.3.3 (monitoring-plugins 2.3.3)

/omd/versions/2.3.0p41.cre/lib/nagios/plugins/check_icmp -V
check_icmp v2.4.0 (monitoring-plugins 2.4.0)

/omd/versions/2.4.0p18.cre/lib/nagios/plugins/check_icmp -V
check_icmp v2.4.0 (monitoring-plugins 2.4.0)


I used a fresh debian 12 system for this because debian 13 isn’t compatible with older checkmk versions.

Looks like the late checkmk 2.3 versions (like 2.3.0p20-25) could use both check_icmp (2.3.3 and 2.4.0) but the current checkmk version 2.4 need the check_icmp v2.4

I look forward to future releases where the rtmin value will hopefully work. :slight_smile: