Modius - Techblog

  • facebook
  • twitter
  • instagram
  • feedburner
  • github
  • youtube
  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

Icinga2 – Raspberry Pi monitoring

Veröffentlicht am 31. Juli 2017 von Christian Piazzi 2 Kommentare , Aktualisiert am 30. Dezember 2017

Tablet mit GraphenIn meine Setup Zuhause verwende ich schon recht lange Raspberry Pi’s(Amazon Link) zb. für die Steuerung meiner Heizung oder als DNS/ldap Server. Diese will ich nun in mein Monitoring mit Icinga2 hinzufügen. Dafür will ich als erstes die Systeminformationen mit NRPE abfragen.

Installation von NRPE auf dem Raspberry Pi

Um den Raspberry Pi via NRPE monitoren zu können, müssen wir sowohl den NRPE Client wie auch die Nagios Plugins installieren. Dafür können wir den folgenden Befehl auf dem Raspberry Pi ausführen.

1
apt-get install nagios-nrpe-server nagios-plugins-basic

Nach der Installation finden wir die Plugins unter /usr/lib/nagios/plugins. Die Konfiguration für NRPE liegt unter /etc/nagios. Damit Icinga2 nun eine Verbindung zum NRPE Client aufbauen kann, müssen wir den Server in die NRPE Konfiguration in Zeile 81 eintragen (/etc/nagios/nrpe.cfg).

1
2
3
4
5
6
7
...
#Vorher
allowed_hosts=127.0.0.1
 
#Nachher
allowed_hosts=127.0.0.1,192.168.10.83
...

Nach der Änderung muss der NRPE Client neugestartet werden.

Shell
1
systemctl restart nagios-nrpe-server.service

Installation von NRPE auf dem Icinga2 System

Auf dem Server müssen wir nur das NRPE Skript installieren, um den Client in der Ferne Ansprechen zu können

Shell
1
apt-get install nagios-nrpe-plugin

Das Skript sollte nun unter /usr/lib/nagios/plugins zu finden sein. Es nennt sich check_nrpe.

Anlegen des NRPE Commands

Nachdem die Systeme nun vorbereitet sind, müssen wir auf dem Icinga2 Server als nächstes eine Command Definition anlegen. Diese wird in /etc/icinga2/conf.d/commands.conf hinzufgefügt

Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
object CheckCommand "check_nrpe" {
   import "plugin-check-command"
   command [ PluginDir + "/check_nrpe" ]
   arguments = {
      "-H" = "$nrpe_address$"
      "-p" = "$nrpe_port$"
      "-c" = "$nrpe_command$"
      "-a" = {
         value = "$nrpe_args$"
         repeat_key = false
         order = 1
     }
   }
 
   vars.nrpe_address = "$address$"
   vars.nrpe_port = 5666
}

Anlegen der NRPE Services

Nachdem wir nun das Check Command haben, müssen wir noch die entsprechenden Services anlegen. Dies können wir in /etc/nagios/conf.d/services.conf.

Vim
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
apply Service "nrpe-users" {
  import "generic-service"
 
  check_command = "check_nrpe"
  vars.nrpe_command = "check_users"
 
  assign where host.vars.nrpe == "true"
}
 
apply Service "nrpe-load" {
  import "generic-service"
 
  check_command = "check_nrpe"
  vars.nrpe_command = "check_load"
 
  assign where host.vars.nrpe == "true"
}
 
apply Service "nrpe-zombies" {
  import "generic-service"
 
  check_command = "check_nrpe"
  vars.nrpe_command = "check_zombie_procs"
 
  assign where host.vars.nrpe == "true"
}
 
apply Service "nrpe-procs" {
  import "generic-service"
 
  check_command = "check_nrpe"
  vars.nrpe_command = "check_total_procs"
 
  assign where host.vars.nrpe == "true"
}

Ich habe mich hier heute erstmal auf die vier bereits vorhandenen Checks beschränkt. Des weiteren habe ich hier eine Variable host.vars.nrpe definiert. Wenn diese bei dem Host auf true gesetzt wird, dann werden die NRPE Checks verwendet.

Wenn wir zu einem späteren Zeitpunkt mehr NRPE Checks konfiguriert haben, dann macht es hier durchaus Sinn, mehrere Variablen zu definieren.

Anlegen des Raspberry Pi Hosts

Nachdem wir nun das Command und die Services haben, müssen wir noch eine Definition für den Raspberry Pi Host anlegen. Dies könnten wir direkt in /etc/nagios/conf.d/hosts.conf machen. Ich neige dazu, für die Übersichtlichkeit, für meine Raspberry Pi’s eine eigene Datei anzulegen, die ich raspberry.conf nenne. Diese fülle ich dann mit dem folgenden Inhalt:

