Menu

Icinga 2 und Icinga Web 2 auf dem Raspberry Pi

Icinga ist eine Open Source Monitoring Lösung und war ursprünglich ein Fork von Nagios. Mit der Version 2 verabschiedet man sich allerdings von der alten Codebasis und setzt auf eine komplette Neuentwicklung. Dabei bleibt Icinga 2 aber weiterhin abwärztskompatibel, sowohl Nagios als auch Icinga 1 Plugins und Addons können ohne Probleme weiter verwendet werden. Auch das Webfrontend wurde in der neuen Version rundumerneuert und erstrahlt in einem modernen, klaren und sehr übersichtlichem Look. Ich habe die Monitoringlösung auf einem Raspberry Pi installiert und bin bis jetzt sehr zufrieden. Die Installation verlief ohne große Probleme und die ersten Hosts waren schnell angebunden.

1 Icinga 2 installieren

Zuerst muss das Icinga Repository zu den Paketquellen hinzugefügt werden. Anschließend kann man icinga2 installieren.

  1. sudo nano /etc/apt/sources.list.d/icinga2.list
  2. deb http://packages.icinga.org/debian icinga-jessie main
  3. deb-src http://packages.icinga.org/debian icinga-jessie main
  4. wget -O - http://packages.icinga.org/icinga.key | apt-key add -
  5. sudo apt update && sudo apt upgrade
  6. sudo apt install icinga2

Nach der Installation werden automatisch drei Funktionen aktiviert:

checker for executing checks
notification for sending notifications
mainlog for writing the icinga2.log file

Überprüfen lassen sich die aktivierten Funktionen mit dem Befehl icinga2 feature list. Abschließend sollte man mit dem Befehl systemctl status icinga2 prüfen ob der Dienst richtig eingerichtet wurde. Andernfalls kann sollte man das jetzt nachholen.

  1. # systemd unit aktivieren (dadurch wird der Dienst nach einem Neustart automatisch gestartet)
  2. systemctl enable icinga2
  3. #systemd unit starten
  4. systemctl start icinga2

Nachfolgend habe ich noch Syntax Highlighting für die icinga2 Configfiles, API Modul sowie die Command Pipe aktiviert. Diese Schritte sind aber optional und abhängig von eurer eingesetzten Datenbank und der gewünschten Hostanbindung. Mehr Informationen zu den möglichen Hostsetups findet ihr im Incinga Wiki, dieser Beitrag bezieht sich auf die Einrichtung als Command Execution Bridge.

1.1 Syntax Highlighting

Die Änderungen für das Syntax Highlighting sind abhängig von eurem eingesetzten Editor. Die hier beschrieben Änderungen beziehen sich auf den Editor nano.

Änderung global für alle Benutzer:

  1. sudo nano /etc/nanorc
  2. include "/usr/share/nano/icinga2.nanorc"

Änderungen nur für den aktuellen Benutzer:

  1. cp /etc/nanorc ~/.nanorc
  2. nano ~/.nanorc
  3. include "/usr/share/nano/icinga2.nanorc"

1.2 Benötigte Module aktivieren

  1. # API Modul aktivieren
  2. icinga2 feature enable api
  3. # Command Pipe aktivieren
  4. icinga2 feature enable command
  5. systemctl restart icinga2

2 Icinga Web 2 installieren

Im ersten Schritt werden alle benötigten Pakete installiert. Ich bevorzuge als Webserver nginx, ich werde in diesem Beitrag daher nicht auf die Konfiguration mit apache2 eingehen.

  1. sudo apt install icingaweb2

2.1 MySQL einrichten

Dieser Schritt ist optinal, alternativ kann man Icinga Web 2 auch mit PostgreSQL betreiben.

  1.  sudo apt install mysql-server icinga2-ido-mysql

Währen der Installation des Paketes mysql-server werdet ihr dazu aufgefordert das root-Password einzurichten. Da es erfahrungsgemäß viele leider immer noch nicht so genau nehmen mit sicheren Kennwörtern, hier nochmmal der Hinweis:
  • min. 16 Zeichen
  • Groß- und Kleinsschreibung
  • Zahlen
  • Sonderzeichen
  • KEINE persönlichen Informationen
Das Paket icinga2-ido-mysql benötigt während der Installation ebenfalls eure Aufmerksamkeit.

Modul aktivieren? → Ja
Einrichten mit db-common? → Nein

Als nächstes muss noch die Datenbank angelegt werde.

  1. mysql -u root -p
  2. mysql> CREATE DATABASE icinga;
  3. GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'USER'@'localhost' IDENTIFIED BY 'PASS';
  4. quit;
  5. mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Anschließend muss die angelegte Datenbank noch in der Konfigurationsdatei /etc/icinga2/features-available/ido-mysql.conf eingerichtet werden.

