| |
centos:web_c7:icinga:director [09.08.2016 10:40. ] – [Icinga 2 from scratch] django | centos:web_c7:icinga:director [20.04.2018 10:36. ] (aktuell) – Externe Bearbeitung 127.0.0.1 |
---|
* directory. Each of these files must have the file extension ".conf". | * directory. Each of these files must have the file extension ".conf". |
*/ | */ |
// Django : 2016-08-01 | include_recursive "conf.d" |
// default: include_recursive "conf.d" | |
// include_recursive "conf.d" | |
| |
</file> | </file> |
</font></pre> | </font></pre> |
</html> | </html> |
| |
| Wir haben nun ein quasi jungfräuliches System, auf dem wir nun aufsetzen wollen. |
| |
| {{ :centos:web_c7:icinga:director_076.png?direct&900 |Bild. Bildschrimhardcopy eines jungfräulichen Icinga 2 Web Systems}} |
| |
| |
===== GitHub ====== | ===== GitHub ====== |
create mode 100644 test/php/library/Director/CustomVariable/CustomVariablesTest.php</code> | create mode 100644 test/php/library/Director/CustomVariable/CustomVariablesTest.php</code> |
| |
Hat sich an der MariaDB etwas geändert muss ein entsprechneder Update der mySQL-Definitionen erfolgen. Hierzu wechseln wir in Module Konfiguration des Icinga-Director und klicken auf den Reiter **Konfiguration**. | Hat sich an der MariaDB etwas geändert muss ein entsprechneder Update der mySQL-Definitionen erfolgen; in der WEB-GUI unseres Icinga 2 Director wir dazu ein entsprechender Hinweis angezeigt. |
| |
FIXME (//Bild einfügen, wenn ein Datenbankupdate nötig ist!//) | {{ :centos:web_c7:icinga:director_083.png?901 |Bild: Update Icinga 2 Director Datenbank Update}} |
| |
| Mit einem Klick auf die Schaltfläche **[ Schema-Migrations-Scripte anwenden ]** starten wir den Aktualisierungsvorgang. Wurden die Aktualisierungen erfolgreich beendet, wird uns dies am unteren Bildschirmrand entsprechend angezeigt. |
| |
| {{ :centos:web_c7:icinga:director_084.png?901 |Bild: Update Icinga 2 Director Datenbank Update}} |
| |
| |
===== Grund-Konfiguration ===== | ===== Grund-Konfiguration ===== |
| ==== API Setup ==== |
| |
| https://docs.icinga.com/icinga2/latest/doc/module/icinga2/chapter/icinga2-api |
| |
| |
| <code>[root@vml000117 features-enabled]# systemctl status icinga2.service |
| ● icinga2.service - Icinga host/service/network monitoring system |
| Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled) |
| Active: active (running) since Mon 2017-03-06 20:36:14 CET; 1s ago |
| Process: 30906 ExecStart=/usr/sbin/icinga2 daemon -d -e ${ICINGA2_ERROR_LOG} (code=exited, status=0/SUCCESS) |
| Process: 30842 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS) |
| Main PID: 30932 (icinga2) |
| CGroup: /system.slice/icinga2.service |
| ├─30927 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -d -e /var/log/icinga2/error.log |
| └─30932 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -d -e /var/log/icinga2/error.log |
| |
| Mar 06 20:36:14 vml000117.dmz.nausch.org systemd[1]: Starting Icinga host/service/network monitoring system... |
| Mar 06 20:36:14 vml000117.dmz.nausch.org systemd[1]: Started Icinga host/service/network monitoring system. |
| [root@vml000117 features-enabled]# 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 '/etc/icinga2/pki/vml000117.dmz.nausch.org.csr'. |
| information/base: Writing private key to '/etc/icinga2/pki/vml000117.dmz.nausch.org.key'. |
| information/base: Writing certificate signing request to '/etc/icinga2/pki/vml000117.dmz.nausch.org.csr'. |
| information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/vml000117.dmz.nausch.org.crt'. |
| information/pki: Writing certificate to file '/etc/icinga2/pki/vml000117.dmz.nausch.org.crt'. |
| information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'. |
| information/cli: API user config file '/etc/icinga2/conf.d/api-users.conf' already exists, not creating config file. |
| information/cli: Enabling the 'api' feature. |
| Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. |
| Done. |
| |
| Now restart your Icinga 2 daemon to finish the installation! |
| |
| [root@vml000117 features-enabled]# systemctl restart icinga2.service |
| [root@vml000117 features-enabled]# systemctl status icinga2.service |
| ● icinga2.service - Icinga host/service/network monitoring system |
| Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled) |
| Active: active (running) since Mon 2017-03-06 20:37:07 CET; 1s ago |
| Process: 31131 ExecStart=/usr/sbin/icinga2 daemon -d -e ${ICINGA2_ERROR_LOG} (code=exited, status=0/SUCCESS) |
| Process: 31068 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS) |
| Main PID: 31157 (icinga2) |
| CGroup: /system.slice/icinga2.service |
| ├─31152 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -d -e /var/log/icinga2/error.log |
| └─31157 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -d -e /var/log/icinga2/error.log |
| |
| Mar 06 20:37:06 vml000117.dmz.nausch.org systemd[1]: Starting Icinga host/service/network monitoring system... |
| Mar 06 20:37:07 vml000117.dmz.nausch.org systemd[1]: Started Icinga host/service/network monitoring system. |
| </code> |
==== CA erstellen ==== | ==== CA erstellen ==== |
# icinga2 node wizard | # icinga2 node wizard |
| |
==== api-user ==== | ==== api-user ==== |
Für die Kommunikation des Icinga 2 Director mit dem Icinga 2 Server erfolgt mit Hilfe eines API-Users, der bei der Installation automatisch generiert wurde. Das zugehörige Passwort wiurde dabei zur Lauf-/Installationszeit individuell neu generiert. | Für die Kommunikation des Icinga 2 Director mit dem Icinga 2 Server erfolgt mit Hilfe eines API-Users, der bei der Installation automatisch generiert wurde. Das zugehörige Passwort wurde dabei zur Lauf-/Installationszeit individuell neu generiert. |
# vim /etc/icinga2/conf.d/api-users.conf | # vim /etc/icinga2/conf.d/api-users.conf |
| |
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.</b> | Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.</b> |
| |
MariaDB server version for the right syntax to use near 'SET 'utf8'' at line 1 | |
MariaDB [(none)]> CREATE DATABASE icinga_director CHARACTER SET 'utf8'; | MariaDB [(none)]> CREATE DATABASE icinga_director CHARACTER SET 'utf8'; |
<b>Query OK, 1 row affected (0.00 sec)</b> | <b>Query OK, 1 row affected (0.00 sec)</b> |
</html> | </html> |
| |
Anschließend befüllen wir die gerade angelegt Datenbank mit Leben. Hierzu verwenden wir das Schema, aus dem Verzeichnis //**/usr/share/icingaweb2/modules/director/schema/**//. | |
# mysql icinga_director -u icinga_director -p < /usr/share/icingaweb2/modules/director/schema/mysql.sql | |
| |
Enter password: | |
| |
==== MariaDB Datenbank-Ressource ==== | ==== MariaDB Datenbank-Ressource ==== |
charset = "utf8" | charset = "utf8" |
port = "3306" | port = "3306" |
persistent = "1" | persistent = "0" |
| |
... | ... |
</file> | </file> |
| |
| Alternativ dazu kann man natürlich dazu auch die **Icinga Web 2 GUI** verwenden. Im Menü **Konfiguration** klicken wir auf die Schaltfläche **+ Neue Ressource erstellen**. |
| |
| {{ :centos:web_c7:icinga:director_077.png?direct&900 |Bild: Icinga web 2 GUI - erstellen der icinga2-director Datenbank-Anbindung}} |
| |
| Hier tragen wir nun unsere zuvor definierten Daten für die Anbindung an unseren MariaDB-Server ein. Zum Schluss klicken wir auf die Schaltfläche **[ ]** zum Abspeichern unserer Konfigurationsänderung - dabei wir dann auch gleich getestet, ob ein Zugriff auf die director-Datebank mit den eigegebenen Werten möglich ist. |
| |
| {{ :centos:web_c7:icinga:director_078.png?direct&900 |Bild: Icinga web 2 GUI - erstellen der icinga2-director Datenbank-Anbindung}} |
| |
| |
| |
| |
| {{ :centos:web_c7:icinga:director_079.png?direct&900 |Bild: Icinga web 2 GUI - erstellen der icinga2-director Datenbank-Anbindung}} |
| |
| |
| |
==== director-global ==== | ==== director-global ==== |
{{ :centos:web_c7:icinga:director_002.png?direct&900 |Bild: Icinga Web 2 aktiviertes Module director}} | {{ :centos:web_c7:icinga:director_002.png?direct&900 |Bild: Icinga Web 2 aktiviertes Module director}} |
| |
Über den Reiter **Configuration** erreichen wir nun die Einstellungsseite für die Angaben zur Anbindung des Icinga Directors zum Icinga 2 Server, kurzum dem **Kickstart Assistant**. | Über den Reiter **Configuration** erreichen wir nun die Einstellungsseite für die Director spezifischen Dinge. Da wir noch kein Datenbankschema angelegt haben, werden wir dies nun erst einmal nachholen; dazu klicken wir auf die Schaltfläche **[ Datenbankschema erstellen ]**. |
| |
| {{ :centos:web_c7:icinga:director_080.png?direct&900 |Bild: Icinga Web 2 Director Konfigurationsseite}} |
| |
| Wurde die Datenbank erfolgreich befüllt wird uns dies um unteren Bildschirmrand eingeblendet. |
| |
| {{ :centos:web_c7:icinga:director_081.png?direct&900 |Bild: Icinga Web 2 Director Konfigurationsseite}} |
| |
{{ :centos:web_c7:icinga:director_003.png?direct&900 |Bild: Icinga Web 2 aktiviertes Modul director}} | Beim **Kickstart Assistant** tragen wir nun die Daten für unseren Icinga 2 Server ein. Anschließend wählen wir die Schaltfläche ** [ Import ausführen ]** aus. |
| |
Beim Datenbankbackend wählen wir nun unsere zuvor definierte Ressource **icinga_directordb** aus. | |
| |
{{ :centos:web_c7:icinga:director_004.png?direct&901 |Bild: Icinga Web 2 Kickstart Assistant}} | {{ :centos:web_c7:icinga:director_082.png?direct&900 |Bild: Icinga Web 2 Director Konfigurationsseite}} |
| |
Beim Kickstart Assistant tragen wir nun die Daten für unseren Icinga 2 Server ein. Anschließend wählen wir die Schaltfläche ** [ Import ausführen ]** aus. Die erfolgreiche Integration wird uns am unteren Bildschirmrand wieder eingeblendet. | Die erfolgreiche Integration wird uns am unteren Bildschirmrand wieder eingeblendet. |
| |
{{ :centos:web_c7:icinga:director_005.png?direct&900 |Bild: Icinga Web 2 Kickstart Assistant}} | {{ :centos:web_c7:icinga:director_005.png?direct&900 |Bild: Icinga Web 2 Kickstart Assistant}} |
Bei der **Check Ausführung** wählen wir dann das Kommando **hostalive** aus und definieren die Standardzeiten für die Check-Ausführung. | Bei der **Check Ausführung** wählen wir dann das Kommando **hostalive** aus und definieren die Standardzeiten für die Check-Ausführung. |
| |
{{ :centos:web_c7:icinga:director_011.png?direct&900 |Bild: Icinga 2 Director - Anlegen des Host-Templates Icinga Agent}} | {{ :centos:web_c7:icinga:director_011.png?direct&901 |Bild: Icinga 2 Director - Anlegen des Host-Templates Icinga Agent}} |
| |
Anschließend legen wir uns unseren ersten Host an und importieren das zu vor definiert Template **Icinga Agent**. | Anschließend legen wir uns unseren ersten Host an und importieren das zu vor definiert Template **Icinga Agent**. |
{{ :centos:web_c7:icinga:director_037.png?direct&900 |Bild: Icinga 2 Director - Anlegen des Services Icinga Agent}} | {{ :centos:web_c7:icinga:director_037.png?direct&900 |Bild: Icinga 2 Director - Anlegen des Services Icinga Agent}} |
| |
{{ :centos:web_c7:icinga:director_038.png?direct&900 |Bild: Icinga 2 Director - Anlegen des Services Icinga Agent}} | {{ :centos:web_c7:icinga:director_038.png?direct&901 |Bild: Icinga 2 Director - Anlegen des Services Icinga Agent}} |
| |
{{ :centos:web_c7:icinga:director_039.png?direct&900 |Bild: Icinga 2 Director - Anlegen des Services Icinga Agent}} | {{ :centos:web_c7:icinga:director_039.png?direct&901 |Bild: Icinga 2 Director - Anlegen des Services Icinga Agent}} |
| |
==== Kommandos ==== | ==== Kommandos ==== |
# cd /etc/icinga2/scripts | # cd /etc/icinga2/scripts |
| |
# wget https://raw.githubusercontent.com/sysadmama/misc/master/icinga2/scripts/host-by-mail.sh -Odirector-mail-host-notifications.sh | # wget https://raw.githubusercontent.com/sysadmama/misc/master/icinga2/scripts/host-by-mail.sh -Odirector-mail-host-notification.sh |
| |
# wget https://raw.githubusercontent.com/sysadmama/misc/master/icinga2/scripts/service-by-mail.sh -Odirector-mail-service-notification.sh | # wget https://raw.githubusercontent.com/sysadmama/misc/master/icinga2/scripts/service-by-mail.sh -Odirector-mail-service-notification.sh |
| |
Diese Scripte passen wir nun unserer Monitoring-Umgebung und unseren Anforderungen entsprechend an, damit z.B. später links in der Nachricht auf den richtigen Monitoring Hosts enden. Ebenso beschneiden wir die **Subject/Betreffzeilen** da Nachrichten wenn diese an externe eMail-Adressen versandt werden zwar automatisch mit **[[centos:mail_c7:zeyple|Zeyple]]** verschlüsselt werden, die Headerzeile jedoch weiterhin unverschlüsselt für fremde Augen einsehbar ist. Schließlich geht keinem externen etwas an, welcher unserer Hosts oder Services eine Notification generiert hat. | Diese Scripte passen wir nun unserer Monitoring-Umgebung und unseren Anforderungen entsprechend an, damit z.B. später links in der Nachricht auf den richtigen Monitoring Hosts enden. Ebenso beschneiden wir die **Subject/Betreffzeilen** da Nachrichten wenn diese an externe eMail-Adressen versandt werden zwar automatisch mit **[[centos:mail_c7:zeyple|Zeyple]]** verschlüsselt werden, die Headerzeile jedoch weiterhin unverschlüsselt für fremde Augen einsehbar ist. Schließlich geht keinem externen etwas an, welcher unserer Hosts oder Services eine Notification generiert hat. |
# vim /etc/icinga2/scripts/director-mail-host-notifications.sh | # vim /etc/icinga2/scripts/director-mail-host-notification.sh |
| |
<file bash director-mail-host-notifications.sh>#!/bin/bash | <file bash director-mail-host-notifications.sh>#!/bin/bash |
</file> | </file> |
| |
# vim /etc/icinga2/scripts/director-mail-host-notifications.sh | # vim /etc/icinga2/scripts/director-mail-host-notification.sh |
| |
<file bash director-mail-service-notification.sh>#!/bin/bash | <file bash director-mail-service-notification.sh>#!/bin/bash |
Beim **Kommandotyp** wählen wir dabei aus dem **drop down** Menü die Option **//Notification Plugin Command//** aus und geben beim **Kommando** den vollen Pfad und den Namen des jeweiligen bash-Scriptes an. | Beim **Kommandotyp** wählen wir dabei aus dem **drop down** Menü die Option **//Notification Plugin Command//** aus und geben beim **Kommando** den vollen Pfad und den Namen des jeweiligen bash-Scriptes an. |
| |
{{ :centos:web_c7:icinga:director_064.png?direct&900 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines neuen Kommandos Notification}} | {{ :centos:web_c7:icinga:director_064.png?direct&901 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines neuen Kommandos Notification}} |
| |
Auf dem Reiter **Argumente** definieren wir nun noch die im Bash-Script von **[[https://www.spiller.me/|Marianne M. Spiller]]** definierten Optionen. | Auf dem Reiter **Argumente** definieren wir nun noch die im Bash-Script von **[[https://www.spiller.me/|Marianne M. Spiller]]** definierten Optionen. |
| |
{{ :centos:web_c7:icinga:director_065.png?direct&900 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines neuen Kommandos Notification}} | {{ :centos:web_c7:icinga:director_065.png?direct&901 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines neuen Kommandos Notification}} |
| |
Dank der //**icinga runtime macros**// werden dann zur Laufzeit jeweils die gewünschten Werte übertragen. Der Option **-a** im Bash-Script wird so z.B. über das //**runtime macro**// **$address$** die jeweilige IP-Adresse übermittelt. | Dank der //**icinga runtime macros**// werden dann zur Laufzeit jeweils die gewünschten Werte übertragen. Der Option **-a** im Bash-Script wird so z.B. über das //**runtime macro**// **$address$** die jeweilige IP-Adresse übermittelt. |
{{ :centos:web_c7:icinga:director_067.png?direct&900 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines neuen Kommandos Notification}} | {{ :centos:web_c7:icinga:director_067.png?direct&900 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines neuen Kommandos Notification}} |
| |
Die vollständige //**zones.d/director-global/commands.con**// Definition hat also folgenden Inhalt. | Die vollständige //**zones.d/director-global/commands.conf**// Definition hat also folgenden Inhalt. |
<code>object NotificationCommand "10_director-mail-host-notification" { | <code>object NotificationCommand "10_director-mail-host-notification" { |
execute = PluginNotification | execute = PluginNotification |
command = [ | command = [ |
"/etc/icinga2/scripts/director-mail-host-notifications.sh" | "/etc/icinga2/scripts/director-mail-host-notification.sh" |
] | ] |
arguments = { | arguments = { |
Wie beim Kommando für die Host-Notifications werden wir nun auch noch ein Kommando für die Service-Notifications anlegen. | Wie beim Kommando für die Host-Notifications werden wir nun auch noch ein Kommando für die Service-Notifications anlegen. |
| |
{{ :centos:web_c7:icinga:director_068.png?direct&900 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines neuen Kommandos Notification}} | {{ :centos:web_c7:icinga:director_068.png?direct&898 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines neuen Kommandos Notification}} |
| |
Auch hier legen wir dann für jede Option aus dem Bash-Script ein zugehöriges Argument an, damit die benötigten Daten zur Laufzeit dem Script übergeben werden können. | Auch hier legen wir dann für jede Option aus dem Bash-Script ein zugehöriges Argument an, damit die benötigten Daten zur Laufzeit dem Script übergeben werden können. |
| |
{{ :centos:web_c7:icinga:director_070.png?direct&900 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines neuen Kommandos Notification}} | {{ :centos:web_c7:icinga:director_070.png?direct&899 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines neuen Kommandos Notification}} |
| |
Die vollständige //**zones.d/director-global/commands.con**// Definition hat also folgenden Inhalt | Die vollständige //**zones.d/director-global/commands.conf**// Definition hat also folgenden Inhalt |
| |
<code>object NotificationCommand "10_director-mail-service-notification" { | <code>object NotificationCommand "10_director-mail-service-notification" { |
execute = PluginNotification | execute = PluginNotification |
command = [ | command = [ |
"/etc/icinga2/scripts/director-mail-service-notifications.sh" | "/etc/icinga2/scripts/director-mail-service-notification.sh" |
] | ] |
arguments = { | arguments = { |
Wevor wir nun die Zuweisung der Benachrichtigungen für unsere Hosts machen können, legen wir uns noch jeweils ein Template für die Host-Notifications an. | Wevor wir nun die Zuweisung der Benachrichtigungen für unsere Hosts machen können, legen wir uns noch jeweils ein Template für die Host-Notifications an. |
| |
{{ :centos:web_c7:icinga:director_071.png?direct&900 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines Notification Templates}} | {{ :centos:web_c7:icinga:director_071.png?direct&899 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines Notification Templates}} |
| |
Wie zuvor bei den Hosts, legen wir uns nun noch das Notification Service-Template an. | Wie zuvor bei den Hosts, legen wir uns nun noch das Notification Service-Template an. |
| |
{{ :centos:web_c7:icinga:director_072.png?direct&900 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines Notification Templates}} | {{ :centos:web_c7:icinga:director_072.png?direct&901 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen eines Notification Templates}} |
| |
Über die **Assigment Rules** müssen wir nun noch kurz definieren, bei welchen Hosts unsere definierten Host Notifications greifen sollen. | Über die **Assigment Rules** müssen wir nun noch kurz definieren, bei welchen Hosts unsere definierten Host Notifications greifen sollen. |
| |
{{ :centos:web_c7:icinga:director_073.png?direct&900 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen der Zuordnung von Hosts zu Host Notification Templates}} | {{ :centos:web_c7:icinga:director_073.png?direct&902 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen der Zuordnung von Hosts zu Host Notification Templates}} |
| |
Zum Schluss definieren wir auch noch die **Assigment Rules**, damit Icinga 2 weiss, bei welchen Services Benachrichtigungen versandt werden sollen. | Zum Schluss definieren wir auch noch die **Assigment Rules**, damit Icinga 2 weiss, bei welchen Services Benachrichtigungen versandt werden sollen. |
| |
{{ :centos:web_c7:icinga:director_074.png?direct&900 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen der Zuordnung von Services zu Service Notification Templates}} | {{ :centos:web_c7:icinga:director_074.png?direct&902 |Bild: Bildschirmhardcopy - Icinga 2 Director Anlegen der Zuordnung von Services zu Service Notification Templates}} |
| |
Sofern nun entsprechende Änderungen an Services und/oder Hosts passieren, werden zugehörige Benachrichtigungen per eMAil versendet. | Sofern nun entsprechende Änderungen an Services und/oder Hosts passieren, werden zugehörige Benachrichtigungen per eMAil versendet. |
* **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]** | * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]** |
| |
~~DISCUSSION~~ | |
| |