Schlagwort-Archive: Monitoring

Systemmonitoring mit Icinga (CentOS 7)

Einleitung

Icinga ist eine aus Nagios entstandene Open Source Monitoringlösung. In diesem Beitrag beschreibe ich, wie Icinga unter Centos 7 installiert werden kann. Als Leitfaden nutzte ich die leider nicht mehr ganz aktuelle Dokumentation: Setting up Icinga with IDOUtils on RHEL sowie Installation des Icinga Web Frontend.

Benötigte Pakete

Icinga-Repository einrichten, Apache, PHP, MySQL und Icinga 2 installieren:

rpm --import http://packages.icinga.org/icinga.key
wget http://packages.icinga.org/epel/ICINGA-release.repo -O /etc/yum.repos.d/ICINGA-release.repo
yum makecache

yum install libdbi libdbi-devel libdbi-drivers libdbi-dbd-mysql mariadb

yum search icinga2
yum install icinga2 icinga2-ido-mysql icinga-idoutils-libdbi-mysql

Im Anschluss kann Icinga aktiviert und gestartet werden:

systemctl enable icinga2
systemctl start icinga2

Der Einfachheit halber wird SELinux deaktiviert:

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
reboot

Weiter gehts mit der Konfiguration.

Nagios-Plugins

Icinga nutzt die Nagios-Plugins um Checks durchzuführen.

yum install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
yum update
yum install nagios-plugins-*

Weiter gehts…

Datenbankanbindung

Optional: lokale Datenbank installieren:

# Maria-DB installieren
yum install mariadb-server

# aktivieren
systemctl start mariadb.service
systemctl enable mariadb.service

# Passwort setzen
mysql_secure_installation

Danach kann die Datenbank erstellt werden, alternativ erfolgt dies auf einem dedizierten Datenbankserver.

Zunächst muss hierfür ein Benutzer auf der Datenbank angelegt werden und mit entsprechenden Berechtigungen ausgestattet werden. Im Anschluss können die erforderlichen Tabellen erzeugt werden.

# Connect auf DB (MySQL bzw. MariaDB)
# Hostname des Datenbankservers ist hier dbsrv1
mysql -h dbsrv1 -u root -p

# Datenbank erstellen
CREATE DATABASE icinga;

# Berechtigungen, für Host icinga
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'icinga' IDENTIFIED BY 'icinga';

# bei lokaler DB-Installation stattdessen
# Berechtigungen, für Host icinga
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga';

Import (Achtung, ggf. mit geänderten Pfaden rechnen):

mysql -h dbsrv1 -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Schließlich muss der Datenbankzugriff noch konfiguriert und aktiviert werden. Die Datenbankkonfiguration erfolgt in /etc/icinga2/features-available/ido-mysql.conf wie folgt:

/**
 * The db_ido_mysql library implements IDO functionality
 * for MySQL.
 */

library "db_ido_mysql"

object IdoMysqlConnection "ido-mysql" {
  user = "icinga"
  password = "icinga"
  host = "dbsrv1"
  database = "icinga"
}

Im Anschluss muss Icinga 2 neugestartet werden.

 Icinga Web

Installation von Icinga Web:

yum install httpd php mariadb php-cli php-pear php-xmlrpc php-xsl php-pdo php-ldap php-soap php-gd php-mysql

systemctl start httpd.service
systemctl enable httpd.service

yum install icinga-web icinga-web-mysql

Firewallzugriff (Webserver):

firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Datenbank für Icinga Web vorbereiten:

# DB-Connect
mysql -h dbsrv1 -u root -p

#Datenbank für Icinga Web erstellen
CREATE DATABASE icinga_web;

# Berechtigungen
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga_web.* TO 'icinga_web'@'icinga' IDENTIFIED BY 'icinga_web';

# DB verlassen
quit

# DB vorbereiten
mysql -h dbsrv1 -u root -p icinga_web <  /usr/share/doc/icinga-web-1.11.2/schema/mysql.sql

