AWS hostalive mit Icinga ohne Ping, aber mit check_tcp

Um einen Host bei Amazon Web Services per Icinga zu überwachen, kann man leider nicht auf den normalen „hostalive“ von Icinga zurückgreifen. Dieser „pingt“ den Server regelmäßig an und meldet sich entsprechend, wenn der Server nicht erwartungsgemäß antwortet.

Auf Amazon EC2 oder auch Lightsail Servern werden Ping-Anfragen erstmal grundsätzlich aus Sicherheitsgründen geblockt. Auf EC2 Servern lassen sich die sogenannten ECHO-Requests (ICMP Requests) zum Glück freischalten –  auf den Lightsail Servern geht das leider nicht.

Um dennoch die Erreichbarkeit überprüfen zu können, kann man bei Icinga anstatt der standardmäßig eingestellten „hostalive“ Abfrage auch einen eigenen Check verwenden, der z.B. die Erreichbarkeit des Hosts per TCP/IP auf einem bestimmten Port (z.B. 80 – WWW) testet.

Dafür benötigt man einen neuen Check, den wir in diesem Fall einfach „check_tcp“ nennen und folgendermaßen erstellen:

Check Command

In der „commands.conf“ erstellen wir einen neuen Befehl:

object CheckCommand "check_tcp" {
    import "plugin-check-command"
    command = [ PluginDir + "/check_tcp" ]
    
    arguments = {
        "-p" = "$tcp_port$"
        "-H" = "$tcp_address$"
    }
}

Der Befehl benutzt die „check_tcp“ aus den Nagios Plugins und erwartet, dass im Host die Variablen „tcp_port“ und „tcp_address“ definiert wurden.

Anpassungen im Host Object

Damit anstatt des „hostalive“ jetzt der neue Befehl verwendet wird, muss im  Host Object der „check_command“ von „hostalive“ auf „check_tcp“ geändert werden und zusätzlich die beiden o.g. Variablen definiert werden. Vollständig sieht das dann so aus:

object Host "www.domain.de" {
    import "generic-host"
    
    check_command = "check_tcp"
    vars.tcp_address = "www.domain.de"
    vars.tcp_port = "80"
    address = "1.2.3.4"
    
    vars.os = "Linux"
    
    [...]
}

Nach einem Reload sollte der neue „check_command“ verwendet werden. Trotzdem erscheint unser Host weiterhin als „Critical“ weil nicht erreichbar. Das liegt daran, dass Icinga trotzdem einen Ping an den Host sendet und keine Antwort zurückbekommt. Um den Ping komplett abzuschalten, muss eine Anpassung vorgenommen werden, die in folgendem Artikel erklärt wird: 

Icinga Ping-Check deaktivieren