Bei mir ist das IDO Modul nicht richtig aktiviert worden, Abhilfe schafft hier:

  1. icinga2 feature enable ido-mysql
  2. systemctl restart icinga2

2.2 nginx Webserver einrichten

Während der Installation von Icinga Web 2 wird apache2 automatisch mit installiert. Dadurch schlägt die Installation von nginx fehl, da der Port 80 bereits belegt ist. Vor der Installation von nginx muss also der apache beendet und die Systemd Unit deaktiviert werden.

  1. systemctl stop apache2
  2. systemctl disable apache2
  3. sudo apt install nginx php5 php5-fpm php5-intl php5-imagick

Icinga Web Rootverzeichnis setzen:

  1. icingacli setup config webserver nginx --document-root /usr/share/icingaweb2/public

Gruppe icingaweb2 anlegen und nginx-Benutzer zu den Gruppen icingaweb2 und nagios hinzufügen:

  1. addgroup --system icingaweb2
  2. usermod -a -G icingaweb2 www-data
  3. usermod -a -G nagios www-data

Dateisystemrechte korrekt setzen:

  1. icingacli setup config directory --group icingaweb2;
  2. chown -R www-data:icingaweb2 /etc/icingaweb2/modules

Zeitzone in der php.ini anpassen:

  1. nano /etc/php5/fpm/php.ini
  2. date.timezone = Europe/Berlin

Jetzt muss nur noch die nginx Konfiguration angelegt werden:

  1. nano /etc/nginx/sites-available/icinga.example.com
  2. server {
  3.     listen 80;
  4.     server_name icinga.example.com;
  5.  
  6.     location / {
  7.         rewrite ^/(.*)$ http://icinga.example.com/icingaweb2/$1 redirect;
  8.     }
  9.  
  10.     location ~ ^/icingaweb2/index\.php(.*)$ {
  11.         fastcgi_pass unix:/var/run/php5-fpm.sock;
  12.         fastcgi_index index.php;
  13.         include fastcgi_params;
  14.         fastcgi_param SCRIPT_FILENAME /usr/share/icingaweb2/public/index.php;
  15.         fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2;
  16.         fastcgi_param REMOTE_USER $remote_user;
  17.     }
  18.  
  19.     location ~ ^/icingaweb2(.+)? {
  20.         alias /usr/share/icingaweb2/public;
  21.         index index.php;
  22.         try_files $1 $uri $uri/ /icingaweb2/index.php$is_args$args;
  23.     }
  24.  
  25. }

Zum aktivieren der Konfiguration muss noch ein symbolischer Link angelegt und nginx sowie php neu gestartet werden:

  1. cd /etc/nginx/sites-enabled/
  2. ln -s /etc/nginx/sites-available/icinga.example.com
  3. systemctl restart nginx
  4. systemctl restart php5-fpm

Das wars, jetzt benötigt ihr nur noch einen Token

  1. icingacli setup token create
  2. icingacli setup token show

dann könnt ihr den Installer über den Browser starten.

Webinterface Icinga 2

Euch hat der Beitrag gefallen, ihr habt Fragen oder Anregungen? Hinterlasst mir einen Kommentar oder diskutiert im OSBN-Chat.
Geeklabor am : Icinga Web 2 LDAP Authentifizierung
In einem frühren Beitrag habe ich die Installation von Icinga 2 und Icinga Web 2 auf einem Raspberry Pi beschrieben. Da ich in meiner Systemlandschaft einen Univention Corporate Server (UCS) betreibe, wollte ich mich an Icinga Web 2 mit meinem LDAP Benutz
www.excontinuum.de am : PingBack

Kommentare

Linear Verschachtelt
intux

intux

Toller Artikel. Das muss ich mal ausprobieren.

Robert Kaussow

Danke :-)

Carsten

Carsten

Danke für den Artikel. Beim Setup erhalte ich "Es gibt zurzeit keine Icinga-Instanz die in die IDO schreibt. Bitte eine Icinga-Instanz konfigurieren, die in die IDO schreibt." als Fehler. die Datei /etc/icinga2/features-available/ido-mysql.conf hat aber diesen Inhalt:
/**
* The dbidomysql library implements IDO functionality
* for MySQL.
*/

library "db_ido_mysql"

object IdoMysqlConnection "ido-mysql" {
user = "icinga2",
password = "1234",
host = "localhost",
database = "icinga"
}

Bis auf das Passwort sind diese Daten auch passend zur Mysql. Kann mir jemand sagen, wo mein Fehler zu suchen ist ?

Robert Kaussow

Kannst du mit "icinga2 feature list" mal testen ob das IDO-Modul aktiv ist?

