Icinga2¶
Zur Navigation springenZur Suche springen
Beispielhafte Einrichtung einer Icinga2 Installation mit
- zwei Mastern icingasiteA und icingasiteB
- einem zentralem PostgreSQL Server
- einem dedizierten Webserver (nginx) der die Rolle des icingaweb2 übernehmen soll
Dieses Beispiel ist insofern nicht ideal, als dass die Datenbank natürlich einen Single Point of Failure darstellt. Ihr solltet eine redundante Datenbank nutzen mit einer Service IP zum Beispiel. Diesbezüglich am besten die Dokumentation befragen. In meinem Seznario genügt mir die einfache Datenbank.
Installation icinga2¶
Master Knoten Icinga2¶
Auf mastersiteA und mastersiteB:
pkg install -y icinga2
sysrc icinga2_enable="yes"
service icinga2 start
Die Installation der Nagios Plugins erfolgt automatisch als Abhängigkeit. Auf dem Datenbankhost:
- Datenbank anlegen: icinga
- Rolle anlegen: icinga
- pg_hba so konfigurieren, dass Zugriff von den Hosts mastersiteA und mastersiteB möglich ist
Nur auf einem der beiden Master; Schema importieren:
psql -U icinga -W -h dein_postgresql_host.domain.net icinga < /usr/local/share/icinga2-ido-pgsql/schema/pgsql.sql
Nun wieder auf beiden Mastern; Icinga2 IDO pgsql Modul aktivieren, Konfiguration anlegen und Icinga2 neustarten.
icinga2 feature enable ido-pgsql
vim /usr/local/etc/icinga2/features-enabled/ido-pgsql.conf
object object IdoPgsqlConnection "ido-pgsql" {
user = 'icinga'
password = 'deinsicherespasswort'
host = 'dein_postgresql_host.domain.net'
database = 'icinga' }
service icinga2 restart
Einrichtung der API
icinga2 api setup
Einen API Benutzer anlegen für das icingaweb2 mit minimalen Rechten:
vim /usr/local/etc/icinga2/conf.d/api-users.conf
object ApiUser "icingaweb2" {
password = "Wijsa8ZdfeRs5E35d"
permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ] }
service icinga2 restart
Webservice Icingaweb2¶
- Sicherstellen, dass es einen Dedizierten Benutzer für icingaweb2 gibt, hier icingaweb2
- Sicherstellen, dass es eine Gruppe icingaweb2 gibt die das Mitglied icingaweb2 hat.
- Sicherstellen, dass der Webserver host ebenfalls Zugriff auf die IDO Datenbank hat (pg_hba.conf und die Rolle)
- Sicherstellen, dass der Webserver host Firewalltechnisch Zugriff auf die API auf beiden icinga2 Mastern hat
- Sicherstellen, dass API auf Mastern aktiviert ist, auf "::" lauscht und ein API Benuzter angelegt ist für icingaweb2 (siehe weiter unten für den Benutzer)
- icingaweb2 der Gruppe nginx hinzufügen
- Postgresql Datenbank einrichten auf dem zentralen psql Host:
- Datenbankname: icingaweb2
- Passwort: Ein sicheres Passwort deiner Wahl
- pg_hba auf zentralem DB Host so einstellen, dass der Server wo icingaweb2 drauf laufen soll Zugriff hat (host / md5)
Webserver für den Betrieb von icingaweb2 einrichten, hier eine Beispielkonfiguration von nginx auf einem Alpine Host mit icingaweb über apk installiert in /usr/share/webapps/icingaweb2.
server {
# icingaweb2
listen [::]:80;
server_name icinga.mydomain.net;
autoindex off;
access_log /var/log/nginx/icinga.mydomain.net-access.log;
error_log /var/log/nginx/icinga.mydomain.net-error.log;
root /var/www/vhosts/icinga.mydomain.net;
location / {
index index.html index.htm index.php;
}
location ~ ^/icingaweb2/index\.php(.*)$ {
fastcgi_pass unix:/run/nginx/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/share/webapps/icingaweb2/public/index.php;
fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2;
fastcgi_param REMOTE_USER $remote_user;
}
location ~ ^/icingaweb2(.+)? {
alias /usr/share/webapps/icingaweb2/public;
index index.php;
try_files $1 $uri $uri/ /icingaweb2/index.php$is_args$args;
}
}
Achtung. Das Webinterface sollte natürlich über HTTPS angesprochen werden. Ich löse das in meinem Fall, indem ich einen Reverse Proxy dazwischen schalte, der SSL Offloading macht.
Installation des Paketes icingaweb2 mit diversen Plugins
apk add icingaweb2 icingaweb2-bash-completion icingaweb2-doc icingaweb2-module-director icingaweb2-module-incubator icingaweb2-module-incubator-doc icingaweb2-module-ipl icingaweb2-module-reactbundle
chgrp -R icingacweb2 /etc/icingaweb2
chmod -R g+rws /etc/icingaweb2
Token zur Einrichtung generieren:
icingacli setup token create
- Token in die Zwischenablage kopieren und Setup URL aufrufen
http://myicingaweb2.domain.net/ - Token pasten und auf weiter
- Gewünschte Plugins aktivieren und weiter
- Installationsstatus wird überprüft. Unzulänglichkeiten beseitigen und weiter
- Authentifizierungsart: Datenbank und weiter
- Resourcename: icingaweb_db
- Datenbanktyp: PostgreSQL
- Host: deinpostgres.server.lan
- Port: 5432
- Datenbankname: icingaweb2
- Benutzername: icingaweb2
- Kennwort: deinsicherespasswort
- Zeichensatz:
- SSL: Je nachdem, wie euer Postgresql konfiguriert ist, im Zweifel deaktivieren
- Backend-Name: icingaweb2
- Benutzer nach euren Vorlieben anlegen
- weiter weiter weiter
- Monitoring Backend:
- Backendname: icinga2
- Backendtyp: IDO
- Monitoring-IDO-Ressource:
- Ressourcename: icinga_ido
- Datenbanktyp: PostgreSQL
- Host: deinpostgres.server.lan
- Port: 5432
- Datenbankname: icinga
- Benutzername: icingaweb2ido
- Kennwort: noch ein sicheres Passwort
- Zeichensatz:
- SSL: Je nachdem, wie euer Postgresql konfiguriert ist, im Zweifel deaktivieren
- Befehl Transport:
- Transport-Name: icinga2
- Transport-Typ: Icinga 2 API
- Host: irgend einer deiner Master Server
- Port: 5665
- API-Benutzername: dein api Benutzername
- API-Passwort: dein api Passwort
Icingaweb neu einrichten¶
- Auf dem host wo icingaweb2 läuft:
icingacli module enable setup
Webseite aufrufen, z.B.: