Archiv der Kategorie: Linux Howto

THINK UNBLOG GNU/Linux Knowledge Network for Tutorials, Howto’s, Workaround, DevOps Code for Professionals.

Nagios Monitoring mit Raspberry Pi

Nagios Installation auf Raspberry Pi

Nagios Open Source Monitoring für die Überwachung komplexer IT-Infrastrukturen.

Nagios besteht aus einer Sammlung von Modulen zur Überwachung von Netzwerken, von Hosts und deren spezifischen Diensten, sowie ein Webinterface um Abfragen der gesammelten Daten darzustellen. Nagios steht unter der GNU GPL, ist also freie Software und läuft unter zahlreicher Unixoiden Betriebssysteme. Nagios ist wegen seiner großen Verbreitung auch im professionellen Einsatz ein Quasi-Standard geworden.

Nagios-Überwachung mit Raspberry

Raspberry Pi mit seinem lüfterlosen Design, den minimalen Ausmaßen und seinem geringen Stromverbrauch eignet sich der Raspberry Pi als Einplatinen-Computer hervorragend für einen Nagios-Monitoring-Server, der sich sogar selbst überwachen kann.

INSTALLATION

Die Installation von Nagios Core 4 auf dem Raspberry eigenen OS Raspbian, welches auf Debian basiert, ist unspektakulär. Hier in dieser Anleitung wird die Vorgehensweise für ein Raspberry Pi 3 Model B aufgezeigt, auf einer 32 GB microSD Card Typ Class 10, eine 16 GB microSD Card würde ebenfalls genügen.

Raspbian Terminal

SanDisk Ultra SDHC I 16 GB bis zu 80 /Sek, Class 10 Speicherkarte.

Zur Bereitstellung von Raspbian auf einer microSD Card wird hier nicht näher eingegangen. Nach boot eines Raspbian Desktop Image, wird das LXTerminal auf dem Raspbian X-Desktop geöffnet und die root shell gestartet, bei Headless Betrieb kann mit VNCViewer eine VNC Session gestartet werden, mit der Anmeldung als Benutzer pi und dem default Passwort raspberry. Möchte man das Raspbian Minimal Image einsetzen, bietet sich die Authentifizierung über SSH zum Raspberry Pi an.

Raspbian VNCViewer

Nach der Anmeldung als User pi wollen wir root werden.

pi@raspberrypi:~ $ sudo su

Zunächst werden alle benötigten Pakete als Voraussetzung aus dem Repository installiert.

$ apt-get update
$ apt-get install -y autoconf gcc libc6 make wget unzip apache2 apache2-utils php5 libgd2-xpm-dev

Herunterladen und entpacken der Nagios Core 4 Source Pakete. Hier findet man das letzte Release, auf Github steht das Core Release sowie die Agenten und Plugins zur Verfügung.

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

Compilieren

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

Erstellen des Benutzer nagios und der Gruppe. Der Apache-Benutzer www-data wird auch der nagios-Gruppe hinzugefügt.

$ useradd nagios
$ usermod -a -G nagios www-data

Die Binaries Installieren.

$ make install

Das Installieren der Service-Daemon-Dateien und das konfigurieren für den Bootvorgang.

$ make install-init
$ systemctl enable nagios.service

Installiert und konfiguriert die externe Befehlsdatei.

$ make install-commandmode

Nun werden die * SAMPLE * Konfigurationsdateien installiert. Diese sind erforderlich, da Nagios um zu starten einige Konfigurationsdateien benötigt.

$ make install-config

Es werden die Apache-Webserver-Konfigurationsdateien installiert und die Apache-Einstellungen für Nagios konfiguriert.

$ make install-webconf
$ a2enmod rewrite
$ a2enmod cgi

Es muss Port 80 für den eingehenden Datenverkehr auf der lokalen Firewall zugelassen werden, damit die Webschnittstelle von Nagios Core erreicht werden kann.

$ iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
$ apt-get install -y iptables-persistent

Antworte mit ja, um die bestehenden Regeln zu speichern.

Es wird ein Apache-Benutzerkonto erstellt, damit es diesem ermöglicht wird sich bei Nagios anmelden zu können.

