Icinga Web 2

Installation Icinga Web 2 in FreeBSD 10.1-RELEASE-p4

Voraussetzungen

  • FreeBSD 10.1-RELEASE-p4
  • Apache 2.4-2.4.10_2
  • PHP 5.6.4
  • PHP 5.6 Extensions
  • PHP Module (dom, session, spl, pcre, tokenizer, libxml, mysql, openssl, reflection,  xmlrpc, xsl, soap, gd, ldap, json, gettext, sockets, pdo_mysql)
  • PEAR
  • PEAR-PHING
  • MySQL 5.5.41
  • Icinga2 2.2.3
  • DB IDO MySQL (für MySQL als Backend)
  • PHP PDO library
  • PHP MySQL libraries (für Datenbank MySQL Unterstützung)
  • PHP LDAP library (für Active Directory oder LDAP Unterstützung)
  • BASE64

Installation Icinga2 2.2.2 in FreeBSD 10.1-RELEASE-p3

Installation PHP OpenSSL

Icinga Web2 benötigt Openssl Unterstützung in PHP. Wer es vergisst wird im Web basierten Setup darauf hingewiesen.

root@host:/ # pkg install -y php56-openssl

Installation PHP Gettext

Icinga Web2 benötigt PHP Gettext Unterstützung, um die Konfiguration per Konsole ./icingcli durchzuführen.

root@host:/ # pkg install -y php56-gettext

Installation PECL INTL

Icinga Web2 freut sich über Internationalisierung und benötigt dazu das PHP Modul INTL. Leider gibt es das nicht als Packages und wird über die Ports nachinstalliert.

root@host:/ # cd /usr/ports/devel/pecl-intl
root@host:/usr/ports/devel/pecl-intl/ # make install

Konfiguration PHP Timezone

Icinga Web2 benötigt eine Zeitzone. Wer es vergisst zu konfigurieren wird im Web Setup darauf hingewiesen. In der php.ini wird es unter date.timezone eingestellt. Dazu in der entsprechenden Zeile das ; Zeichen entfernt und zum Beipeil Europe/Berlin eingetragen.

date.timezone = Europe/Berlin

Einstellen PHP Session Pfad

Icinga Web2 benötigt den Session Pfad, der in der php.ini definiert wird. Es wird unter session.save_path eingestellt. Dazu wird in der Zeile das ; Zeichen am Anfang der Zeile entfernt und /tmp eingetragen.

session.save_path = /tmp

Wird dieser Schritt vergessen erscheint bei Icinga Web 2 folgende Fehlermeldung.

phpsession-error

Anschließend Apache neu starten.

root@host:/ # /usr/local/etc/rc.d/apache24 restart

Download der aktuellen Entwicklerversion

Icinga Web 2 ist noch in der Entwicklung und kann nicht als Packages oder Ports installiert werden.

Downloaden und Entpacken der aktuellsten Version von Icinga Web 2. Da github.com SSL verwendet wird der Schalter –no-verify-peer verwendet, so dass keine SSL Abfrage kommt.

root@host:/ # cd /tmp
root@host:/ # fetch --no-verify-peer https://github.com/Icinga/icingaweb2/archive/v2.0.0-beta1.tar.gz
root@host:/ # tar -xvzf v2.0.0-beta1.tar.gz

Apache Konfiguration

Da Icinga Web 2 auf Linux basiert ist es notwendig in der ./icingacli den Pfad zu PHP an FreeBSD anzupassen.

root@host:/ # ee /tmp/icingaweb2-2.0.0-beta1/bin/icingacli
#!/usr/local/bin/php

Anschließend kann der Konfigurationsbefehl ausgeführt werden. Zuvor ist eine Sicherheitskopie der Apache Konfiguration (httpd.conf) sinnvoll.

root@host:/ # cp /usr/local/etc/apache24/httpd.conf /usr/local/etc/apache24/httpd.conf_save
root@host:/ # /tmp/icingaweb2-2.0.0-beta1/bin/icingacli setup config webserver apache --document-root \
              /usr/local/etc/icinga-web2/public --config /usr/local/etc/icinga-web2 >> /usr/local/etc/apache24/httpd.conf

