Modius - Techblog

  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

DNS Server Monitoring mit Icinga2 und check_dns

Veröffentlicht am 30. Dezember 2017 von Christian Piazzi Hinterlasse ein Kommentar , Aktualisiert am 16. Mai 2021
Geschätzte Lesezeit: 2 Minuten

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.

Icinga2 Frontend check_dns

Kategorie: Linux, Monitoring, Sicherheit Tags: bind9, check_dns, DNS, Icinga, Icinga2, Monitoring

Über Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

  • Linux
  • Internet, Bloggen & Co
  • Programmierung
  • Sicherheit
  • Netzwerk & Co
  • Mikrokontroller
  • Windows

Neueste Kommentare

  • Prometheus Installation unter Ubuntu - Modius - Techblog bei Prometheus Installation unter CentOS
  • Rainer bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen

Werbung

Archive

Kontakt, Datenschutz und Impressum

  • Kontakt
  • Datenschutz
  • Impressum

Schlagwörter

Anleitung Ansible Apache Apple App Store Automatisierung Blogparade C++ Centos centos 7 CentOS7 Container Datenbank DevOps Docker Dr. Racket Dr. Scheme funktional Gastartikel Google HowTo httpd Icinga2 Icinga 2 Installation itsm Linux Minecraft Monitoring mooc MySQL owncloud PHP Plugin Programmierung python Raspberry Pi Schritt für Schritt Server Sicherheit Tutorial Ubuntu Update Windows Wordpress

Copyright © 2025 · Outreach Pro on Genesis Framework · WordPress · Anmelden