Vim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
object Host "fhem" {
  import "generic-host"
 
  address = "192.168.10.74"
  address6 = "::1"
 
  vars.os = "Linux"
  vars.nrpe = "true"
 
  vars.notification["mail"] = {
    /* The UserGroup `icingaadmins` is defined in `users.conf`. */
    groups = [ "icingaadmins" ]
  }
}

Wichtig ist jetzt an dieser Stelle, dass wir vars.nrpe auf true setzten. Sonst würden unsere zuvor definierten Services nicht dem Host zugeordnet.

Jetzt müssen wir Icinga2 noch einmal neustarten, damit die Konfiguration eingelesen wird.

1
systemctl restart icinga2.service

Anschließend prüfen wir noch den Status von Icinga2, falls wir einen Syntaxfehler in den Dateien haben. Wenn alles geklappt hat, sollte die Ausgabe ungefähr so aussehen:

Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
root@icinga2:~# systemctl status icinga2.service
● icinga2.service - Icinga host/service/network monitoring system
   Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; vendor preset: enabled)
   Active: active (running) since So 2017-07-30 14:29:35 CEST; 50s ago
  Process: 7078 ExecStartPre=/usr/lib/icinga2/prepare-dirs /usr/lib/icinga2/icinga2 (code=exited, status=0/SUCCESS)
Main PID: 7140 (icinga2)
    Tasks: 16
   Memory: 8.2M
      CPU: 204ms
   CGroup: /system.slice/icinga2.service
           ├─7140 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon -e /var/log/icinga2/error.log
           └─7162 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon -e /var/log/icinga2/error.log
 
Jul 30 14:29:35 icinga2 icinga2[6592]: [2017-07-30 14:29:35 +0200] information/DbConnection: Pausing IDO connection: ido-mysql
Jul 30 14:29:35 icinga2 icinga2[6592]: [2017-07-30 14:29:35 +0200] information/ConfigObject: Dumping program state to file '/var/lib/icinga2/icinga2.state'
Jul 30 14:29:35 icinga2 icinga2[6592]: [2017-07-30 14:29:35 +0200] information/IcingaApplication: Icinga has shut down.
Jul 30 14:29:35 icinga2 systemd[1]: Stopped Icinga host/service/network monitoring system.
Jul 30 14:29:35 icinga2 systemd[1]: Starting Icinga host/service/network monitoring system...
Jul 30 14:29:35 icinga2 systemd[1]: Started Icinga host/service/network monitoring system.
root@icinga2:~#

Im Frontend sieht das ganze dann so aus.

Screenshot vom Icinga2 Frontend

Kategorie: Monitoring, Sicherheit Tags: Icinga2, itsm, Monitoring, Nagios, nrpe, Security

Ü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

Kommentare

  1. Pugster meint

    13. Oktober 2018 um 18:06

    Danke für deinen Beitrag! Hat mir gefolgen meine Raspi’s im Netzwerk zu überwachen.

    Hinweis:

    In der Datei commands.cfg muss es

    command = [ PluginDir + „/check_nrpe“ ]

    heißen. Ansonsten lässt sich Icinga2 nicht starten.

    Antworten

Trackbacks

  1. Prometheus Installation unter CentOS - Modius - Techblog sagt:
    16. März 2021 um 11:35 Uhr

    […] Da ich ich nun dem Thema wieder etwas widmen kann, will ich mir mal Prometheus als alternative zu Icinga 2 etwas genauer […]

    Antworten

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

Beliebte Artikel

  • ioBroker auf dem Raspberry Pi installieren und konfigurieren
  • Docker Container – anzeigen, starten, stoppen und löschen
  • MQTT Broker auf dem Raspberry Pi
  • Nextcloud https mit self-signed Zertifikat einrichten
  • systemctl / systemd richtig verwenden

Neueste Kommentare

  • Grafana Installation unter Linux - Modius - Techblog bei Prometheus Installation unter CentOS
  • Nextcloud unter Ubuntu 16.04 installieren - Modius - Techblog bei Seafile unter CentOS 7 installieren – HowTo
  • Prometheus Installation unter CentOS - Modius - Techblog bei Icinga2 – Raspberry Pi monitoring
  • Herbert bei Eigenes Docker Images mit Dockerfile erstellen
  • HerryStoffel bei Nextcloud https mit self-signed Zertifikat einrichten

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 © 2021 · Outreach Pro on Genesis Framework · WordPress · Anmelden