
Im letzen Artikel habe ich auf meinen Raspberry Pi den DNS Server bind9 installiert. Heute schauen wir uns an, wie wir mit check_dns die Funktionalität des Servers prüfen können.
Dafür werden wir im ersten Schritt check_dns auf der Console ausführen. Im zweiten Schritt werden wir check_dns in der commands.conf hinterlegen. Als drittes legen wir eine entsprechende Servicezuweisung für check_dns an. Im vierten und letzten Schritt, legen wir ein Konfiguration für den DNS Server an, da dieser prüfen soll ob er sich selbst auf lösen kann.
1. Schritt: check_dns auf der Console ausführen
Bevor wir einen neuen Monitoring Check in unsere Konfiguration mit aufnehmen, sollten wir diesen generell erstmal auf der Console testen, damit wir den Aufbau und die Funktion des Checks richtig verstehen.
Die entsprechende Datei für check_dns finden wir unter /usr/lib/nagios/plugins/. Wir wechseln in diesen Ordner und lassen uns die Hilfeseite für check_dns anzeigen. Das ganze seiht dann ungefähr so aus.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | cd /usr/lib/nagios/plugins root@icinga2:/usr/lib/nagios/plugins# ./check_dns --help check_dns v2.1.2 (monitoring-plugins 2.1.2) Copyright (c) 1999 Ethan Galstad <nagios@nagios.org> Copyright (c) 2000-2008 Monitoring Plugins Development Team <devel@monitoring-plugins.org> This plugin uses the nslookup program to obtain the IP address for the given host/domain query. An optional DNS server to use may be specified. If no DNS server is specified, the default server(s) specified in /etc/resolv.conf will be used. Usage: check_dns -H host [-s server] [-a expected-address] [-A] [-t timeout] [-w warn] [-c crit] Options: -h, --help Print detailed help screen -V, --version Print version information --extra-opts=[section][@file] Read options from an ini file. See https://www.monitoring-plugins.org/doc/extra-opts.html for usage and examples. -H, --hostname=HOST The name or address you want to query -s, --server=HOST Optional DNS server you want to use for the lookup -a, --expected-address=IP-ADDRESS|HOST Optional IP-ADDRESS you expect the DNS server to return. HOST must end with a dot (.). This option can be repeated multiple times (Returns OK if any value match). If multiple addresses are returned at once, you have to match the whole string of addresses separated with commas (sorted alphabetically). -A, --expect-authority Optionally expect the DNS server to be authoritative for the lookup -w, --warning=seconds Return warning if elapsed time exceeds value. Default off -c, --critical=seconds Return critical if elapsed time exceeds value. Default off -t, --timeout=INTEGER Seconds before connection times out (default: 10) Send email to help@monitoring-plugins.org if you have questions regarding use of this software. To submit patches or suggest improvements, send email to devel@monitoring-plugins.org |
Der Hilfeseite können wir die beiden wichtigsten Parameter entnehmen.
-H: Hier geben wir den Hostnamen des Systems an, der via DNS aufgelöst werden soll
-s: Dieser Parameter dient zur Angabe des DNS Servers, welcher abgefragt werden soll
In meinem Beispiel ist der Host der aufgelöst werden soll smarthome.piazzimedia und der DNS Server 192.168.10.2. Der vollständige Befehl und die entsprechende Rückgabe sieht dann wie folgt aus:
1 2 | root@icinga2:/usr/lib/nagios/plugins# ./check_dns -H smarthome.piazzimedia -s 192.168.10.2 DNS OK: 0,024 seconds response time. smarthome.piazzimedia returns 192.168.10.2|time=0,024160s;;;0,000000 |
2. Schritt: check_dns in commands.conf hinterlegen
Die commands.conf finden wir in /etc/icinga2/conf.d. In diese Datei müssen wir nun ein entsprechendes CheckCommand definieren, welches auf den check_dns verweist und die beiden Parameter abfragt.
1 2 3 4 5 6 7 8 9 10 11 | object CheckCommand "check_dns" { import "plugin-check-command" command = [ PluginDir + "/check_dns" ] arguments = { "-H" = "$dns_lookup$" "-s" = "$dns_server$" } vars.dns_lookup = "$host.display_name$" vars.dns_server = "192.168.10.2" } |
Ich habe hier an dieser Stelle den DNS Server bereits fest gesetzt, da es bei mir zur Zeit nur einen gibt. Als DNS Lookup verweise ich direkt auf den Display Name des Host, da dieser bei mir immer den FQDN innerhalb der DNS Domain darstellt.
3. Schritt: Anlegen der Servicezuweisung für check_dns
Um die Verbindung zwischen dem check_dns Command und der Host zu realisieren, müssen wir noch einen entsprechenden Eintrag in der services.conf erstellen. Dieser sieht bei mir so aus:
1 2 3 4 5 6 | apply Service "check-dns" { import "generic-service" check_command = "check_dns" assign where host.vars.dns == "true" } |
Hier definiere ich, dass bei allen Host wo die Variable host.vars.dns gesetzt ist entsprechend check_dns angewendet wird.
3. Schritt: Anlegen einer Host Konfiguration für den DNS Server
Als letztes müssen wir noch eine Konfiguration für unseren DNS Server anlegen. Mein bind9 läuft auf einem Raspberry Pi mit dem Namen smarthome.piazzimedia. Aus diesem Grund legen ich in /etc/icinga2/conf.d einen Datei smarthome.conf an.
Diese Datei beommt von mir den folgenden Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | object Host "smarthome.piazzimedia" { import "generic-host" address = "192.168.10.2" address6 = "::1" vars.os = "Linux" vars.nrpe = "false" vars.dns = "true" #check_command = "hostalive" vars.notification["mail"] = { /* The UserGroup `icingaadmins` is defined in `users.conf`. */ groups = [ "icingaadmins" ] } } |
Der wichtige Eintrag ist hier vars.dns = „true“, welchen wir in Schritt 3 definiert haben.
5. Schritt: Icinga2 neustarten und Funktion im Frontend überprüfen
Damit die Konfigurationsänderung nun geladen wird müssen wir icinga2 neustarten. Anschließend schauen wir ob die Konfiguration auch sauber geladen wurden.
1 2 3 | systemctl restart icinga2 systemctl status icinga2 |
Wenn alles funktioniert erscheint der Host auch im Frontend und wird mit check_dns angezeigt.
Schreibe einen Kommentar