Icecast lässt sich mittels check_http überprüfen. Besser ist aber check_ice, da das bei fehlender Existenz eines Mountpoints statt wie check_http “Warning” “Critical” zurückliefert. Ich habe das mit einer hostgroup gemacht:
hostgroups_nagios2.cfg
define hostgroup { hostgroup_name icecast-servers alias ICECAST servers members icecast1,icecast2 }
services_nagios2.cfg
define service { hostgroup_name icecast-servers service_description ICECAST on Port 80 check_command check_icecast_http!80 use generic-service notification_interval 0 }
/etc/nagios-plugins/config/icecast.cfg
#check if icecast responds to http requests define command { command_name check_icecast_http command_line /usr/local/bin/check_ice -H '$HOSTADDRESS$' -p $ARG1$ }
Andere Ports sind natürlich auch denkbar. Dann sollte man natürlich überprüfen, ob ein Mountpoint existiert. Dazu kann man den http-check nehmen und auf eine spezifische url überprüfen. Dabei muss man beachten, mit den Schalter “-N” nach dem Header abzubrechen (der content endet ja theoretisch nie). Oder wie in meinem Falle check_ice.
/etc/nagios-plugins/config/icecast.cfg
#check if a mountpoint exists define command { command_name check_icecast_mountpoint command_line /usr/local/bin/check_ice -H '$HOSTADDRESS$' -p $ARG1$ -m '$ARG2$' }
Denkbar wäre auch eine Mindestlänge des Contents zu überprüfen:
/etc/nagios-plugins/config/icecast.cfg
#check if a mountpoint delivers data define command { command_name check_icecast_mountpoint_data command_line /usr/local/bin/check_ice -H '$HOSTADDRESS$' -p $ARG1$ -m '$ARG2$' -s '$ARG3' }
Dann lässt sich noch überprüfen, ob valide Daten vom Icecast kommen
/etc/nagios-plugins/config/icecast.cfg
kommt noch
Folgende Host-Definition definiert einen Host “icecast1” mit entsprechender ip-addresse. Es werden 2 Mountpoints definiert: /test und /test-fallback. Dabei ist /test-fallback als fallback für /test im icecast definiert. Entsprechende Serviceabhängigkeiten sind wie folgt.
/test hängt von icecast_http ab /test-fallback hängt von icecast_http ab
/test hängt nicht von /test-fallback ab, sodas bei Ausfall des fallbacks eine Benachrichtigung kommt, und wenn dann noch /test (auf den es ja ankommt) ausfällt kommt eine zweite Nachricht.
/etc/nagios3/conf.d/icecast1.cfg
define host{ use generic-host ; Name of host template to use host_name icecast1 alias icecast1.example.com address xxx.xxx.xxx.xxx initial_state o } define service { use generic-service service_description mountpoint /test host_name icecast1 check_command check_icecast_mountpoint!80!/test } define service { use generic-service service_description mountpoint /test-fallback host_name icecast1 check_command check_icecast_mountpoint!80!/test-fallback } define servicedependency { host_name streaming-dunlop dependent_service_description mountpoint /test dependent_host_name icecast1 service_description ICECAST on Port 80 notification_failure_criteria w,u,c } define servicedependency { host_name streaming-dunlop dependent_service_description mountpoint /test-fallback dependent_host_name icecast1 service_description ICECAST on Port 80 notification_failure_criteria w,u,c }