
Quelle: https://medium.com/
Hellow,
heute möchte ich euch zeigen, wie man schnell und einfach mit Icinga 2 seine bestehende Icinga 2 Infrastruktur monitoren kann.
Jeder der sich damit schon mal befasst hat, wird schnell zu dem Ergebnis kommen: “Hey warte mal den Master kann ich ja nicht auf den anderen Master drauf packen.”, falls nicht, ist das die Tatsache. Zitat “Henne-Ei-Problem”.
Die Lösung dieses Problems ist allerding recht simpel. Nachdem wir den jeweiligen Icinga 2 Core nicht heranziehen können, machen wir ganz einfach gebrauch von check_by_ssh. Somit können wir völlig unabhängig der Icinga 2 Infrastruktur entlang unsere Monitoring Instanzen monitoren.
Hierfür verwende ich zwei Vagrant Boxen die aus einer aktuellen CentOS 7 und Icinga 2 Installation besteht. Box #1 ist der Icinga 2 Core und Box #2 der “Monitor the Monitoring”.
Auf der Box #1 muss zunächst ein Benutzer angelegt werden:
# Benutzer icinga hinzufügen useradd -m icinga # Temporäres Kennwort vergeben passwd icinga
Auf der Box #2 müssen vorbereitend folgende Schritte ausgeführt werden:
# Shell für den icinga Benutzer aktivieren: usermod --shell /bin/bash icinga # SSH-Key für den icinga Benutzer erzeugen. ssh-keygen -b 4096 -t rsa -C "icinga@$(hostname) user for check_by_ssh" -f $HOME/.ssh/id_rsa # SSH-Key auf die Box #1 kopieren ssh-copy-id -i $HOME/.ssh/id_rsa icinga@master1.int.mbp.local # Anschließend prüfen ob das ganze geklappt hat ssh -i $HOME/.ssh/id_rsa icinga@master1.int.mbp.local
Nun haben wir sämtliche Vorbereitungen abgeschlossen, nur noch eben aufräumen:
# Auf der Box #1 wird die Passwortanmeldung des icinga Benutzers deaktiviert passwd -l icinga
# Auf der Box #2 wird die Shell des icinga Benutzers wieder in den Default Zustand gebracht usermod -s /sbin/nologin icinga
Das Ziel liegt nun nicht mehr all zu fern, wir begeben uns auf Box #2 und erzeugen Icinga 2 Konfiguration:
# Man legt zwei Verzeichnisse unter "/etc/icinga2/zones.d" an mkdir -pv /etc/icinga2/zones.d/{global-templates,master} # Wechseln in das "global-templates" Verzeichnis und kopieren von Github die Check-Commands für check_by_ssh cd /etc/icinga2/zones.d/global-templates wget https://raw.githubusercontent.com/lbetz/icinga-commands/master/commands-ssh.conf # Nun wechseln wir in das "master" Verzeichnis und legen dort ein Konfiguration für die Box #1 an cd /etc/icinga2/zones.d/master touch master1.int.mbp.local.conf # Folgende Konfiguration enthält das Host Objekt "master1" object Host "master1.int.mbp.local" { check_interval = 300 retry_interval = 60 max_check_attempts = 3 check_command = "hostalive" display_name = "master1" address = "127.28.128.11" } object Service "LIN load" { check_interval = 300 retry_interval = 60 max_check_attempts = 3 check_command = "by_ssh_load" host_name = "master1.int.mbp.local" } object Service "LIN disk" { check_interval = 300 retry_interval = 60 max_check_attempts = 3 check_command = "by_ssh_disk" host_name = "master1.int.mbp.local" } object Service "LIN swap" { check_interval = 300 retry_interval = 60 max_check_attempts = 3 check_command = "by_ssh_swap" host_name = "master1.int.mbp.local" } object Service "LIN time" { check_interval = 300 retry_interval = 60 max_check_attempts = 3 check_command = "by_ssh_ntp_time" host_name = "master1.int.mbp.local" } object Service "LIN proc icinga" { check_interval = 300 retry_interval = 60 max_check_attempts = 3 check_command = "by_ssh_procs" host_name = "master1.int.mbp.local" vars.by_ssh_arguments = { "-u" = "$procs_user$" "-w" = "$procs_warning$" "-c" = "$procs_critical$" } vars.procs_user = "icinga" vars.procs_warning = "250" vars.procs_critical = "0:300" } object Service "LIN proc mysql" { check_interval = 300 retry_interval = 60 max_check_attempts = 3 check_command = "by_ssh_procs" host_name = "master1.int.mbp.local" vars.by_ssh_arguments = { "-u" = "$procs_user$" "-c" = "$procs_critical$" } vars.procs_user = "mysql" vars.procs_critical = "0:1" } object Service "LIN port 5665" { check_interval = 300 retry_interval = 60 max_check_attempts = 3 check_command = "tcp" host_name = "master1.int.mbp.local" vars.tcp_port = "5665" } # Anschließend Konfiguration Prüfen und den Icinga 2 Core neustarten icinga2 daemon -C systemctl restart icinga2
Nun dauert es einen Moment und dann sollten sämtliche Werte und Dienste des Icinga 2 Masters überwacht werden.
Damit verabschiede ich mich auch schon wieder und wünsche wie immer Spass beim basteln!
P.S.: Wem das noch nicht genüge sollte, dem kann ich noch das check_mysql_health in Kombination mit der Icinga 2 IDO auf dem Weg geben.
0 Comments