Der folgende Befehl erstellt ein Benutzerkonto namens nagiosadmin und es wird ein Passwort für das Konto erstellt, dieses Passwort jetzt sich merken.

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

Es muss der Apache Webserver neu gestartet werden.

$ systemctl restart apache2.service

Nun wird Nagios Core gestartet.

$ systemctl start nagios.service

Nagios ist jetzt bereit und kann getestet werden.

https://10.10.10.84/nagios/

Es kommt die Aufforderung sich mit Benutzernamen und Passwort anzumelden. Der Benutzername ist nagiosadmin (du hast ihn in einem vorherigen Schritt erstellt) und das Passwort ist das, was du zuvor angegeben hast.

Nach erfolgreicher Anmeldung erscheint die Nagios Core Web-Oberfläche. Herzlichen Glückwunsch, Du hast es geschafft.

Nagios Core ist nun installiert, zum Betrieb werden noch die Nagios Plugins benötigt. Es erscheint die Fehler Meldung: (No output on stdout) stderr: execvp(/usr/local/nagios/libexec/check_load .. das ist normal, in den folgenden Schritten werden die Standard Plugins installiert.

Plugin Installation

Zur Voraussetzung der Installation der Plugins werden folgende Pakete aus dem Repository installiert.

$ apt-get install -y autoconf gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext

Die Source Pakete herunterladen und entpacken. Auf nagios-plugins.org sind die letzten Plugin Release.

$ 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

Pakete compilieren und installieren.

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

Gehe zu einem Host- oder Service Objekt und „Re-schedule the next check“ im Menü Commands. Der Fehler der zuvor erschien, sollte nun verschwinden und die korrekte Ausgabe wird auf dem Bildschirm angezeigt.

Die Daemon Kommandos für start / stop / restart / status.

$ systemctl start nagios.service
$ systemctl stop nagios.service
$ systemctl restart nagios.service
$ systemctl status nagios.service

Nagios Konfiguration

Nachdem nun der Nagios Core Server betriebsbereit ist, geht es an das erstellen der Konfiguration der Host und Services die Überwacht werden sollen. Unter /usr/local/nagios/etc ist die Hauptkonfiguration nagios.cfg, hier werden mit cfg_file die Pfade zu den Konfigurationsdateien definiert, in einer Datei hosts.cfg können die zu überwachenden hosts eingetragen werden.

## Default Linux Host Template ##
define host{
name                            linux-box               ; Name of this template
use                             generic-host            ; Inherit default values
check_period                    24x7
check_interval                  5
retry_interval                  1
max_check_attempts              10
check_command                   check-host-alive
notification_period             24x7
notification_interval           30
notification_options            d,r
contact_groups                  admins
register                        0                       ; DONT REGISTER THIS - ITS A TEMPLATE
}
## Default
define host{
use                             linux-box               ; Inherit default values from a template
host_name                       Diskstation             ; The name we're giving to this server
alias                           Synology                ; A longer name for the server
address                         10.10.10.88             ; IP address of Remote Linux host
}

Soll es mehr strukturiert sein bietet sich die Möglichkeit die Host und Service Konfiguration in die Verzeichnisse printers, routers, servers, switches zu speichern, hierzu wird die Datei nagios.cfg editiert und die Kommentar Zeichen # (hash) entsprechend bei cfg_dir= entfernt.

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

Es werden die in den Verzeichnissen angelegten .cfg Dateien ausgelesen.

Beispiel für ein Mail und Webserver bei diesem IMAP und HTTPS überprüft wird.

define host {
        use                             linux-server
        host_name                       mailserver
        alias                           Exchange
        address                         10.10.10.15
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}

define service {
        use                             generic-service
        host_name                       mailserver
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
}

define service {
        use                             generic-service
        host_name                       mailserver
        service_description             HTTPS
        check_command                   check_tcp!443 -H 10.10.10.15 -u https://owa.banana.org
        notifications_enabled           0
}

define service {
        use                             generic-service
        host_name                       mailserver
        service_description             IMAP
        check_command                   check_imap
        notifications_enabled           0
}

Nach jeder Änderung wird der Nagios Server neu gestartet.

$ systemctl restart nagios.service

Ein blick in die Nagios-Log Datei kann sich lohnen.

$ tail -30 /usr/local/nagios/var/nagios.log

Unter dem Verzeichnis objects findet man weitere Konfigurationsbeispiele für Linux, Windows, Printer Router und Switch.

nagios check dns
Beispiel: Nagios Service Konfiguration

Mit Remote Agenten wie NCPA können Active Checks auf Windows und Linux Hosts ausgeführt werden, über NRDP und NRPE sind Passive Checks möglich, die werte über CPU last, Memory Nutzung, Prozesse, User und Disk Nutzung geben.

Nagios Notification

In der Datei nagios.cfg und in der Datei objects/contacts.cfg wird als Email Empfänger bei email hier in diesem Beispiel root@localhost belassen.

$ vi /usr/local/nagios/etc/objects/contacts.cfg

define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact$
        alias                           Nagios Admin            ; Full name of user

        email                           root@localhost          ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS *$
        }

