Meine kleine HowTo Ecke
Meine kleine HowTo Ecke

Icinga2 – Installation

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert