Icinga
Siehe auch
- Ansible-Rolle Icinga2-Master:
- Ansible-Rolle Icinga2-Agent:
- Ansible-Rolle IcingaWeb2:
- Icinga-Checks:
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
Falls man IcingaDB verwendet, sollte man /var/lib/icinga2/icingadb.env
vom alten Server kopieren (siehe https://icinga.com/docs/icinga-db/latest/doc/05-Distributed-Setups/#environment-id).
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.Module path "/usr/share/icingaweb2/modules" does not exist. ERROR: Cannot read enabled modules. Config directory "/etc/icingaweb2" is not readable
beim Aufruf vonicingacli
durch Icinga2Das kann entweder an falschen File-Permissions oder an SELinux liegen. Zu SELinux gibt es ein ungelöstes GitHub-Issue. Als Workaround kann man ein eigenes SEModule bauen und laden:
cat > icingacli.te << 'EOF' module icingacli 1.0; require { type icingaweb2_rw_content_t; type icingaweb2_config_t; type icingaweb2_content_t; type icinga2_t; class dir { getattr open read search }; class file { getattr open read }; class lnk_file { getattr open read }; } #============= icinga2_t ============== allow icinga2_t icingaweb2_config_t:dir { getattr open read search }; allow icinga2_t icingaweb2_config_t:file { getattr open read }; allow icinga2_t icingaweb2_config_t:lnk_file { getattr read }; allow icinga2_t icingaweb2_content_t:dir { getattr open read search }; allow icinga2_t icingaweb2_content_t:file { getattr open read }; allow icinga2_t icingaweb2_rw_content_t:dir getattr; EOF yum -y install make selinux-policy-devel make --file /usr/share/selinux/devel/Makefile icingacli.pp semodule --install icingacli.pp systemctl restart icinga2
Besonderheiten
- Im Icinga Director funktionieren custom variables im
notes
undnotes_url
-Feld nicht. Siehe https://github.com/Icinga/icingaweb2-module-director/issues/1021
Built on 2023-09-21