===== Icecast mit Nagios überprüfen =====
Icecast lässt sich mittels check_http überprüfen.
Besser ist aber [[:public:code:check_ice|check_ice]], da das bei fehlender Existenz eines Mountpoints statt wie check_http "Warning" "Critical" zurückliefert.
Ich habe das mit einer hostgroup gemacht:
define hostgroup {
hostgroup_name icecast-servers
alias ICECAST servers
members icecast1,icecast2
}
define service {
hostgroup_name icecast-servers
service_description ICECAST on Port 80
check_command check_icecast_http!80
use generic-service
notification_interval 0
}
#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 [[:public:code:check_ice|check_ice]].
#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:
#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
kommt noch
==== Beispielhafte Host-Definition ====
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.
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
}