Icinga2 Monitoring mit Icinga Web 2 GUI auf Debian installieren

Aus bknowledgebase
Zur Navigation springen Zur Suche springen

Einleitung[Bearbeiten]

Icinga ist ein "Fork" des berühmten Monitoring Tools Nagios und wird von vielen als inoffizieller Nachfolger gesehen, da die Zukunft der Nagios entwicklung aktuell sehr unsicher ist...

Monitoring bringt viele Unternehmensvorteile, die ich hier nicht alle aufzählen möchte. Abgesehen von der besseren Übersicht für Admins birgt es z.B. auch die Möglichkeit die "Performance" von Systemem und Produkten oder auch Herangehensweisen (änderung auf Agile Entwicklung etc.) zu Messen und somit Quantifizierbar zu machen welches vorgehen, welche Systeme oder welche Technologien signifikante verbesserungen der Stabilität bringen usf.

Hier soll es jedoch erstmal nur um die Installation gehen.

Installation unter Debian[Bearbeiten]

Da ich Debian bevorzuge, hier die Installation unter Debian

Prerequisites[Bearbeiten]

Ich erkläre hier nicht die Installation eine Betriebssystems, gehe also davon aus, das ein aktuelles Debian Betriebssystem installiert ist, eine feste IP Adresse vergeben wurde, das System geupdated ist usf.

also:

apt-get update

Repository hinzufügen[Bearbeiten]

DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \
echo "deb http://packages.icinga.com/debian icinga-${DIST} main" > \
/etc/apt/sources.list.d/${DIST}-icinga.list
echo "deb-src http://packages.icinga.com/debian icinga-${DIST} main" >> \
/etc/apt/sources.list.d/${DIST}-icinga.list

Quelle: https://packages.icinga.com/debian/

Prüfen:

less /etc/apt/sources.list.d/*

Prerequisites installieren[Bearbeiten]

apt-get -y install apt-transport-https wget gnupg

Public Key des Repository hinzufügen[Bearbeiten]

Wenn man jetzt via "apt-get update" auf das neue Repository zugreift bekommt man einen fehler, da Debian nicht weiß ob es vertrauenswürdig ist, deshalb muss noch der Public Key hinzugefügt werden via:

wget -O - http://packages.icinga.com/icinga.key | apt-key add -

Mit:

apt-get update

-> sollten keine Fehler mehr auftreten.

Installation von Icinga[Bearbeiten]

apt-get -y install icinga2

Icinga als Dienst registrieren und starten[Bearbeiten]

systemctl enable icinga2 && systemctl start icinga2

Monitoring Plugins installieren[Bearbeiten]

Damit das System etwas überwachen kann benötigt es die entsprechenden Plugins. (Oft auch "nagios Plugins" genannt.) In Debian:

apt-get install -y monitoring-plugins

Optional: Icinga2 Features hinzufügen/einschalten[Bearbeiten]

1. Icinga Features anzeigen

icinga2 feature list

2. Gewünschte Features aktivieren

icinga2 feature enable <FeatureName>

Syntax Highlighting[Bearbeiten]

Um optimal arbeiten zu können ist Syntax Highlighting empfehlenswert. Das geht sowohl mit Nano als auch mit Vim. Ich arbeite mit Nano, zu Vim einfach mal in die Doku schauen.

apt-get install -y nano-icinga2
cp /etc/nanorc ~/.nanorc 
nano ~/.nanorc

Hier das include Einfügen:

## Icinga 2
include "/usr/share/nano/icinga2.nanorc" 

Speichern und wenn gewünscht testen.

nano /etc/icinga2/conf.d/templates.conf

Datenbank Installieren[Bearbeiten]

Für die Icings Daten und die Monitoring Daten selbst ist eine Datenbank notwendig, die diese Daten aufnimmt. Hier nutzen wir Mariadb. Eine andere Option ist z.B. PostgreSQL.

apt-get install -y mariadb-client mariadb-server
mysql_secure_installation

systemctl enable mariadb && systemctl start mariadb

Datenbank vorbereiten[Bearbeiten]

Die DB kann vorher angelegt werden.
mysql -u root -p
CREATE DATABASE icinga2db;
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga2db.* TO 'icinga2'@'localhost' IDENTIFIED BY 'mypassword';
quit

Icinga DB Schnittstelle (IDO) installieren[Bearbeiten]

IDO ist meines Wissens nach eine Art Schnittstelle zwischen Icinga2 und IcingaWeb2.

apt-get install -y icinga2-ido-mysql

Man kann den Wizard für die Anlage einges Users verwenden, der User heißt dann "Icinga2" :).

IDO Feature aktivieren[Bearbeiten]

icinga2 feature enable ido-mysql && icinga2 feature enable command && systemctl restart icinga2

Webserver Installation[Bearbeiten]

Mögliche Optionen sind hier z.B. Apache und Nginx. Ich arbeite persönlich mit beiden gern, werde für dieses Tutorial aber auf den "Apache Webserver" setzen, da dies nochmal 1-2 Schritte weniger an Konfiguration bedeutet.

apt-get install -y apache2 php

Icinga 2 REST API konfigurieren[Bearbeiten]

Damit wir Icinga WEB 2, also die Web-Gui nutzen können (oder auch andere Adminoberflächen) brauchen wir die REST-API von Icinga.

Deshalb:

icinga2 api setup
systemctl restart icinga2
 

Dann die hierdurch automatisch angelegte Config anpassen. (Hier minimale Rechte die für "Icinga Web 2" notwendig sind. Hier "einfach" eigene Anmeldedaten vergeben"

nano /etc/icinga2/conf.d/api-users.conf
object ApiUser "<icingawebuser>" {
  password = "<zuvorgewähltesPasswort>"
  permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
}
systemctl restart icinga2

Icinga Web 2 installieren[Bearbeiten]

Nun die Management GUI dazu installieren.

Repo & Webserver[Bearbeiten]

Haben wir bereits in den vorherigen Schritten installiert.

Installation[Bearbeiten]

apt-get install -y icingaweb2 icingacli

Config[Bearbeiten]

Token erzeugen[Bearbeiten]

Um Icinga Web 2 zu konfigurieren gibts gleich einen Wizard via Browser. Dieser will dann aber einen "Token" zur Identifikation und diesen muss man sich zunächst erzeugen

icingacli setup token create
icingacli setup token show

Den Token einfach erstmal merken.

Datenbank vorbereiten[Bearbeiten]

Auch das Tool Icinga Web 2 benutzt eine DB. Darum:

mysql -u root -p
CREATE DATABASE icingaweb2db;
GRANT ALL ON icingaweb2db.* TO myicingaweb2user@localhost IDENTIFIED BY 'mypasswd';

Setup Wizard[Bearbeiten]

Via:

http://<Hostname/Websitename>/icingaweb2/setup

den Setup Wizard starten und folgen...

Der Wizard zeigt an, dass ggf. noch Pakete für bestimmte Funktionen nachinstalliert werden müssen.

Ich verwende z.b. noch

apt-get install -y php-gd php-imagick

Dann ggf. noch die gewünschten Mods in der php.ini aktivieren.


Dann die entsprechenden Angaben im Wizard machen, der nun über die WebGUI aufgerufen wird und fertig. Zu beachten ist hier vielleicht nur noch, dass bei den Fragen nach den entsprechenden DBs die zuvor angelegten User und/oder DBs eingegeben werden und dass bei der Frage nach dem IDO-Backend die icinga2 DB angegeben wird.

Optional: Den Icinga "Director" Installieren[Bearbeiten]

Der Icinga Director ist ein hilfreiches und ziemlich mächtiges Tool um neue Services, Hosts etc. via WEB-GUI zu konfigurieren. Ich finde dieses Tool recht hilfreich und es wird folgendermaßen hinzugefügt.

director DB anlegen[Bearbeiten]

Natürlich Passwort anpassen bei:

mysql -e "CREATE DATABASE director CHARACTER SET 'utf8';
   CREATE USER director@localhost IDENTIFIED BY 'meinpasswort';
   GRANT ALL ON director.* TO director@localhost;"

Icinga Modul installieren[Bearbeiten]

ICINGAWEB_MODULEPATH="/usr/share/icingaweb2/modules"
REPO_URL="https://github.com/icinga/icingaweb2-module-director"
TARGET_DIR="${ICINGAWEB_MODULEPATH}/director"
MODULE_VERSION="1.7.2"
URL="${REPO_URL}/archive/v${MODULE_VERSION}.tar.gz"
install -d -m 0755 "${TARGET_DIR}"
wget -q -O - "$URL" | tar xfz - -C "${TARGET_DIR}" --strip-components 1

Weitere Module / Prerequisites für "director"[Bearbeiten]

IPL-Modul[Bearbeiten]

MODULE_NAME=ipl
MODULE_VERSION=v0.5.0
MODULES_PATH="/usr/share/icingaweb2/modules"
MODULE_PATH="${MODULES_PATH}/${MODULE_NAME}"
RELEASES="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}/archive"
mkdir "$MODULE_PATH" \
&& wget -q $RELEASES/${MODULE_VERSION}.tar.gz -O - \
   | tar xfz - -C "$MODULE_PATH" --strip-components 1
icingacli module enable "${MODULE_NAME}"

incubator-Modul[Bearbeiten]

MODULE_NAME=incubator
MODULE_VERSION=v0.5.0
MODULES_PATH="/usr/share/icingaweb2/modules"
MODULE_PATH="${MODULES_PATH}/${MODULE_NAME}"
RELEASES="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}/archive"
mkdir "$MODULE_PATH" \
&& wget -q $RELEASES/${MODULE_VERSION}.tar.gz -O - \
   | tar xfz - -C "$MODULE_PATH" --strip-components 1
icingacli module enable "${MODULE_NAME}"


reactbundle-Modul[Bearbeiten]

MODULE_NAME=reactbundle
MODULE_VERSION=v0.7.0
MODULES_PATH="/usr/share/icingaweb2/modules"
MODULE_PATH="${MODULES_PATH}/${MODULE_NAME}"
RELEASES="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}/archive"
mkdir "$MODULE_PATH" \
&& wget -q $RELEASES/${MODULE_VERSION}.tar.gz -O - \
   | tar xfz - -C "$MODULE_PATH" --strip-components 1
icingacli module enable "${MODULE_NAME}"

Director Modul einschalten[Bearbeiten]

icingacli module enable director

bei Hinweise wegen der dependencies muss man eben nochmal genau die Module prüfen und ggf. die hier angegebenen Versionsnummern ändern und das entsprechende modul nochmal in der richtigen version installieren und aktivieren.

Director via Wizard konfigurieren[Bearbeiten]

1. Noch vor dem Wizard zunächst in der IcingaWeb2 GUI unter "konfiguration->Anwendung->Ressourcen" eine neue Ressource anlegen und die zuvor angelegte DB als Ressource z.B. mit namen "director" anlegen.

2. Dann via WebGUI den Director aufrufen, dort werden ggf. aufgetretene Fehler auch nochmal angezeigt, das hilft bei der Fehlerbeseitigung. Dann wird hier auch nach der Ressource gefragt die genutzt werden soll.

3. Weiterhin kann man schließlich noch den Director als Hintergrunddienst einrichten, die Anleitung ist aber nur Copy&Paste von der Website von Icinga2.

4. Jetzt kann man loslegen Die entsprechenden Service-Templates, Service-Sets, Host Templates, Hosts usf. anzulegen.


viel Spass & H@ppy H@cking