In der Datei nagios.cfg bei admin_email.

$ vi /usr/local/nagios/etc/nagios.cfg
..
admin_email=root@localhost

Für die Nagios Email Notification wird hier Postfix als Mail Transport Agent verwendet. Dies wie folgt installiert und konfiguriert wird.

$ sudo apt-get -y install postfix

Während der Installation wird man zur Auswahl einer MailServer Konfiguration gefragt, hier wählen wir Internet Site.

Um das senden von Email später testen zu können, wird das Paket mailutils installiert.

$ sudo apt-get -y install mailutils

Die Postfix Hauptkonfiguration main.cf wird angepasst.

$ vi /etc/postfix/main.cf
..
relayhost = mailserver.banana.org

Bei relayhost wird der MailServer eingetragen dieser von Raspberry Pi erlaubt Emails zu empfangen, ist das Raspberry hinter einer Firewall mit NAT, muss beim MailServer die öffentliche IP Adresse für den Empfang berechtigt werden.

Eine Email Adresse für root einrichten, dazu wird die Datei aliases editiert.

$ vi /etc/aliases
..
root:  helpdesk@banana.org

Es wird am ende eine gültige Email Adresse eingetragen, damit Mails von diesem Host zugestellt werden, hier als Beispiel ist es helpdesk@banana.org, der Doppelpunkt bei root: ist zwingend.

Die Änderungen in der Datei aliases müssen noch die Datei aliases.db erzeugen.

$ newaliases

Auch die Postfix Konfiguration muss noch eingelesen und aktiviert werden.

$ postfix reload

jetzt den Email Versand von Raspberry Pi testen, dies lässt sich wie folgt ausführen.

$ echo "hello from raspberry pi" | mail -s hello root

Das Email sollte nun im Posteingang von helpdesk@banana.org ankommen sein.

Hier kann auch das Email Log-Protokoll weiter Aufschluss geben.

$ tail /var/log/mail.log

Gibt der Sendeversuch den status=bounced zurück, ist der Empfang auf dem Mailer noch nicht berechtigt. Bei Exchange muss die IP Adresse des Raspberry Pi beim Empfangsconnector im FrontendTransport unter Bereichsdefinition bei E-Mail von Servern mit diesen Remote-IP-Adressen empfangen, eingetragen sein. Für Postfix muss in main.cf eine smtpd_client_restrictions direktive existieren.

smtpd_client_restrictions =
smtpd_recipient_restrictions =
        check_client_access hash:/etc/postfix/client_access,

Die Datei client_access beinhaltet die IP Adresse des Raspberry Pi.

# Raspberry Pi Nagios
10.10.10.84    ok

Die Postfix Datenbank muss noch generiert werden.

$ postmap /etc/postfix/client_access

Werden die SMTP Anfragen vom Mailer akzeptiert, kann der Queue Prozess und die Zustellung erfolgen.

Googler Search Linux

Googler ist ein Befehlszeilentool zum Durchsuchen von Google (Web & News) vom Linux Terminal aus.