Carsten

Carsten

root@nagios:~# icinga2 feature list
Disabled features: compatlog debuglog gelf graphite influxdb livestatus opentsdb perfdata statusdata syslog
Enabled features: api checker command ido-mysql mainlog notification
Gruß und danke für die schnelle Antwort

Robert Kaussow

Hi Carsten,

sorry für die späte Antwort. Konntest du das Problem bereits lösen? Die feature list sieht gut aus. Kannst du mal im Wiki von ThomasKrenn schauen? Da gibts einen Screenshot von der Meldung, ist das deine? Ich kann mich nicht mehr genau dran erinnern, aber ist dieser Hinweis im Installer nicht normal bis du deine Datenbank konfiguriert und gespeichert hast?

Jörg

Jörg

Hallo,
wie habt denn Ihr diese Anleitung auf einem Rapi hinbekommen? Im Icinga Repo gibt es nur Pakete für i386 und amd64. Für Raspis (armhf) ist da nichts bei.

N: Skipping acquire of configured file 'main/binary-armhf/Packages' as repository 'http://packages.icinga.com/debian icinga-stretch InRelease' doesn't support architecture 'armhf'

Stephan

Stephan

Hallo,
ich habe die Installationsanleitung befolgt, bekomme aber den icinga2 nicht gestartet- Bei der Abfrage des Status kommt folgende Meldung:

pi@DEMHG22-LSX002:~ $ systemctl status icinga2
● icinga2.service - Icinga host/service/network monitoring system
Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2018-02-20 23:44:40 CET; 12s ago
Process: 884 ExecStart=/usr/sbin/icinga2 daemon -e ${ICINGA2ERRORLOG} (code=exited, status=1/FAILURE)
Process: 824 ExecStartPre=/usr/lib/icinga2/prepare-dirs /usr/lib/icinga2/icinga2 (code=exited, status=0/SUCCESS)
Main PID: 884 (code=exited, status=1/FAILURE)

Feb 20 23:44:40 DEMHG22-LSX002.contargo.net icinga2[884]: /etc/icinga2/features-enabled/api.conf(3): */
Feb 20 23:44:40 DEMHG22-LSX002.contargo.net icinga2[884]: /etc/icinga2/features-enabled/api.conf(4):
Feb 20 23:44:40 DEMHG22-LSX002.contargo.net icinga2[884]: /etc/icinga2/features-enabled/api.conf(5): object ApiListener "api" {
Feb 20 23:44:40 DEMHG22-LSX002.contargo.net icinga2[884]: ^^^^^^^^^^^^^^^^^^^^^^^^
Feb 20 23:44:40 DEMHG22-LSX002.contargo.net icinga2[884]: /etc/icinga2/features-enabled/api.conf(6): cert_path = SysconfDir + "/icinga2/pki/" + NodeName + ".crt"
Feb 20 23:44:40 DEMHG22-LSX002.contargo.net icinga2[884]: /etc/icinga2/features-enabled/api.conf(7): key_path = SysconfDir + "/icinga2/pki/" + NodeName + ".key"
Feb 20 23:44:40 DEMHG22-LSX002.contargo.net icinga2[884]: [2018-02-20 23:44:40 +0100] critical/config: 1 error
Feb 20 23:44:40 DEMHG22-LSX002.contargo.net systemd[1]: icinga2.service: Main process exited, code=exited, status=1/FAILURE
Feb 20 23:44:40 DEMHG22-LSX002.contargo.net systemd[1]: icinga2.service: Unit entered failed state.
Feb 20 23:44:40 DEMHG22-LSX002.contargo.net systemd[1]: icinga2.service: Failed with result 'exit-code'.


Ich habe den Veracht, dass es irgendwas mit Zertifikaten zu tun hat.

Im Übrigen bekomme ich die apache 2 Seite angezeigt, wenn ich mit dem Browser auf den Rasp zugreife. Dessen Status ist aber:

pi@DEMHG22-LSX002:~ $ systemctl status apache2
● apache2.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)

Währen der nginx läuft...

pi@DEMHG22-LSX002:~ $ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-02-20 23:40:35 CET; 2min 54s ago
Docs: man:nginx(8)
Process: 547 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 521 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 549 (nginx)
CGroup: /system.slice/nginx.service
├─549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─550 nginx: worker process
├─551 nginx: worker process
├─552 nginx: worker process
└─553 nginx: worker process

Und nun?

Gruß
Stephan

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht veröffentlicht, sondern nur für eventuelle Benachrichtigungen verwendet.
Die Formatierung der Kommentare ist über Markdown möglich.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Gravatar Autoren-Bilder werden unterstützt.
Markdown-Formatierung erlaubt