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
enapt-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
- Nagios is nu opgestart en benaderbaar via http://127.0.0.1/nagios
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: