Icinga2 und Icingaweb2 installieren
Damit wir Icinga2 und Icingaweb2 installieren können, benötigen wir das entsprechende Repository. Sobald dies eingerichtet ist, installiert es mit dem apt Befehl.
cuurl https://packages.icinga.com/icinga.key | sudo apt-key add - echo "deb http://packages.icinga.com/raspbian icinga-stretch main" \ | sudo tee /etc/apt/sources.list.d/icinga.list
sudo apt update sudo apt install icinga2 icingaweb2
http://localhost/icingaweb2
Nachdem wir auf die Seite gelangt sind, verlangt Icinga ein Token zur Authentifizierung von uns. Dem wollen wir nun nachgehen.
sudo icingacli setup config directory --group icingaweb2; sudo icingacli setup token create;
Optional könnten wir noch überprüfen, ob die erforderlichen Gruppen für Icinga existieren. Es sollte ungefähr wie unten aussehen. Die icingaweb2 Gruppe muss existieren und die Gruppe www-data enthalten.
cat /etc/groups |grep -i incinga icingaweb2:x:117:www-data
Können wir, dank der erfolgreichen Authentifizierung, weiter auf der Seite gehen, so gelangen wir zur Auswahl der Module. Wählt euch eure entsprechenden Module aus.
Auf der nächsten Seite überprüft Icinga die System-Abhängigkeiten.
Bevor wir weitergehen, sollten wir diese Fehler lösen. Als erstes richten wir die korrekte Zeitzone ein. Mit einem Editor wie vi könnt ihr die date.timezone entkommentieren und eure entsprechende Zeitzone setzen. Bei mir ist es Europe/Berlin.
sudo vi /etc/php/7.3/apache2/php.ini cat /etc/php/7.3/apache2/php.ini | grep date.timezone ; http://php.net/date.timezone date.timezone = Europe/Berlin
Gefolgt von der Installation der fehlenden PHP Module.
sudo apt-get install php-pgsql sudo systemctl restart apache2
Es sollten nun alle Fehler und Warnungen beseitigt sein.
Auf der nächsten Seite wird nun die Authentifizierungsmethode abgefragt. Ich habe mich für die Datenbank entschieden.
Die Einstellungen für die Datenbank müssen wir nun setzen. Icinga richtet die Datenbank und den User selber ein. Ihr müsst also nur einen User angeben, der die Rechte hat Datenbanken und User anzulegen.
Danach kommt eine Abfragen bzgl. des Authentifizierungs-Backend, die ihr weiterklicken könnt.
Im darauffolgenden Schritt richten wir den ersten Benutzer für die Icinga Weboberfläche ein. Die Eingabe ist dabei euch überlassen.
Die Konfiguration vom Logging kann soweit, wie von Icinga vorgegeben, verwendet werden.
Die Einrichtung von Icingaweb2 wäre nun abgeschlossen und es folgt eine Übersicht der getätigten Konfigurationen.
Icinga2-IDO
Kommen wir nun zur Einrichtung von Icinga2-IDO.
Vorweg möchte ich sagen, dass wir für die IDO eine Datenbank einrichten müssen. Wie ihr das macht habe ich unter „Postgres Datenbank installieren und einrichten“ beschrieben. Da die IDO Einrichtung nichts weiteres verlangt, mache ich hier mit der Visualisierung weiter.
Sobald die Einrichtung abgeschlossen ist, könnt ihr die Verbindung validieren.
„Es gibt zurzeit keine Icinga-Instanz die in die IDO schreibt. Stelle sicher, dass eine Icinga-Instanz konfiguriert ist und in die IDO schreiben kann“ – Falls ihr diese Meldung bekommt, dann solltet ihr unbedingt /etc/icinga2/features-enabled/ido-pgsql.conf überprüfen. Dort sollten die Einstellungen deckungsgleich mit denen sein, die ihr vorher in der Web-Konfiguration festgelegt habt.
/** * The db_ido_pgsql library implements IDO functionality * for PostgreSQL. */ library "db_ido_pgsql" object IdoPgsqlConnection "ido-pgsql" { user = "user", password = "password", host = "localhost", database = "icinga_ido" }
Postgres Datenbank installieren und einrichten
Zuallererst müssen natürlich die erforderlichen Pakete installiert werden.
sudo apt install postgresql sudo apt install icinga2-ido-pgsql
Für Icinga IDO müssen wir diesmal eine eigene Datenbank erzeugen. Dafür melden wir uns mit dem postgres User in Linux an
sudo -u postgres -i
Erstellen wir nun den User und die Datenbank
postgres@raspberrypi:~$ createuser --interactive -P Geben Sie den Namen der neuen Rolle ein: user Geben Sie das Passwort der neuen Rolle ein: Geben Sie es noch einmal ein: Soll die neue Rolle ein Superuser sein? (j/n) n Soll die neue Rolle Datenbanken erzeugen dürfen? (j/n) n Soll die neue Rolle weitere neue Rollen erzeugen dürfen? (j/n) n
postgres@raspberrypi:~$ createdb -O user icinga_ido psql -d icinga_ido -f /usr/share/icinga2-ido-pgsql/schema/pgsql.sql
Noch ein letzter Kontrollblick, ob alles korrekt erstellt worden ist. Dafür verwenden wir den psql Befehl und im weiteren \du für die Liste der Rollen(User) bzw. \l für die Liste der Datenbanken.
psql postgres=# \du Liste der Rollen Rollenname | Attribute | Mitglied von ------------+-----------------------------------------------------------------+-------------- postgres | Superuser, Rolle erzeugen, DB erzeugen, Replikation, Bypass RLS | {} user | Passwort gültig bis infinity | {} postgres=# \l Liste der Datenbanken Name | Eigentümer | Kodierung | Sortierfolge | Zeichentyp | Zugriffsprivilegien ------------+------------+-----------+--------------+-------------+----------------------- icinga_ido | user | UTF8 | de_DE.UTF-8 | de_DE.UTF-8 | =Tc/user + | | | | | user=CTc/user postgres | postgres | UTF8 | de_DE.UTF-8 | de_DE.UTF-8 | template0 | postgres | UTF8 | de_DE.UTF-8 | de_DE.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | de_DE.UTF-8 | de_DE.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 Zeilen)
Icinga2 API einrichten
Da ich die Befehle mittels API an die Monitoring-Instanz entsenden möchte, muss ich die Icinga2 API installieren.
root@raspberrypi:/home/pi# icinga2 api setup information/cli: Generating new CA. information/base: Writing private key to '/var/lib/icinga2/ca//ca.key'. information/base: Writing X509 certificate to '/var/lib/icinga2/ca//ca.crt'. information/cli: Generating new CSR in '/var/lib/icinga2/certs//raspberrypi.csr'. information/base: Writing private key to '/var/lib/icinga2/certs//raspberrypi.key'. information/base: Writing certificate signing request to '/var/lib/icinga2/certs//raspberrypi.csr'. information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//raspberrypi.crt'. information/pki: Writing certificate to file '/var/lib/icinga2/certs//raspberrypi.crt'. information/cli: Copying CA certificate to '/var/lib/icinga2/certs//ca.crt'. information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'. information/cli: Enabling the 'api' feature. Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. information/cli: Updating 'NodeName' constant in '/etc/icinga2/constants.conf'. information/cli: Created backup file '/etc/icinga2/constants.conf.orig'. information/cli: Updating 'ZoneName' constant in '/etc/icinga2/constants.conf'. information/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup
Richten wir nun einen neuen API-User ein und fahren mit dem Websetup fort:
vi /etc/icinga2/conf.d/api-users.conf object ApiUser "user" { password = "password" // client_cn = "" permissions = [ "*" ] }
Diesen gerade erstellten Login tragen wir in das Websetup ein.
Falls alles soweit geklappt hat, können wir mittels curl die API testen. Icinga sollte mit einem kleinem Response antworten.
curl -k -s -u icinga:password 'https://localhost:5665/v1' <html><head><title>Icinga 2</title></head><h1>Hello from Icinga 2 (Version: r2.10.5-1)!</h1><p>You are authenticated as <b>user</b>. Your user has the following permissions:</p> <ul><li>*</li></ul><p>More information about API requests is available in the <a href="https://docs.icinga.com/icinga2/latest" target="_blank">documentation</a>.</p></html>
Das Setup wäre nun abgeschlossen. Icinga ist lauffähig, hat bislang aber nur den PI als überwachten Host. Wie die Objektpflege über die API passiert, erkläre ich in einem neuen Beitrag, damit dieser nicht zu lange wird :).
Gutes gelingen!
Ein Gedanke zu „icinga2 auf dem Raspberry Pi mit Postgresql“
Eine tolle Anleitung – aufs wesentliche reduziert und alles drin, um es zum laufen zu bekommen -> Super!