Icinga2, Icinga Web 2 und Icinga Director unter EL7 installieren

Download PDF

Mit Icinga2 gibt es ein sehr leistungsfähiges Monitoring-System, welches optional auch mit der taufrischen Web-Oberfläche Icinga Web 2 benutzt werden kann. Gegenüber Icinga 1.x handelt es sich hier jeweils um komplette Neuentwicklungen, die nichts mehr mit dem veralteten Software-Kern zu tun haben.

Dieses Jahr wurde mit Icinga Director ein Konfigurationswerkzeug für Icinga2 vorgestellt. Es kann dazu verwendet werden, den gesamten Icinga2-Stack zu konfigurieren. Auch eine Integration in Configuration Management- und CMDB-Systeme ist möglich.

Dieser Artikel beschreibt die Grundinstallation eines Icinga2-Systems mit der Icinga Web 2-Oberfläche und dem zusätzlichen Icinga Director-Modul.

Installation

LVM-Vorbereitung

Ich persönlich lege die Daten der MySQL-Datenbank gerne in Kombination mit LVM auf eine dedizierte Festplatte. Die folgenden Befehle lagern das Verzeichnis /var/lib/mysql entsprechend aus:

# pvcreate /dev/sdb
# vgcreate vg_data /dev/sdb
# lvcreate --name lv_mariadb --size 9G vg_data
# mkfs.ext4 /dev/mapper/vg_data-lv_mariadb
# vi /etc/fstab
...
/dev/mapper/vg_data-lv_mariadb /var/lib/mysql   ext4   defaults   1 2

ESC ZZ

# mkdir /var/lib/mysql ; mount -a
# restorecon -v /var/lib/mysql
restorecon reset /var/lib/mysql context system_u:object_r:unlabeled_t:s0->system_u:object_r:mysqld_db_t:s0

Paket-Installation

Die Installation der benötigten Pakete erfolgt mit YUM – zuvor muss noch das EPEL-Repository eingebunden werden:

# yum install icinga{,web}2 icinga2-ido-mysql mariadb-server mysql nagios-plugins-all icingacli php-ldap

Datenbank

Anschließend werden der Apache-Webserver und die MariaDB-Datenbank für Autostart konfiguriert und gestartet. Bei dieser Gelegenheit empfiehlt es sich auch, mittels mysql_secure_installation ein Root-Passwort für die Datenbank zu vergeben und nicht benötigte Testdaten zu entfernen:

# systemctl enable httpd; systemctl start httpd
# systemctl enable mariadb ; systemctl start mariadb
# mysql_secure_installation
Set root password? [Y/n] Y
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

Anschließend werden dedizierte Datenbanken für Icinga und die Benutzerauthentifizierung erstellt:

# mysql -u root -p
mysql> CREATE DATABASE `icinga`;
mysql> CREATE DATABASE `icinga-auth`;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON `icinga`.* TO 'icinga'@'localhost' IDENTIFIED BY '...';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON `icinga-auth`.* TO 'icinga'@'localhost' IDENTIFIED BY '...';
mysql> FLUSH PRIVILEGES;

Danach wird die Icinga-Datenbank mit dem benötigten Schema versehen:

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

Features

Icinga2 ist modular aufgebaut und lagert Funktionalitäten in Feature-Modulen aus – diese lassen sich gesondert aktivieren. Zur Steuerung dieses Verhaltens dient das folgende Kommando:

# icinga2 feature list
Disabled features: command compatlog debuglog gelf graphite icingastatus ido-mysql livestatus opentsdb perfdata statusdata syslog
Enabled features: api checker mainlog notification

Das Kommando listet verfügbare und aktivierte Features auf. Von den verfügbaren Features aktivieren wir:

  • ido-mysql – MySQL-Datenbank-Broker, speichert Status-Informationen in Datenbank; wird für Icinga Web 2 benötigt
  • perfdata – Erfasst Performance-Daten (z.B. Geschwindigkeit von HTTP-Requests) von überwachten Diensten, sofern vorhanden
  • command – ermöglicht externe Kommandos, für die altbekannten Nagios-Plugins benötigt

Nach Aktivierung von Features muss Icinga2 prinzipiell neu gestartet werden.

# icinga2 feature enable ido-mysql
# icinga2 feature enable perfdata
# icinga2 feature enable command

Bevor Icinga2 nun zum ersten Mal gestartet wird, wird die Konfiguration des IDO-Brokers angepasst. Es werden die Benutzerinformationen der Icinga-Datenbank angegeben:

# vi /etc/icinga2/features-available/ido-mysql.conf
library "db_ido_mysql"

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

Noch ein Punkt zur Übersichtlichkeit – ich habe es mir angewöhnt, für eigene Konfigurationen eigene Unterordner zu pflegen. Icinga2 legt sämtliche Konfigurationsdateien unterhalb /etc/icinga2/conf.d ab. Bei größeren Installationen kann es durchaus Sinn machen, seine eigenen Hosts/Checks/Kommandos in einem eigenen Ordner zusammenzufassen – dieser muss dann allerdings dem Icinga-Benutzer gehören, damit sie eingelesen werden können:

