Icinga

Module

Module für Icingaweb2 liegen in /usr/share/icingaweb2/modules/.

Update eines Moduls (beispielhaft für das Icubator-Modul):

MODULE_NAME=incubator
MODULE_VERSION=v0.17.0
MODULES_PATH="/usr/share/icingaweb2/modules"
MODULE_PATH="${MODULES_PATH}/${MODULE_NAME}"
RELEASES="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}/archive"

mkdir -p "$MODULE_PATH" \
&& wget -q $RELEASES/${MODULE_VERSION}.tar.gz -O - \
   | tar xfz - -C "$MODULE_PATH" --strip-components 1

icingacli module enable "${MODULE_NAME}"

Icinga PowerShell Framework

Bemerkung

WinRM ist die von Microsoft und Windows genutzte Plattform, um Systeme remote zu verwalten. WMI kann als eine Möglichkeit WinRM verwenden. Wer WMI auf seinem lokalen Rechner verwendet, nutzt demnach kein WinRM.

Siehe auch https://icinga.com/docs/icinga-for-windows.

Beispiele für Abfragen gegen einen MS-SQL-Server:

PS C:\Windows\system32> icinga { Invoke-IcingaCheckMSSQLResource -SqlUsername 'user' -SqlPassword (ConvertTo-IcingaSecureString 'password') -SqlHost sqlsrv -Verbosity 1 }
[OK] MSSQL Performance (MSSQLSERVER)
| 'average_latch_wait_time_ms'=0.001238s;; 'buffer_cache_hit_ratio'=100%;;;0;100 'page_life_expectancy'=2027081;;
0

PS C:\Windows\system32> icinga { Invoke-IcingaCheckMSSQLBackupStatus -SqlUsername 'user' -SqlPassword (ConvertTo-IcingaSecureString 'password') -SqlHost sqlsrv -Verbosity 1 }
[OK] MSSQL Backup (MSSQLSERVER)
| 'average_size'=1658538B;; 'log_age'=0s;; 'size'=1670148000B;; 'status'=0;6;5 'execution_time'=0s;; 'age'=0s;; 'average_size'=24806280B;; 'log_age'=0s;; 'size'=5854283000B;; 'status'=0;6;5 'execution_time'=0s;; 'age'=54000s;; 'average_size'=1658919B;; 'log_age'=0s;; 'size'=1670531000B;; 'status'=0;6;5 'execution_time'=0s;; 'age'=0s;; 'average_size'=13233520B;; 'log_age'=0s;; 'size'=16409560000B;; 'status'=0;6;5 'execution_time'=0s;; 'age'=0s;; 'average_size'=4590350B;; 'log_age'=0s;; 'size'=5710395000B;; 'status'=0;6;5 'execution_time'=0s;; 'age'=0s;; 'average_size'=5829484B;; 'log_age'=0s;; 'size'=1375758000B;; 'status'=0;6;5 'execution_time'=0s;; 'age'=54000s;; 'average_size'=3417790B;; 'log_age'=0s;; 'size'=4255149000B;; 'status'=0;6;5 'execution_time'=0s;; 'age'=0s;; 'average_size'=981317.3B;; 'log_age'=0s;; 'size'=1224684000B;; 'status'=0;6;5 'execution_time'=0s;; 'age'=0s;; 'average_size'=56638400B;; 'log_age'=0s;; 'size'=70231610000B;; 'status'=0;6;5 'execution_time'=0s;; 'age'=0s;;
0

PS C:\Windows\system32> icinga { Invoke-IcingaCheckMSSQLHealth -SqlUsername 'user' -SqlPassword (ConvertTo-IcingaSecureString 'password') -SqlHost sqlsrv -Verbosity 1 }
[OK] MSSQL Health (MSSQLSERVER)
| 'service_sql_server_mssqlserver_mssqlserver'=4;;4 'connection_time'=0.069s;;
0

PS C:\Windows\system32> icinga { Invoke-IcingaCheckMSSQLPerfCounter -SqlUsername 'user' -SqlPassword (ConvertTo-IcingaSecureString 'password') -SqlHost sqlsrv -Verbosity 1 -Performanc
eCounter '\SQLServer:Buffer Manager\Buffer cache hit ratio', '\SQLServer:Latches\Average Latch Wait Time (ms)'}
[OK] MSSQL Performance Counter (MSSQLSERVER)
| 'sqlserverlatches'=56371;; 'sqlserverbuffer_manager'=24;;
0

Migration

Für den Umzug einer Icinga2-Master-Installation von server-alt nach server-neu muss zunächst Icinga2 auf dem neuen Server gleich wie auf dem alten installiert und als Master konfiguriert werden. Danach müssen auf beiden Servern die Services gestoppen werden:

icinga2 feature disable notification
systemctl disable --now icinga2
systemctl disable --now httpd
systemctl disable --now php-fpm

Nun müssen die Datenbanken migriert werden, normalerweise ist dies MySQL/MariaDB/PostgreSQL und eine InfluxDB. Siehe MariaDB Migration und InfluxDB Backup und Restore.

Ist dies abgeschlossen, muss der Director auf den neuen Hostnamen vom Master aufmerksam gemacht werden. Der erste Aufruf wird einen Fehler liefern (ERROR: RuntimeException in /usr/share/icingaweb2/modules/director/library/Director/KickstartHelper.php:448 with message: Failed to remove External Zone 'my-old-master.example.com', it's eventually still in use), beim zweiten Mal sollte es dann ohne Fehlermeldungen durchlaufen.

systemctl start icinga2
systemctl start httpd
systemctl start php-fpm

icingacli director kickstart run
icingacli director kickstart run
systemctl restart icinga-director.service
# deploy the changes in the director

Nun ist der Master soweit bereit. Falls sich der Hostname geändert hat, müssen alle Agents neu ausgerollt werden, damit die PKI stimmt.

Sobald alles getestet wurde und wie erwartet funktioniert, sollten die Notification wieder aktiviert werden:

icinga2 feature enable notification
systemctl restart icinga2

systemctl enable icinga2
systemctl enable httpd
systemctl enable php-fpm

Troubleshooting

icinga2 wird durch wegen out-of-memory gekillt

In so einem Fall sollte man sich die Grössen der Queues des icinga2 cores anschauen. Diese werden immer wieder in das icinga2 logfile schrieben. Alternativ werden diese auch als Performance Daten von bultin-in check icinga ausgegeben.

Besonderheiten

Im Icinga Director funktionieren custom variables im notes und notes_url-Feld nicht.

Siehe https://github.com/Icinga/icingaweb2-module-director/issues/1021

Built on 2023-03-17