Host, Benutzername, Passwort, etc. können unter /usr/share/icinga-web/app/config/databases.xml (!!!) angepasst werden. In diesem Beispiel sind Icinga-Installation und Datenbankserver verschiedene Maschinen, daher ist dbsrv1 als Host zu hinterlegen.

Nun, können wir die erste Anmeldung wagen.

 Login

Das Login kann schließlich unter folgender URL erfolgen:

http://<icinga-host>/icinga-web/

Anmelden kann man sich mit root / password. Da dies wohl mehrfach zu Irritationen geführt hat: es ist nicht DAS Passwort für den Benutzer „root“ einzugeben, welches nirgendwo vorher erwähnt wurde. Das Passwort für den Benutzer „root“ lautet „password“.

icinga

Have fun!

Syslog Meldung „mpt-statusd: detected non-optimal RAID status“

Fehlerursache

mpt-statusd liefert den RAID-Status. Bei nicht kompatiblen RAID-Controllern oder auch bei nicht eingerichtetem RAID häufen sich ggf. Meldungen im Syslog:

Nov 20 23:19:44 server mpt-statusd: detected non-optimal RAID status

In diesem Fall kann mpt-statusd abgeschaltet werden.

Behebung

Zunächst den Dienst stoppen:

/etc/init.d/mpt-statusd stop

Entfernen von mpt-statusd aus dem Systemstart:

update-rc.d-insserv -f mpt-statusd remove

Optional kann das Paket noch deinstalliert werden:

apt-get remove --purge mpt-status

Have fun!

Switch Netgear GS108T per SNMP mit Munin monitoren

Vorwort

Im Folgenden wird beschrieben, wie mit Munin Geräte per SNMP überwacht werden können. Im konkreten Fall wird dies an einem Netgear GS108T Switch beschrieben. Die Konfiguration des Switches wird nicht näher beschrieben. SNMP muss natürlich grundsätzlich im Gerät aktiviert sein.

DNS

Das Gerät sollte dringend im DNS registriert sein und aufgelöst werden können. Im Zweifelsfall sollte aber auch ein entsprechender Eintrag in der /etc/hosts genügen. Der nachfolgend verwendete Rechnername ist sw01.

munin-node

Mittels munin-node-configure können Symlinks dargestellt werden, die im Anschluss erstellt werden müssen:

munin-node-configure --suggest --shell --snmp sw01

Eine ähnliche Ausgabe sollte geliefert werden, damit können die symbolischen Links erzeugt werden:

ln -s '/usr/share/munin/plugins/snmp__if_' '/etc/munin/plugins/snmp_sw01_if_1'
ln -s '/usr/share/munin/plugins/snmp__if_' '/etc/munin/plugins/snmp_sw01_if_2'
ln -s '/usr/share/munin/plugins/snmp__if_' '/etc/munin/plugins/snmp_sw01_if_3'
ln -s '/usr/share/munin/plugins/snmp__if_' '/etc/munin/plugins/snmp_sw01_if_4'
ln -s '/usr/share/munin/plugins/snmp__if_' '/etc/munin/plugins/snmp_sw01_if_5'
ln -s '/usr/share/munin/plugins/snmp__if_' '/etc/munin/plugins/snmp_sw01_if_6'
ln -s '/usr/share/munin/plugins/snmp__if_' '/etc/munin/plugins/snmp_sw01_if_7'
ln -s '/usr/share/munin/plugins/snmp__if_' '/etc/munin/plugins/snmp_sw01_if_8'
ln -s '/usr/share/munin/plugins/snmp__if_err_' '/etc/munin/plugins/snmp_sw01_if_err_1'
ln -s '/usr/share/munin/plugins/snmp__if_err_' '/etc/munin/plugins/snmp_sw01_if_err_2'
ln -s '/usr/share/munin/plugins/snmp__if_err_' '/etc/munin/plugins/snmp_sw01_if_err_3'
ln -s '/usr/share/munin/plugins/snmp__if_err_' '/etc/munin/plugins/snmp_sw01_if_err_4'
ln -s '/usr/share/munin/plugins/snmp__if_err_' '/etc/munin/plugins/snmp_sw01_if_err_5'
ln -s '/usr/share/munin/plugins/snmp__if_err_' '/etc/munin/plugins/snmp_sw01_if_err_6'
ln -s '/usr/share/munin/plugins/snmp__if_err_' '/etc/munin/plugins/snmp_sw01_if_err_7'
ln -s '/usr/share/munin/plugins/snmp__if_err_' '/etc/munin/plugins/snmp_sw01_if_err_8'
ln -s '/usr/share/munin/plugins/snmp__if_multi' '/etc/munin/plugins/snmp_sw01_if_multi'
ln -s '/usr/share/munin/plugins/snmp__netstat' '/etc/munin/plugins/snmp_sw01_netstat'
ln -s '/usr/share/munin/plugins/snmp__uptime' '/etc/munin/plugins/snmp_sw01_uptime'

