Da viele hier im Forum zumindest eine, aber auch gern mehrere Diskstations im Netzwerk betreiben und es durchaus einige Bastler mit RasPis hier zu geben scheint, möchte ich an dieser Stelle ein kleines Bastelprojekt ins Leben rufen:
Die Überwachung des eigenen Netzwerks (und der Diskstations) mithilfe eines Raspberry Pi, auf dem Nagios aufgesetzt wurde
Ich habe es bei mir seit einigen Wochen am Laufen, es funktioniert in der Basisversion prima, der Pi ist kaum beschäftigt (ich benutze hierzu einen alten Raspberry Pi B+).
Da mir an einigen Stellen noch die Übung/Erfahrung fehlt (z.B. Einbau eines Mailservers, um vom RasPi Warnmails geschickt zu bekommen, wenn mal was im Netzwerk nicht passt) möchte ich hier mal den aktuellen Stand des Projekts posten, in der Hoffnung, das andere Leser des Forums hier mit weiteren Abfragen/Plugins/Scripten weiterhelfen können.
Und nun gehts los:
Zunächst einen RasPi mit aktuellem Raspian-Image aufsetzen (setze ich als bekannt voraus)
Betriebssystem auf den aktuellen Stand bringen:
Avahi-Daemon:
Um dem RasPi im Netz über seinen Hostnamen erreichen zu können, zunächst den Avahi-Daemon installieren und beim booten automatisch starten lassen:
Ab sofort ist der RasPi auch unter nagiospi.local (falls Ihr den gleichen Hostnamen wie o.a. verwendet habt) zu erreichen.
RPi-Monitor installieren:
Um ein paar Infos über den RasPi zu erhalten, habe ich den RPi-Monitor mit folgenden Befehlen installiert:
Künftig könnt Ihr über http://nagiospi.local:8888 Infos über den Zustand Eures NagiosPi erhalten
Die Website des RPi-Monitors ist hier: https://github.com/XavierBerger/RPi-Monitor-deb/tree/master/packages
Anpassung der Netzwerkkonfiguration:
Zunächst dem NagiosPi eine feste IP zuordnen:
Die Datei sollte folgenden Inhalt haben (die IP an Eure Gegebenheiten anpassen):
Nun wird Nagios installiert:
Während der Installation vergebt Ihr ein Passwort für den Nagios-Admin
Ab sofort ist das Webinterface von Nagios über http://[IP des PI]/nagios3 zu erreichen.
Benutzername: nagiosadmin
Passwort: habt Ihr oben vergeben
Die weitere Konfiguration von Nagios verläuft über Konfigurationsdateien auf der Konsole.
Wichtige Ordner für die Konfig-Dateien sind folgende:
/etc/nagios3
/etc/nagios3/conf.d
Anpassung der Konfigurationsdateien:
Nutzer anlegen
Timeperiods anpassen (einige Abfragen wie die Abfrage nach dem Diskspace soll nur einmal/Tag erfolgen, da sonst die Festplatte nicht in Standby gehen kann)
Jetzt legen wir uns ein Template für unsere Diskstations an:
Die Überwachung des eigenen Netzwerks (und der Diskstations) mithilfe eines Raspberry Pi, auf dem Nagios aufgesetzt wurde
Ich habe es bei mir seit einigen Wochen am Laufen, es funktioniert in der Basisversion prima, der Pi ist kaum beschäftigt (ich benutze hierzu einen alten Raspberry Pi B+).
Da mir an einigen Stellen noch die Übung/Erfahrung fehlt (z.B. Einbau eines Mailservers, um vom RasPi Warnmails geschickt zu bekommen, wenn mal was im Netzwerk nicht passt) möchte ich hier mal den aktuellen Stand des Projekts posten, in der Hoffnung, das andere Leser des Forums hier mit weiteren Abfragen/Plugins/Scripten weiterhelfen können.
Und nun gehts los:
Zunächst einen RasPi mit aktuellem Raspian-Image aufsetzen (setze ich als bekannt voraus)
Rich (BBCode):
sudo raspi-config
- Expand Filesystem
- Ländereinstellungen anpassen
- Über "Erweitert->Hostnamen ändern" dem RasPi einen eindeutigen Namen zuordnen (z.B. NagiosPi)
Betriebssystem auf den aktuellen Stand bringen:
Rich (BBCode):
sudo apt-get update && sudo apt-get upgrade -y
sudo rpi-update
Avahi-Daemon:
Um dem RasPi im Netz über seinen Hostnamen erreichen zu können, zunächst den Avahi-Daemon installieren und beim booten automatisch starten lassen:
Rich (BBCode):
sudo apt-get install avahi-daemon
sudo update-rc.d avahi-daemon defaults
RPi-Monitor installieren:
Um ein paar Infos über den RasPi zu erhalten, habe ich den RPi-Monitor mit folgenden Befehlen installiert:
Rich (BBCode):
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 2C0D3C0F
sudo wget http://goo.gl/rsel0F -O /etc/apt/sources.list.d/rpimonitor.list
sudo apt-get update
sudo apt-get install rpimonitor
Die Website des RPi-Monitors ist hier: https://github.com/XavierBerger/RPi-Monitor-deb/tree/master/packages
Anpassung der Netzwerkkonfiguration:
Zunächst dem NagiosPi eine feste IP zuordnen:
Rich (BBCode):
sudo nano /etc/network/interfaces
Die Datei sollte folgenden Inhalt haben (die IP an Eure Gegebenheiten anpassen):
Rich (BBCode):
auto lo
iface lo net loopback
face eth0 inet static
address 192.168.178.70 #statische IP des RasPi
netmask 255.255.255.0
gateway 192.168.178.1
iface default init dhcp
Nun wird Nagios installiert:
Rich (BBCode):
sudo apt-get install nagios3
Während der Installation vergebt Ihr ein Passwort für den Nagios-Admin
Ab sofort ist das Webinterface von Nagios über http://[IP des PI]/nagios3 zu erreichen.
Benutzername: nagiosadmin
Passwort: habt Ihr oben vergeben
Die weitere Konfiguration von Nagios verläuft über Konfigurationsdateien auf der Konsole.
Wichtige Ordner für die Konfig-Dateien sind folgende:
/etc/nagios3
/etc/nagios3/conf.d
Anpassung der Konfigurationsdateien:
Nutzer anlegen
Rich (BBCode):
sudo nano /etc/nagios3/contacts_nagios2.cfg
Rich (BBCode):
###############################################################################
# contacts.cfg
###############################################################################
###############################################################################
###############################################################################
#
# CONTACTS
#
###############################################################################
###############################################################################
# In this simple config file, a single contact will receive all alerts.
# 1. Kontaktperson
define contact{
contact_name [Dein Vorname]
alias [Dein vollständiger Name]
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email [Deine email-Adresse]
}
# 2. Kontaktperson
define contact{
contact_name root
alias Root
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email xyz@t-online.de
}
###############################################################################
###############################################################################
#
# CONTACT GROUPS
#
###############################################################################
###############################################################################
# We only have one contact in this simple configuration file, so there is
# no need to create more than one contact group.
define contact group
contactgroup_name admins
alias Nagios Administrators
members root, [Dein Vorname]
}
Timeperiods anpassen (einige Abfragen wie die Abfrage nach dem Diskspace soll nur einmal/Tag erfolgen, da sonst die Festplatte nicht in Standby gehen kann)
Rich (BBCode):
sudo nano /etc/nagios3/timeperiods_nagios2.cfg
Rich (BBCode):
###############################################################################
# timeperiods.cfg
###############################################################################
# This defines a timeperiod where all times are valid for checks,
# notifications, etc. The classic "24x7" support nightmare. :-)
define time period
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
# Here is a slightly friendlier period during work hours
define time period
timeperiod_name workhorse
alias Standard Work Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}
# The complement of workhorse
define time period
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,17:00-24:00
tuesday 00:00-09:00,17:00-24:00
wednesday 00:00-09:00,17:00-24:00
thursday 00:00-09:00,17:00-24:00
friday 00:00-09:00,17:00-24:00
saturday 00:00-24:00
}
# Timeperiode für einen Check, der nur einmal täglich ausgeführt werden soll:
saturday 00:00-24:00
}
# Timeperiode für einen Check, der nur einmal täglich ausgeführt werden soll:
define time period
timeperiod_name daily
alias Einmal am Tag
sunday 17:00-17:05
monday 17:00-17:05
tuesday 17:00-17:05
wednesday 17:00-17:05
thursday 17:00-17:05
friday 17:00-17:05
saturday 17:00-17:05
}
# This one is a favorite: never :)
define time period
timeperiod_name never
alias Never
}
# end of file
Jetzt legen wir uns ein Template für unsere Diskstations an:
Rich (BBCode):
sudo nano /etc/nagios3/synology.cfg
Rich (BBCode):
# Generic host definition template - This is NOT a real host, just a template!
define host{
name synology-server ; The name of this host template
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
check_command check-host-alive
max_check_attempts 10
notification_interval 0
notification_period 24x7
notification_options d,u,r
contact_groups admins
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUS$
}