Inhalte
In der folgenden Anleitung wird ein Icinga2 Server mit dem Webinterface Icingaweb2 installiert.
Das ganze läuft auf einem Ubuntu 18.04 Server.
Vorbereitungen
Zuerst sollten die Distibution aufn den aktuellen Stand gebracht werden.
sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove
Im Anschluss wird das offizielle Icinga Repository zu unseren Paketquellen hinzugefügt.
http://packages.icinga.com/ubuntu/
wget -O - https://packages.icinga.com/icinga.key | sudo apt-key add - . /etc/os-release; if [ ! -z ${UBUNTU_CODENAME+x} ]; then DIST="${UBUNTU_CODENAME}"; else DIST="$(lsb_release -c| awk '{print $2}')"; fi; echo "deb http://packages.icinga.com/ubuntu icinga-${DIST} main" > /etc/apt/sources.list.d/${DIST}-icinga.list echo "deb-src http://packages.icinga.com/ubuntu icinga-${DIST} main" >> /etc/apt/sources.list.d/${DIST}-icinga.list sudo apt-get update
Für Debian:
http://packages.icinga.com/debian/
wget -O - https://packages.icinga.com/icinga.key | sudo apt-key add - 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 sudo apt-get update
Damit sind die Vorbereitungen getroffen und die eigentliche Installation kann beginnen.
Installation
Den Anfang macht der MySQL Server wir nehmen hier die „kleine“ Schwester MariaDB, den brauchen wir um später unsere Historie der Check-Ergebnisse sowie die Konfiguration in einer Datenbank zu speichern.
sudo apt-get install mariadb-server
nun wird die Datenbank etwas gehärtet:
sudo /usr/bin/mysql_secure_installation
- Enter current password for root (enter for none): ENTER
- Change the root password? [Y/n] Y
- Hier geben wir ein sicheres Passwort für den MySQL-Benutzer „root“ ein z.B. 5Up3R$3cUr3 (nicht nehmen!)
- Remove anonymous users? [Y/n] Y
- Disallow root login remotely? [Y/n] Y
- Remove test database and access to it? [Y/n] Y
- Reload privilege tables now? [Y/n] Y
Im Anschluss können wir den Icinga2 Server installieren:
sudo apt-get install icinga2 icinga2-ido-mysql
Die Frage ob unser Icinga2 Server MySQL verwenden soll können wir mir „JA“ beantworten.
Als nächstes wird gefragt ob wir die Icinga Datenbank automatisch konfigurieren lassen wollen, dies Beantworten wir mit „NEIN“ .
Konfiguration
Wir benötigen nun einen MySQL User der der Icinga2 Server verwenden wird. Der Einfachheit halber belasse ich es hier bei dem Benutzernamen „icinga2“ und dem Passwort „icinga2pw“ , du solltest natürlich etwas kreativer sein und sichere Passwörter verwenden!
sudo mysql -u root -p
Das oben gewählte Passwort eingeben, in meinem Fall: 5Up3R$3cUr3
CREATE DATABASE icinga2; GRANT ALL PRIVILEGES ON icinga2.* TO 'icinga2'@'localhost' IDENTIFIED BY 'icinga2pw'; FLUSH PRIVILEGES; EXIT
Die Credentials des gerade angelegten Users müssen wir nun noch dem Icinga Server nennen.
sudo nano /etc/icinga2/features-available/ido-mysql.conf
Der Inhalt dieser Datei sollte mit unseren Änderungen nun so aus sehen:
/** * The db_ido_mysql library implements IDO functionality * for MySQL. */ library "db_ido_mysql" object IdoMysqlConnection "ido-mysql" { user = "icinga2", password = "icinga2pw", host = "localhost", database = "icinga2" }
danach wird die Icinga2 Datenbank-Struktur erstellt:
sudo mysql -u icinga2 -D icinga2 -p < /usr/share/icinga2-ido-mysql/schema/mysql.sql
-u: Name des MySQL Benutzers
-D: Datenbank die Verwendet werden soll
Als Passwort wird „icinga2pw“ eingegeben.
Damit Icinga nun auch die Datenbank nutzt müssen wir das Feature aktivieren:
sudo icinga2 feature enable ido-mysql command
eine Übersicht was aktuell schon aktiviert ist liefert der folgende Befehl:
sudo icinga2 feature list
nun sollten wir folgendes sehen:
Disabled features: api compatlog debuglog elasticsearch gelf graphite influxdb livestatus opentsdb perfdata statusdata syslog Enabled features: checker command ido-mysql mainlog notification
Damit die Änderungen wirksam werden starten wir den Icinga2 Dienst neu:
sudo service icinga2 restart
Installation von Icingaweb2
sudo apt-get install icingaweb2 libapache2-mod-php7.2 php7.2-gd php7.2-intl php7.2-xml php-imagick
Das Icingaweb2 nutzt eine eigene Datenbank die wir manuell anlegen müssen
sudo mysql -u root -p
CREATE DATABASE icingaweb2; GRANT ALL PRIVILEGES ON icingaweb2.* TO 'icingaweb2'@'localhost' IDENTIFIED BY 'icingaweb2-passwort'; FLUSH PRIVILEGES; EXIT
Beim Aufrufen des Icingaweb2 Webinterface (http://SERVER-IP-ODER-NAME/icingaweb2) kommt eine Fehlermeldung, dass diese noch nicht konfiguriert sei. Dies beheben wir indem wir das Icingaweb2 Setup starten: http://SERVER-IP-ODER-NAME/icingaweb2/setup
zuerst müssen wir einen Security Token erstellen, da wir bei der Installation das Feature „Command“ aktiviert haben können wir folgende Befehle nutzen:
sudo icingacli setup config directory --group icingaweb2; sudo icingacli setup token create;
Das ausgegebene Token wird unter Einrichtungstoken eingetragen:
Auf der Modules Seiten wählen wir zusätzlich noch „Doc“ aus.
In der nächsten Übersicht sehen wir ob alle nötigen Abhängigkeiten erfüllt werden.
Bei mir ist die PHP-Einstellung „date.timezone“ nicht definiert, dies beheben wir noch eben.
sudo nano /etc/php/7.2/apache2/php.ini
Folgende Stelle finden (STRG+W -> date.timezone -> ENTER):
[Date] ; Defines the default timezone used by the date functions ; http://php.net/ddate.timezone ;date.timezone =
und editieren:
[Date] ; Defines the default timezone used by the date functions ; http://php.net/ddate.timezone date.timezone = "Europe/Berlin"
im Anschluss muss der Apache Webserver neugestartet werden
sudo service apache2 restart
Nach dem aktualisieren der Systemvoraussetzungen-Seite von Icingaweb2 sollte dieser Fehler nun verschwinden sein. Die gelben Warnungen über PDO-PostfreSQL können wir ignorieren, da wir MySQL als Datenbank nutzen.
Auf der Seite Authentifizierung wählen wir „Datenbank“ aus und editieren die Datenbank-Ressource eine Seite weiter.
Datenbankname: icingaweb2
Benutzername: icingaweb2
Kennwort: icingaweb2-passwort
Den Voreingestellten Backend-Name können wir so belassen.
Nun erstellen wir noch unseren ersten Icingaweb2 Administrator-Nutzer
Die Konfiguration der Anwendung belassen wir beim Standard.
Fast fertig! Wir bekommen eine Übersicht der Icingaweb2 Konfiguration die wir uns irgendwo abspeichern können.
Im Anschluss konfigurieren wir noch die Icinga-Ressouce auf die das Webinterface schauen soll (das ist die Datenbank vom Icinga2 Server).
Datenbankname: icinga2
Benutzername: icinga2
Kennwort: icinga2pw
Beim Befehlstransport wählen wir „Lokale Befehlsdatei“ aus.
Die Seite Monitoring-Sicherheit kann so gelassen werden.
Zuletzt gibt es erneut eine Übersichtsseite zur Backend-Konfiguration.