# mkdir /etc/icinga2/conf.d/stankowic.d
# chown icinga: /etc/icinga2/conf.d/stankowic.d

Anschließend kann Icinga2 gestartet und für Autostart konfiguriert werden:

# systemctl enable icinga2 ; systemctl start icinga2

Sofern SELinux zum Einsatz kommt, empfiehlt es sich die entsprechenden Module zu erstellen und einzubinden:

# yum install icinga2-selinux selinux-policy-devel
# /usr/share/doc/icinga2-selinux-*/icinga2.sh

Icinga Web 2

Bevor Icinga Web 2 installiert werden kann, muss in der PHP-Konfiguration die Zeitzone eingetragen werden, beispielsweise für Deutschland:

# cp /etc/php.ini /etc/php.ini.initial
# vi +/date.timezone /etc/php.ini
...
date.timezone = Europe/Berlin

ESC ZZ
# systemctl restart httpd

Anschließend muss ein SELinux-Flag aktiviert und der Apache-Benutzer der icingacmd-Gruppe hinzugefügt werden, damit Icinga2 ferngesteuert werden kann:

# setsebool -P httpd_unified 1
# usermod -a -G icingacmd apache

Um die Installation zu starten, muss ein Installationstoken erstellt werden. Dieses wird im Installationsassistenten eingegeben. Der Assistent ist über die URL http://meinServer/icingaweb2/setup erreichbar:

# icingacli setup config directory --group icingaweb2
# icingacli setup token create
The newly generated setup token is: 95f454f8bde828a3

Der Installationsassistent ist weitestgehend selbsterklärend und führt die folgenden Schritte aus:

  1. Auswahl der Authentifizierungsquelle (Datenbank bzw. LDAP)
  2. Auswahl und Konfiguration der Datenbank-Resource
  3. Erstellen eines Administrators
  4. Konfiguration des Loggings
  5. Konfigurieren des IDO-Brokers

Anbei einige Screenshots meiner Installation:

Icinga Director

Der Icinga Director steht auf GitHub zum Download bereit. Der Quellcode wird unterhalb des Verzeichnisses /usr/share/icingaweb2/modules entpackt. Wichtig ist, dass der Ordnername des heruntergeladenen Archivs auf director geändert wird – ansonsten funktioniert das Modul nicht:

# cd /usr/share/icingaweb2/modules
# wget https://github.com/Icinga/icingaweb2-module-director/archive/master.zip
# unzip master.zip
# mv icingaweb2-module-director-master director
# restorecon -R director

Vor Inbetriebnahme des Moduls, wird eine dedizierte Datenbank inklusive Benutzer angelegt. Ein entsprechendes Datenbank-Schema muss noch importiert werden:

# mysql -u root -p
mysql> CREATE DATABASE director CHARACTER SET 'utf8';
mysql> GRANT ALL ON director.* TO 'director'@'localhost' IDENTIFIED BY '...';
mysql> FLUSH PRIVILEGES;
# mysql -u root -p director < /usr/share/icingaweb2/modules/director/schema/mysql.sql

Icinga Director verwendet die Icinga2 API-Feature, welches noch aktiviert werden muss. Hierbei werden Zertifikate erstellt, mit welchem sich externe Anwendungen, wie der Icinga Director, an einer Icinga2-Instanz anmelden:

# setsebool -P httpd_can_network_connect 1
# icinga2 api setup

Für den Director gilt es einen API-Benutzer mit vollen Berechtigungen anzulegen, da dieser auch die Konfiguration des Dienstes anpassen können muss (wir erinnern uns, der Director dient zur vollständigen Konfiguration von Icinga2):

# vi /etc/icinga2/conf.d/api-users.conf
...
object ApiUser "director" {
        password = "xxx"
        permissions = [ "*" ]
}

ESC ZZ

Anschließend muss in der Firewall der TCP-Port 5665 freigeschaltet und Icinga2 neu gestartet werden:

# system-config-firewall-tui
# systemctl restart icinga2

Innerhalb der Web-Oberfläche von Icinga2 kann nun das Modul aktiviert werden – dazu genügen im linken Menü Klicks auf Konfiguration > Module > director > aktivieren.

Anschließend wird im gleichen Menü per Klick auf Icinga-Director ein Installationsassistent gestartet. Dieser ist weitestgehend selbsterklärend und führt die folgenden Schritte aus:

  1. Konfiguration der Datenbank
  2. Auswahl des Icinga2-Hosts und API-Benutzers

Anbei einige Screenshots meiner Installation:

Director setup

Director setup

Nun fehlt nur noch eins: das Abbilden der eigenen Infrastruktur innerhalb Icinga2 – beispielsweise mit dem Icinga Director! 🙂

Download PDF

Verwandte Artikel