pixel
Select Page

Monitor das Monitoring_by_ssh

by | Aug 23, 2019 | Icinga, Linux, MySQL, NETWAYS

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.

More posts on the topicIcinga | Linux | MySQL | NETWAYS

Ein Ausblick – Traefik Provider OpenStack

Bei unseren Online-Trainings von NETWAYS, werden jedem einzelnen Teilnehmer eine oder mehrere explizite VMs zur Verfügung gestellt, welche in der OpenStack-Umgebung von NWS gehostet werden. Hierbei benötigen die VMs jeweils öffentliche IPs, welche leider nicht...

HWgroup Ares 10 wird nicht mehr hergestellt

Im NETWAYS Shop gibt es seit vielen Jahren zahlreiche Produkte von HWgroup. Im Bereich Monitoring Hardware gehören diese zu den Bestsellern bei uns. Daher wollen wir unsere Kundschaft natürlich an Neuerungen teilhaben lassen. Aktuelle Krise zeigt auch im...

Icinga Camp Berlin 2022

Das erste Icinga Camp nach 2019 fand nun fast 3 Jahre später statt. NETWAYS hat als Sponsor und Hilfe in der Organisation zusammen mit der Icinga das Event zusammen auf die Beine gestellt und zu einem vollen Erfolg gemacht. Es wurde der aktuelle Stand der Dinge...

Monthly Snap July 2022

July was an eventful month! First of all, we were really happy to go to beautiful Amsterdam for this year`s Start-up days. We had an amazing time together! Then some of us went to Berlin for the stackconf followed by the Icinga Camp. Naturally it was a blast! What...