Mit Ausführen des Befehls werden die <Directory> Daten in die Apache Konfiguration am Ende angehängt. Zu beachten ist, dass die SetEnv Variable korrekt auf das Verzeichnis zeigt, wohin die Icinga Web 2 Dateien und Unterverzeichnisse kopiert wurden.

Alias /icingaweb "/usr/local/etc/icinga-web2/public"

<Directory "/usr/local/etc/icinga-web2/public">
    Options SymLinksIfOwnerMatch
    AllowOverride None

    <IfModule mod_authz_core.c>
      # Apache 2.4
        <RequireAll>
            Require all granted
        </RequireAll>
    </IfModule>

    <IfModule !mod_authz_core.c>
      # Apache 2.2
      Order allow,deny
      Allow from all
    </IfModule>

    SetEnv ICINGAWEB_CONFIGDIR "/usr/local/etc/icinga-web2"

    EnableSendfile Off

    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteBase /icingaweb/
      RewriteCond %{REQUEST_FILENAME} -s [OR]
      RewriteCond %{REQUEST_FILENAME} -l [OR]
      RewriteCond %{REQUEST_FILENAME} -d
      RewriteRule ^.*$ - [NC,L]
      RewriteRule ^.*$ index.php [NC,L]
    </IfModule>

    <IfModule !mod_rewrite.c>
      DirectoryIndex error_norewrite.html
      ErrorDocument 404 /error_norewrite.html
    </IfModule>
</Directory>

Falls das Konfigurationsverzeichnis nicht stimmt kann man es auch nachträglich in der httpd.conf ändern. Zum Beispiel aus dem Standardpfad zur Icinga Web 2 Konfiguration („/etc/icingaweb“) den individuellen Pfad („/usr/local/etc/icinga-web2“) machen.

  SetEnv ICINGAWEB_CONFIGDIR "/usr/local/etc/icinga-web2"

Ohne das Rewrite Modul von Apache wird Icinga Web 2 nicht starten und es erscheint die Meldung „The rewrite module is not enabled“ im Webbrowser. Wer es bis jetzt nicht aktviert hat kann es gleich miterledigen. Dazu einfach das # Zeichen am Anfang der Zeile entfernen.

LoadModule rewrite_module libexec/apache24/mod_rewrite.so