Google-Suche ist die am meisten verwendete Suchmaschine im World Wide Web ( WWW ), um Informationen von Millionen von Servern im Internet zu sammeln.

Viele nutzen hauptsächlich die Google-Suche über ein grafischen Webbrowser. Für die Kommandozeilen-Geeks die Aufgaben im Terminal bewältigen möchten, war der Zugriff auf die Google-Suche bis anhin nicht möglich, mit dem Befehlszeilen-Tool Googler ist dies nun möglich.

Googler von Arun Prakash Jana, ist ein leistungsstarkes Kommandozeilen-Tool auf der Basis von Python, für den Zugriff auf Google (Web & News) und die Google-Site-Suche im Linux-Terminal. Googler ist für die Script Verarbeitung und Automatisation vielseitig einsetzbar.

Installation Googler Search auf Linux

Die Googler Search Installation auf Ubuntu Linux kann direkt aus dem Repository gemacht werden.

sudo add-apt-repository ppa:twodopeshaggy/jarun
sudo apt-get update
sudo apt-get install googler

Eine andere alternative um die neuste Googler Search Version Installation auf Ubuntu Linux, hier herunterladen und installieren.

cd /tmp
wget -c https://github.com/jarun/googler/archive/v3.3.tar.gz
tar -xzvf v3.3.tar.gz
cd googler-3.3
sudo make install 
cd auto-completion/bash/
sudo cp googler-completion.bash /etc/bash_completion.d/

Python 3 ist erforderlich um googler nutzen zu können. Auf Ubuntu 16.04 ist Python per Standard installiert, ansonsten wird Python 3 wie folgt installiert.

sudo apt-get install -y python3-pip
sudo apt-get install build-essential libssl-dev libffi-dev python-dev

Python Version überprüfen.

python3 -V

Python 3 und Googler Installation für CentOS.

yum install yum-utils
yum-builddep python
cd /tmp
curl -O https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
tar -xzf Python-3.6.1.tgz
cd Python-3.6.1
./configure
make
make install
sudo curl -o /usr/local/bin/googler https://raw.githubusercontent.com/jarun/googler/v3.3/googler && sudo chmod +x /usr/local/bin/googler

Die Google Suche aus dem Linux Terminal.
$ googler -n 5 mojito recipe to self made

Googler Search Install Linux

Der omniprompt dient zur Eingabe von optionen.
Ein ? gibt hilfe aus, mit n geht es zur nächsten Seite.

Features

 * Google Search, Google Site Search, Google News
 * Fast and clean (no ads, stray URLs or clutter), custom color
 * Navigate result pages from omniprompt, open URLs in browser
 * Effortless keyword-based site search with googler @t add-on
 * Search and option completion scripts for Bash, Zsh and Fish
 * Fetch n results in a go, start at the n<sup>th</sup> result
 * Disable automatic spelling correction and search exact keywords
 * Specify duration, country/domain (default: worldwide/.com), language
 * Google keywords (e.g. filetype:mime, site:somesite.com) support
 * Open the first result directly in browser (as in I'm Feeling Lucky)
 * Non-stop searches: fire new searches at omniprompt without exiting
 * HTTPS proxy, User Agent, TLS 1.2 (default) support
 * Comprehensive documentation, man page with handy usage examples
 * Minimal dependencies

Anmerkung

Googler ist ein Befehlszeilentool zum Durchsuchen von Google (Web & News) vom Terminal aus. Google Search Seiten Suche funktioniert auch im Linux Terminal. Googler zeigt für jedes Ergebnis den Titel, die URL und den Textkontext an. Die Ergebnisse werden seitenweise abgerufen. Mithilfe von Tastaturkürzeln ist die Navigation zur nächsten oder vorherigen Seite möglich. Die Ergebnisse werden indiziert und eine Ergebnis-URL kann mithilfe der Indexnummer in einem Browser geöffnet werden. Es gibt keine Konfigurationsdatei als Aliase dienen bei diesem Dienstprogramm demselben Zweck. Unterstützt sequentielle Suchvorgänge in einer einzelnen Instanz.