Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| centos:web_c7:icinga:director [05.08.2016 11:00. ] – [Benachrichtigungen] django | centos:web_c7:icinga:director [20.04.2018 10:36. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 19: | Zeile 19: | ||
| Nun löschen wir die Inhalte aus dem bestehenden Verzeichnissen unter // | Nun löschen wir die Inhalte aus dem bestehenden Verzeichnissen unter // | ||
| # rm / | # rm / | ||
| - | # rm / | + | # rm / |
| # rm / | # rm / | ||
| # rm / | # rm / | ||
| Zeile 40: | Zeile 40: | ||
| Ebenso verfahren wir mit ggf. bereits angelgten Client-Zertifikaten unter // | Ebenso verfahren wir mit ggf. bereits angelgten Client-Zertifikaten unter // | ||
| - | # rm / | + | # rm / |
| Bevor wir nun die Konfigurationsdateien im Verzeichnis // | Bevor wir nun die Konfigurationsdateien im Verzeichnis // | ||
| - | # cp -a / | + | # mkdir / |
| + | # cp -a / | ||
| Nun löschen wir entweder die Inhalte nachfolgender Dateien, oder kommentieren diese entsprechend aus. | Nun löschen wir entweder die Inhalte nachfolgender Dateien, oder kommentieren diese entsprechend aus. | ||
| Zeile 132: | Zeile 133: | ||
| * directory. Each of these files must have the file extension " | * directory. Each of these files must have the file extension " | ||
| */ | */ | ||
| - | // Django : 2016-08-01 | + | include_recursive " |
| - | // default: include_recursive " | + | |
| - | // include_recursive " | + | |
| </ | </ | ||
| Zeile 204: | Zeile 203: | ||
| </ | </ | ||
| </ | </ | ||
| + | |||
| + | Wir haben nun ein quasi jungfräuliches System, auf dem wir nun aufsetzen wollen. | ||
| + | |||
| + | {{ : | ||
| + | |||
| ===== GitHub ====== | ===== GitHub ====== | ||
| Zeile 227: | Zeile 231: | ||
| Anschließen führen wir einen **pull** gegen das [[https:// | Anschließen führen wir einen **pull** gegen das [[https:// | ||
| - | # git pull https:// | + | # git pull |
| < | < | ||
| remote: Compressing objects: 100% (238/238), done. | remote: Compressing objects: 100% (238/238), done. | ||
| Zeile 297: | Zeile 301: | ||
| | | ||
| - | 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 | + | Hat sich an der MariaDB etwas geändert muss ein entsprechneder Update der mySQL-Definitionen erfolgen; in der WEB-GUI unseres Icinga 2 Director |
| - | FIXME (//Bild einfügen, wenn ein Datenbankupdate nötig ist!//) | + | {{ : |
| + | 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. | ||
| + | |||
| + | {{ : | ||
| ===== Grund-Konfiguration ===== | ===== Grund-Konfiguration ===== | ||
| + | ==== API Setup ==== | ||
| + | |||
| + | https:// | ||
| + | |||
| + | |||
| + | < | ||
| + | ● icinga2.service - Icinga host/ | ||
| + | | ||
| + | | ||
| + | Process: 30906 ExecStart=/ | ||
| + | Process: 30842 ExecStartPre=/ | ||
| + | Main PID: 30932 (icinga2) | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Mar 06 20:36:14 vml000117.dmz.nausch.org systemd[1]: Starting Icinga host/ | ||
| + | Mar 06 20:36:14 vml000117.dmz.nausch.org systemd[1]: Started Icinga host/ | ||
| + | [root@vml000117 features-enabled]# | ||
| + | information/ | ||
| + | information/ | ||
| + | information/ | ||
| + | information/ | ||
| + | information/ | ||
| + | information/ | ||
| + | information/ | ||
| + | information/ | ||
| + | information/ | ||
| + | information/ | ||
| + | information/ | ||
| + | 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]# | ||
| + | [root@vml000117 features-enabled]# | ||
| + | ● icinga2.service - Icinga host/ | ||
| + | | ||
| + | | ||
| + | Process: 31131 ExecStart=/ | ||
| + | Process: 31068 ExecStartPre=/ | ||
| + | Main PID: 31157 (icinga2) | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Mar 06 20:37:06 vml000117.dmz.nausch.org systemd[1]: Starting Icinga host/ | ||
| + | Mar 06 20:37:07 vml000117.dmz.nausch.org systemd[1]: Started Icinga host/ | ||
| + | </ | ||
| ==== CA erstellen ==== | ==== CA erstellen ==== | ||
| # icinga2 node wizard | # icinga2 node wizard | ||
| Zeile 376: | Zeile 433: | ||
| ==== 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 | + | 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 |
| # vim / | # vim / | ||
| Zeile 400: | Zeile 457: | ||
| Type ' | Type ' | ||
| - | MariaDB server version for the right syntax to use near 'SET ' | ||
| MariaDB [(none)]> | MariaDB [(none)]> | ||
| < | < | ||
| Zeile 418: | Zeile 474: | ||
| </ | </ | ||
| - | Anschließend befüllen wir die gerade angelegt Datenbank mit Leben. Hierzu verwenden wir das Schema, aus dem Verzeichnis // | ||
| - | # mysql icinga_director -u icinga_director -p < / | ||
| - | |||
| - | Enter password: | ||
| ==== MariaDB Datenbank-Ressource ==== | ==== MariaDB Datenbank-Ressource ==== | ||
| Zeile 440: | Zeile 492: | ||
| charset = " | charset = " | ||
| port = " | port = " | ||
| - | persistent = "1" | + | persistent = "0" |
| ... | ... | ||
| </ | </ | ||
| + | |||
| + | 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**. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | 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. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| ==== director-global ==== | ==== director-global ==== | ||
| Zeile 476: | Zeile 543: | ||
| {{ : | {{ : | ||
| - | Ü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 |
| - | {{ : | + | {{ : |
| - | Beim Datenbankbackend wählen wir nun unsere zuvor definierte Ressource **icinga_directordb** aus. | + | Wurde die Datenbank erfolgreich befüllt wird uns dies um unteren Bildschirmrand eingeblendet. |
| - | {{ : | + | {{ : |
| - | 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 | + | 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 |
| + | |||
| + | |||
| + | {{ : | ||
| + | |||
| + | Die erfolgreiche Integration wird uns am unteren Bildschirmrand wieder eingeblendet. | ||
| {{ : | {{ : | ||
| Zeile 553: | Zeile 625: | ||
| Bei der **Check Ausführung** wählen wir dann das Kommando **hostalive** aus und definieren die Standardzeiten | Bei der **Check Ausführung** wählen wir dann das Kommando **hostalive** aus und definieren die Standardzeiten | ||
| - | {{ : | + | {{ : |
| 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**. | ||
| Zeile 719: | Zeile 791: | ||
| {{ : | {{ : | ||
| - | {{ : | + | {{ : |
| - | {{ : | + | {{ : |
| ==== Kommandos ==== | ==== Kommandos ==== | ||
| Zeile 859: | Zeile 931: | ||
| # cd / | # cd / | ||
| - | # wget https:// | + | # wget https:// |
| - | # wget https:// | + | |
| + | # wget https:// | ||
| Anschließend statten wir die beiden scripte noch mit den Dateiausführungsrechten aus. | Anschließend statten wir die beiden scripte noch mit den Dateiausführungsrechten aus. | ||
| - | # chmod +x *by-mail.sh | + | # chmod +x director-mail*.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/ | ||
| + | # vim / | ||
| + | |||
| + | <file bash director-mail-host-notifications.sh># | ||
| + | ## / | ||
| + | ## Marianne Spiller < | ||
| + | ## icinga2-2.4.10-1~ppa1~xenial1 | ||
| + | ## adopted by django@nausch.org / 20160707 | ||
| + | |||
| + | Usage() { | ||
| + | echo " | ||
| + | echo "Used by icinga2 director and command ' | ||
| + | } | ||
| + | |||
| + | while getopts a: | ||
| + | do | ||
| + | case " | ||
| + | a) HOSTADDRESS=$OPTARG ;; | ||
| + | b) NAUTHOR=$OPTARG ;; | ||
| + | c) NCOMMENT=$OPTARG ;; | ||
| + | d) DATE=$OPTARG ;; | ||
| + | h) Usage | ||
| + | exit 1 ;; | ||
| + | l) HOSTDN=$OPTARG ;; | ||
| + | o) HOSTOUTPUT=$OPTARG ;; | ||
| + | r) RECIPIENT=$OPTARG ;; | ||
| + | s) HOSTSTATE=$OPTARG ;; | ||
| + | t) NTYPE=$OPTARG ;; | ||
| + | ?) echo " | ||
| + | exit 1 ;; | ||
| + | esac | ||
| + | done | ||
| + | |||
| + | shift $((OPTIND - 1)) | ||
| + | |||
| + | notification_message=`cat << | ||
| + | ***** nausch.org Icinga2 Host Monitoring | ||
| + | |||
| + | ==> $NTYPE alert for $HOSTDN - host state is $HOSTSTATE! <== | ||
| + | |||
| + | When? $DATE | ||
| + | Host? $HOSTDN | ||
| + | Address? $HOSTADDRESS | ||
| + | Info? $HOSTOUTPUT | ||
| + | |||
| + | Comment by $NAUTHOR: $NCOMMENT | ||
| + | |||
| + | Have a look: | ||
| + | https:// | ||
| + | |||
| + | EOF | ||
| + | ` | ||
| + | |||
| + | #/ | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | # vim / | ||
| + | |||
| + | <file bash director-mail-service-notification.sh># | ||
| + | ## / | ||
| + | ## Marianne Spiller < | ||
| + | ## icinga2-2.4.10-1~ppa1~xenial1 | ||
| + | ## adopted by django@nausch.org / 20160707 | ||
| + | |||
| + | Usage() { | ||
| + | echo " | ||
| + | echo "Used by icinga2 director and command ' | ||
| + | } | ||
| + | |||
| + | while getopts a: | ||
| + | do | ||
| + | case " | ||
| + | a) HOSTADDRESS=$OPTARG ;; | ||
| + | b) NAUTHOR=$OPTARG ;; | ||
| + | c) NCOMMENT=$OPTARG ;; | ||
| + | d) DATE=$OPTARG ;; | ||
| + | e) SERVICENAME=$OPTARG ;; | ||
| + | h) Usage | ||
| + | exit 1 ;; | ||
| + | l) HOSTDN=$OPTARG ;; | ||
| + | o) SERVICEOUTPUT=$OPTARG ;; | ||
| + | r) RECIPIENT=$OPTARG ;; | ||
| + | s) SERVICESTATE=$OPTARG ;; | ||
| + | t) NTYPE=$OPTARG ;; | ||
| + | ?) echo " | ||
| + | exit 1 ;; | ||
| + | esac | ||
| + | done | ||
| + | |||
| + | shift $((OPTIND - 1)) | ||
| + | |||
| + | notification_message=`cat << | ||
| + | ***** nausch.org Icinga2 Service Monitoring | ||
| + | |||
| + | ==> $NTYPE alert for $SERVICENAME is $SERVICESTATE! <== | ||
| + | |||
| + | When? $DATE | ||
| + | Service? $SERVICENAME | ||
| + | Host? $HOSTDN | ||
| + | Address? $HOSTADDRESS | ||
| + | Info? $SERVICEOUTPUT | ||
| + | |||
| + | Comment by $NAUTHOR: $NCOMMENT | ||
| + | |||
| + | Have a look: | ||
| + | https:// | ||
| + | |||
| + | EOF | ||
| + | ` | ||
| + | |||
| + | #/ | ||
| + | / | ||
| + | |||
| + | |||
| + | Sowohl für die Service-Notfication wie auch für die Host-Notification brauchen wir nun noch jeweils ein zugehöriges **[[centos: | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Beim **Kommandotyp** wählen wir dabei aus dem **drop down** Menü die Option **// | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Auf dem Reiter **Argumente** definieren wir nun noch die im Bash-Script von **[[https:// | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | 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. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Die vollständige // | ||
| + | < | ||
| + | execute = PluginNotification | ||
| + | command = [ | ||
| + | "/ | ||
| + | ] | ||
| + | arguments = { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | }</ | ||
| + | |||
| + | Wie beim Kommando für die Host-Notifications werden wir nun auch noch ein Kommando für die Service-Notifications anlegen. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | 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. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Die vollständige // | ||
| + | |||
| + | < | ||
| + | execute = PluginNotification | ||
| + | command = [ | ||
| + | "/ | ||
| + | ] | ||
| + | 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. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Wie zuvor bei den Hosts, legen wir uns nun noch das Notification Service-Template an. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Über die **Assigment Rules** müssen wir nun noch kurz definieren, bei welchen Hosts unsere definierten Host Notifications greifen sollen. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Zum Schluss definieren wir auch noch die **Assigment Rules**, damit Icinga 2 weiss, bei welchen Services Benachrichtigungen versandt werden sollen. | ||
| + | |||
| + | {{ : | ||
| + | Sofern nun entsprechende Änderungen an Services und/oder Hosts passieren, werden zugehörige Benachrichtigungen per eMAil versendet. | ||
| + | {{ : | ||
| + | ====== Links ====== | ||
| + | * **[[centos: | ||
| + | * **[[wiki: | ||
| + | * **[[http:// | ||