check_icmp ist von Andreas Ericson entwickelt worden und dient als Ersatz für check_ping.
Seit Version 1.4 der Nagios Plugins gehört check_icmp zum Standard dazu.
Während check_ping das UnixProgramm /bin/ping aufruft und es daher immer wieder zu Kompatibilitätsproblemen mit der vorhandenen ping Version kommt, versendet check_icmp ICMP Pakete ohne externe Hilfsprogramme.
Ein weiterer Vorteil ist, dass dieses Plugin im Gegensatz zu check_ping Performancedaten liefert und somit für RRD Tools genutzt werden kann.
Wie das Programm /bin/ping muss auch check_icmp mit root Rechten laufen, daher muss das SUID Bit auf den User root gesetzt werden.
chown root.nagios check_icmp chmod 4711 check_icmp
Für einen Test ruft man das Plugin als User nagios auf der Kommandozeile auf, da Nagios es später unter diesem Account ausführt.
Wenn man einen symbolischen Link check_host auf check_icmp anlegt,
ln -s check_icmp check_host
verändert check_icmp leicht seine Arbeitsweise. Bei einem Host Check muss nicht die Antwortzeit getestet werden. Als check_host aufgerufen liefert check_icmp schon nach dem ersten empfangenen „ICMP Echo Reply“ ein OK.
Damit wird verhindert das sich Nagios bei Netzwerk Problemen zu lange mit Host Checks aufhält.
Sollte check_icmp über den Links check_host, wie oben beschrieben aufgerufen werden, kommt es zur Ausgabe einer zusätzlichen Zeile. Dies geschieht aber nur wenn der Hostname FQDN und nicht über die IP Adresse angegeben wird.
Beispiel:
./check_host -H www.google.de mode: 1 mode: 1 OK - www.google.de responds to ICMP. Packet 1, rta 19.603ms|pkt=1;;0;5 rta=19.603;1000.000;1000.000;;
Nagios zeigt nur die Ausgabe „mode: 1“ an
./check_host -H 64.233.183.99 OK - 64.233.183.99 responds to ICMP. Packet 1, rta 19.179ms|pkt=1;;0;5 rta=19.179;1000.000;1000.000;;
Über die IP ist wieder alles OK.
Der Fehler liegt in check_icmp.c Zeile 1043.
printf("mode: %d\n", mode);
Diese Zeile auskommentieren oder löschen und check_icmp neu compilieren.
— pitchfork 23.10.2005 18:05