Also: Kopieren und Ausführen!

SNMP-Community und -Version

Ggf. müssen die erstellten Symlinks geprüft werden, hier kann der Community-Name und die Version angepasst werden:

   [snmp_*]
        env.version 2
        env.community public

Dies muss natürlich nicht für jede Schnittstelle sonder nur je Plugin durchgeführt werden, es wurden ja symbolische Links erzeugt.

munin.conf

Der Switch wird als neuer Host in /etc/munin/munin.conf eingetragen:

# bei den Hostdefinitionen ergänzen:

[sw01.krausix.de]
        address 192.168.0.1
        use_node_name yes

Nun kann geprüft werden, ob die Einstellungen erfolgreich waren.

Test

Zunächst munin und munin-node neustarten:

/etc/init.d/munin restart
/etc/init.d/munin-node restart

Nach ca. 5 Minuten, sollten dann entsprechende Grafiken zur Verfügung stehen:

Raspberry Pi in Munin einbinden

Einleitung

Zum Überwachen bzw. zur Darstellung verschiedener Mess- und Zustandsdaten meiner Raspberry Pi nutze ich Munin, da ich dies auch für andere Maschinen bereits seit Jahren einsetze. Die Konfiguration verläuft in zwei Schritten.

Munin-Node

Auf dem Raspberry Pi selbst wird munin-node installiert:

sudo apt-get install munin-node

Anschließend muss es noch so konfiguriert werden, das der Munin Server die Daten abfragen darf, hierzu wird in /etc/munin/munin-node.conf die entsprechende Berechtigung gesetzt:

allow ^10\.10\.10\.10$

Natürlich sollte hier die korrekte IP hinterlegt werden.

Beim Stöbern habe ich hier ein interessantes Plugin gefunden, die Installation wie folgt:

cd /usr/share/munin/plugins/
sudo wget https://raw.githubusercontent.com/perception101/pisense/master/pisense_
sudo chmod 755 /usr/share/munin/plugins/pisense_
sudo chown root:root /usr/share/munin/plugins/pisense_
sudo ln -s /usr/share/munin/plugins/pisense_ /etc/munin/plugins/pisense_clock
sudo ln -s /usr/share/munin/plugins/pisense_ /etc/munin/plugins/pisense_volt
sudo ln -s /usr/share/munin/plugins/pisense_ /etc/munin/plugins/pisense_temp

Danach wird das Plugin in /etc/munin/plugin-conf.d/munin-node aktiviert:

[pisense_*]
user root

Zu guter Letzt muss munin-node noch einmal neugestartet werden, um die Änderungen zu übernehmen:

sudo /etc/init.d/munin-node restart

Danach folgt Schritt zwei, die Einbindung in den Munin Server.

Munin Server

die Einbindung in den Munin Server erfolgt in /etc/munin/munin.conf:

[rpi03.skraus.local]
    address 10.10.10.123
    use_node_name yes

Auch hier ist natürlich auf die korrekte IP des Raspberry Pi zu achten. Nach einem Neustart von Munin einfach einige Minuten warten…