Bereits jetzt könnte man die Webseite von Icinga Web 2 aufrufen (http://localhost/icingaweb/). Gibt man jedoch das Login / Passwort icingaadmin / icingaadmin ein wird eine Fehlermeldung angezeigt. Das liegt daran, dass vorher der Nutzerzugriff erstellt werden muss.

No authentication methods available. Did you create authentication.ini when setting up Icinga Web 2?

Weiter kommt man noch nicht, denn es fehlt das Setup von Icinga Web 2. Dazu ruft man es über http://localhost/icingaweb/setup auf und wird nach einem Token gefragt. Zuvor sind aber noch ein paar Schritte notwendig.

Konfiguration MySQL

Zu beachten ist, dass hier nicht die DB IDO konfiguriert wird, sondern die Datenbank für Icinga  Web 2.

root@host:/ # mysql -u root -p
mysql> CREATE DATABASE icinga_web;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON \
       icinga_web.* TO 'icinga_web'@'localhost' IDENTIFIED BY 'icinga_web'; 
mysql> FLUSH PRIVILEGES;
mysql> quit
root@host:/ # mysql -u root -p icinga_web < /tmp/icingaweb2-2.0.0-beta1/etc/schema/mysql.schema.sql

Check Session deaktivieren

Falls man in php.ini nicht den Session Pfad auf /tmp gesetzt, wird Icinga Web 2 ohne Anpassung der PhpSession.php im Webbrowser nur Fehlermeldungen ausgeben. Die Klasse PhpSession erwartet das PHP seine Dateien in /tmp speichert. Das kann umgangen werden, indem in der PhpSession.php ab Zeile 81 der Session-Check auskommentiert wird.

root@host:/ # ee /tmp/icingaweb2-2.0.0-beta1/library/Icinga/Web/Session/PhpSession.php
#      if (!is_writable(session_save_path())) {
#           throw new ConfigurationError('Can\'t save session');
#      }

Kopieren von Icinga Web 2 in das Arbeitsverzeichnis

Vor dem Web basierten Setup muss nur noch das Verzeichnis erstellt werden, wo alle Dateien sowie das Webverzeichnis kopiert werden.

Zuerst das Verzeichnis erstellen und anschließend alle Dateien von /tmp/icingaweb2-2.0.0-beta1 in das neue Icinga Web 2 /usr/local/etc/icinga-web2 kopieren.

root@host:/ # /tmp/icingaweb2-2.0.0-beta1/bin/icingacli setup config createDirectory www \
             --path /usr/local/etc/icinga-web2
Successfully created configuration directory at: /usr/local/etc/icinga-web2
root@host:/ # cp -r /tmp/icingaweb2-2.0.0-beta1 /usr/local/etc/icinga-web2/

Im späteren Verlauf von Web Setup werden die Dateien erstellt. Dazu ist es notwendig, dass Icinga Web 2 Lese- und Schreibzugriff auf das Verzeichnis /usr/local/etc/icinga-web2/modules/monitoring bekommt. Mit chmod werden die Zugriffsrechte angepasst.

root@host:/ # chmod 777 /usr/local/etc/icinga-web2/modules/monitoring/

Token erstellen

Wer den Befehl icingacli setup token create aufruft wird eine Fehlermeldung bekommen. Standardmäßig legt der Befehl den Token unter /etc/icingaweb ab.. Den gibt es aber nicht. Das Probleme lösst man einfach per Hand.

Zuvor ist das Package base64 notwendig.

root@host:/ # pkg install -y base64

Dann kann der Token erzeugt werden.

root@host:/ # head -c 12 /dev/urandom | base64 | tee /usr/local/etc/icinga-web2/setup.token
The newly generated setup token is: axWx2rJYPEBe0LFv

Ohne die Zugriffsrechte anzupassen wird das Setup von Icinga Web 2 einen Warnhinweis ausgeben.

root@host:/ # chmod 0660 /usr/local/etc/icinga-web2/setup.token

Jetzt ist alles fertig um das Setup per Webbrowser durchzuführen.

Setup per Website

Willkommensseite

Icingaweb2_1-Welcome

Authentifikation Backend

Icingaweb2_2-Requierements

Die Einstellung werden in der Datenbank gespeichert.

Icingaweb2_3-Configuration1

Die Anmeldedaten für die Datenbank sind notwendig.

Icingaweb2_4-Configuration

Authentication Backend

Icingaweb2_5-Configration5

Administration: Hier wird der Login-Name und das Passwort festgelegt. Zum Beispiel icingaadmin / icingaadmin

Icingaweb2_7-Configration7

Die Einstellung wohin Icinga Web das Logging machen soll.

Icingaweb2_8-Configration8

Damit die Datenbank angelegt werden kann ist der Root Account für MySQL notwendig.

Icingaweb2_9-Configration8

Damit sind alle Grundangaben fertig.

Icingaweb2_9-Modules1

Das Monitoring Backend soll die IDO Datenbank sein. Dazu sind die Anmeldedaten für das IDO anzugeben.

Icingaweb2_10-Modules2 und Icingaweb2_11-Modules3

Damit Icinga Web 2 auch Icinga2 Kommando senden kann muss es den Pfad zum Command kennen.

Icingaweb2_12-Modules4

Um Icinga für fremden Augen zu schützen kann man hier sagen, was verborgen werden soll. Der Standard sollte erst mal reichen.

Icingaweb2_13-Modules5

Damit ist der Assistent fertig. Die Einstellungen nochmal prüfen und auf Fertigstellen klicken. Auf der rechten Seite wird das ein grünes Feld erscheinen.

Icingaweb2_14-Modules6 und Icingaweb2_15-Modules7

Klickt man anschließend auf weiter, kommt der letzte Übersicht.

Icingaweb2_16-Modules8

Zum Abschluss zeigt Icinga Web 2 eine Zusammenfassung und ob alles gut ging. Falls nicht wird in rot gezeigt, was alles schief ging. Zum Beispiel:

Icingaweb2_18-Error2

Ist alles ok kann man unten an stellen von „zurück“ auf „weiter“ klicken.

Fertig

Jetzt kann man sich in Icinga Web 2 einloggen und Spaß haben.

Schreibe einen Kommentar

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