Nagios

Last Updated on 14 april 2021 by Syds

Voor het monitoren van mijn devices, of ze wel of geen WiFi- of Ethernetverbinding hebben, of de webserver draait, de MQTT messagebroker, Domoticz de MySQL database, maar ook of er papier in de printer zit of de toner niet op dreigt te raken gebruik ik Nagios.

Nagios is een opensourcecomputersysteem en netwerksurveillance-applicatie. Het houdt servers en services in de gaten die men specificeert en stuurt berichten als er dingen stuk gaan en wanneer services of servers die stuk waren weer beter gaan functioneren.

In deze tutorial leg ik uit hoe je Nagios installeert op je Raspberry Pi, en hoe Nagios moet configureren om devices of services te monitoren.

Benodigdheden

  • geen

Reeds geïnstalleerd en up-and-running:

  • Raspberry Pi (Installatiebibliotheek geupdated met apt-get update en apt-get upgrade)
  • Apache2
  • de volgende pakketten: autoconf, gcc, libc6, make, wget, unzip, php5, libgd2-xpm-dev, indien je deze pakketten nog niet geinstalleerd had, installeer ze met sudo apt-get install -y autoconf gcc libc6 make wget unzip php5 libgd2-xpm-dev

Stap 1. Installeren Nagios

  • Download Nagios Core 4.4.3

cd /tmp
wget -O nagioscore.tar.gz https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.3.tar.gz
tar xzf nagioscore.tar.gz

  • Compileer

cd /tmp/nagioscore-nagios-4.4.3/
./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all

  • Maak gebruikers en groepen aan

sudo make install-groups-users
sudo usermod -a -G nagios www-data

  • Installeer Nagios binaries

sudo make install
sudo make install-daemoninit
sudo make install-commandmode
sudo make install-config

  • Install Apache Config Files

make install-webconf
a2enmod rewrite
a2enmod cgi

  • Creeer Nagiosadmin account en bedenk een wachtwoord

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

je wordt gevraagd een password in te voeren, bedenk een password en voer die in (je geheugen ;-))

  • Herstart apache en start Nagios

sudo systemctl restart apache2.service
sudo systemctl start nagios.service

Stap 2. Nagios plugins installeren

Op het Nagios forum zijn talloze plugins te vinden, en te downloaden, waarmee je talloze services kunt monitoren. De meest gebruikte plugins zijn in een installeerbare package gebundeld. Installeer deze plugins als volgt:

  • Download de bibliotheek met plugins

cd /tmp
wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/archive/release-2.2.1.tar.gz
tar zxf nagios-plugins.tar.gz

  • Compileer en installeer de plugins

cd /tmp/nagios-plugins-release-2.2.1/
./tools/setup
./configure
make
make install

De geinstalleerde plugins kun je vinden in /usr/local/nagios/libexec, hier kun je zelf ook plugins aan toe voegen die je overal en nergens op het internet kunt vinden. Let wel goed op de rechten (chmod 755) en user en group.

Stap 3. Configureer Nagios

Je kunt device-soorten, bijvoorbeeld al je Sonoff apparaten, of je laptop en desktop’s handig bij elkaar houden in seperate configuratie bestanden. Ik heb voor de volgende groepen/configuratiebestanden gekozen:

Configuratie file Soort devices
domotica.cfg Raspberry Pi, Domoticz services, MQTT broker, NSLU2 (RS485 gateway) etc.
sensor.cfg Sensoren zoals binnen temperatuur, weerstation etc.
switch.cfg Switches, accesspoints en routers
tv_ontvanger.cfg Media devices zoals TV, ontvangers, Google Home’s
device.cfg Alle Shelly’s, SonOff Basic’s, SonOff Mini’s, Wemos D1 mini’s etc.
printer.cfg

 

Printers en scanners

De configuratiebestanden kun je vinden in /usr/local/nagios/etc/objects

Ik heb een van de voorbeeld configuratiefiles genomen en die gekopieerd. Om zo’n configuratiefile op te nemen in de Nagios configuratie dien je een regel toe te voegen aan de nagios.cfg file, deze configuratiefile is te vinden in /usr/local/nagios/etc/nagios.cfg. Voeg de extra configuratiefiles toe onder de regel “# You can specify individual object config files as shown below:”, dus als volgt:

# You can specify individual object config files as shown below:
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/domotica.cfg
cfg_file=/usr/local/nagios/etc/objects/sensor.cfg
cfg_file=/usr/local/nagios/etc/objects/device.cfg
cfg_file=/usr/local/nagios/etc/objects/tv_ontvanger.cfg

# Definitions for monitoring the local (Linux) host
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

# Definitions for monitoring a Windows machine
#cfg_file=/usr/local/nagios/etc/objects/windows.cfg

# Definitions for monitoring a router/switch
cfg_file=/usr/local/nagios/etc/objects/switch.cfg

# Definitions for monitoring a network printer
cfg_file=/usr/local/nagios/etc/objects/printer.cfg

Vervolgens kun je devices en services gaan toevoegen aan de configuratiefiles, hieronder een paar voorbeelden:

  • device.cfg

define host {
use device ; Name of host template to use
host_name schuur.sydspost.nl
display_name Schuur
contacts nagiosadmin
check_interval 60
}

define hostgroup {
hostgroup_name Devices ; The name of the hostgroup
alias Devices ; Long name of the group
members schuur.sydspost.nl
}

define service {
use local-service
host_name schuur.sydspost.nl
service_description HTTP
check_command check_http
}

  • printers.cfg

define host {
use generic-printer ; Inherit default values from a template
host_name canon.sydspost.nl ; The name we're giving to this printer
display_name Canon MG5600 Inktjet ; A longer name associated with the printer
# address 192.168.2.9 ; IP address of the printer
hostgroups network-printers ; Host groups this printer is associated with
contacts nagiosadmin
check_interval 60
}

define hostgroup {
hostgroup_name network-printers ; The name of the hostgroup
alias Network Printers ; Long name of the group
}

define service {
use generic-service ; Inherit values from a template
host_name HPF43909564C83.sydspost.nl ; The name of the host the service is associated with
service_description Printer paper in papertray 1 ; The service description
check_command check_printer_paper ; The command used to monitor the service
check_interval 60 ; Check the service every 10 minutes under normal conditions
retry_interval 1 ; Re-check the service every minute until its final/hard state is determined
}

  • Om notificaties in je mail te ontvangen kun je /usr/local/nagios/etc/objects/contacts.cfg aanpassen, bijvoorbeeld als volgt

define contact {
contact_name nagiosadmin ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Nagios Admin ; Full name of user
email sydspost@xxxxx.xxx ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
}

define contactgroup {
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin
}

Het eindresultaat:

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *