kso512.checkmk_agent

checkmk_agent

Ansible Rollqualität Ansible Roll Downloads GitHub Repo Größe

Release GitHub Probleme

Mit Bash gemacht Mit Markdown gemacht GitHub

Eine Ansible Rolle, um den Agenten/Client für die CheckMK RAW Edition zu installieren.

Dies ist ein vollständiger Neuaufbau der Rolle install-check_mk-agent, die ich jahrelang erstellt und gewartet habe. Er wurde aufgrund von Änderungen in CI/CD und Namenskonventionen in Ansible Galaxy & CheckMK durchgeführt.

Alle Aufgaben sind mit checkmk-agent getaggt.

Die folgenden Distributionen wurden automatisch getestet:

Aus Leistungsgründen wurden die folgenden "Sektionen" im Windows-Agenten standardmäßig deaktiviert:

  • Dienste
  • msexch
  • dotnet_clrmemory
  • wmi_webservices
  • wmi_cpuload
  • ps
  • fileinfo
  • logwatch
  • openhardwaremonitor

Zusätzlich wurden die Ausführungen von Plugins angepasst:

  • Timeout von 30 auf 120 erhöht
  • Async aktiviert
  • Cache_age auf 3600 (1 Stunde) gesetzt

Erstellen Sie Ihre eigene "check_mk.user.yml.j2" und überschreiben Sie checkmk_agent_win_config_src, um weitere Anpassungen vorzunehmen, oder setzen Sie die Variable checkmk_agent_win_config_optimize auf false, um diese Optimierung zu deaktivieren.

Ähnliche Änderungen wurden an der Standarddatei docker.cfg vorgenommen. Hier wurden alle Docker-Sektionen aktiviert und können durch Setzen der Variable checkmk_agent_docker_complete auf false auf den Standard zurückgesetzt werden.

Aktuelle Version Matrix

CheckMK RAW Edition Version Rollenversion/Tag
2.3.0p13 1.1.1
2.3.0p12 1.1.0
2.3.0p11 1.0.99
2.3.0p10 1.0.98
2.3.0p9 1.0.97

Anforderungen

Diese Rolle benötigt keine anderen Rollen. Sie ist allgemein kompatibel mit dem CheckMK-Server und spezifisch mit kso512.checkmk_server.

Wenn Sie eine Verbindung zu einem Windows-Host über Windows Remote Management (WinRM) herstellen, müssen Sie möglicherweise das Paket pywinrm auf Ihrem Ansible-System installieren:

pip install "pywinrm>=0.3.0"

Diese Rolle nutzt SSH auf Unix-ähnlichen Systemen anstelle des Standardports 6556. Dies verschlüsselt die Kommunikation und vermeidet das Öffnen eines neuen Ports zur Überwachung und Einrichtung eines neuen Dienstes.

Um Authentifizierungsschlüssel für SSH zu erstellen, verwenden Sie das Programm "ssh-keygen", wie hier gezeigt: hier.

Beispiel um Standard-Schlüsse mit keinem Passwort im lokalen Ordner zu erstellen:

ssh-keygen -C "cmkagent@$HOSTNAME" -f ./id_rsa -N "" -v

Dies erstellt zwei Dateien: id_rsa & id_rsa.pub

id_rsa = Privater Schlüssel, der sicher aufbewahrt werden sollte. Diese Datei muss im ~/.ssh-Ordner des aktiven CheckMK-Agenten-Benutzers platziert werden. Beispiel mit dem Standardbenutzer & der Standorte von "kso512.checkmk_server":

cp ./id_rsa /opt/omd/sites/test/.ssh

id_rsa.pub = Öffentliches Schlüssel, der mit anderen vertrauenswürdigen Hosts geteilt werden kann. Diese Datei muss Ihrer eigenen lokalen "authorized_keys.j2"-Datei hinzugefügt werden. Angenommen, es wird eine Standardrolstruktur verwendet:

echo '# {{ ansible_managed }}' > /etc/ansible/local/authorized_keys.j2
cat ./id_rsa.pub >> /etc/ansible/local/authorized_keys.j2

Dann erklären Sie local/authorized_keys.j2 als checkmk_agent_authkey_src in Ihren eigenen Variablen; ein Beispiel ist unten gezeigt.

Schließlich konfigurieren Sie CheckMK selbst, um diese Dateien zu nutzen, anstatt zu versuchen, eine TCP-Verbindung zu Port 6556 herzustellen:

  • Melden Sie sich bei CheckMK an
  • Setup > Suche > "individuell" > Individuelle Programmausführung anstelle des Agentenzugriffs
  • Regel im Ordner erstellen: Hauptverzeichnis
    • Beschreibung: SSH und cmkagent-Konto mit SSH-Schlüsseln verwenden
    • Auszuführende Befehlszeile: ssh -i ~/.ssh/id_rsa -l cmkagent <IP> sudo /home/cmkagent/check_mk_agent
    • Eindeutige Hosts: (wählen Sie einen Test-Host, und wenn es funktioniert, richten Sie Host-Tags oder Labels ein)
    • Speichern
  • 1 Änderung > Aktivieren auf ausgewählten Standorten

Rollenvorlagen

Einige dieser können redundant erscheinen, sind aber so angegeben, damit zukünftige Benutzer sie nach Bedarf mit lokalen Variablen überschreiben können.

Tabelle der Variablen (mit Standardeinstellungen)

Variable Beschreibung Standard
checkmk_agent_authkey_dest Voller Pfad zur "authorized_keys"-Datei "{{ checkmk_agent_ssh_path }}/authorized_keys"
checkmk_agent_authkey_group Name der Gruppe, die die "authorized_keys"-Datei besitzen sollte "{{ checkmk_agent_ssh_group }}"
checkmk_agent_authkey_mode Datei-Modus-Einstellungen der "authorized_keys"-Datei "0600"
checkmk_agent_authkey_src Dateiname der "authorized_keys"-Vorlage authorized_keys.j2
checkmk_agent_authkey_user Name des Benutzers, der die "authorized_keys"-Datei besitzen sollte "{{ checkmk_agent_ssh_user }}"
checkmk_agent_cache_group Name der Gruppe, die den "cache"-Ordner und die Dateien besitzen sollte "{{ checkmk_agent_cache_user }}"
checkmk_agent_cache_mode Datei-Modus-Einstellungen des "cache"-Ordners und der Dateien "{{ checkmk_agent_mode }}"
checkmk_agent_cache_path Voller Pfad zum "cache"-Ordner "{{ checkmk_agent_home }}/cache"
checkmk_agent_cache_user Name des Benutzers, der den "cache"-Ordner und die Dateien besitzen sollte "{{ checkmk_agent_user }}"
checkmk_agent_comment Vollständiger Name des CheckMK Agentenbenutzers CheckMK Agent
checkmk_agent_count_users_crit Eingeloggte Benutzer, kritische Schwelle 15
checkmk_agent_count_users_warn Eingeloggte Benutzer, Warnschwelle 10
checkmk_agent_count_zombie_procs_crit Zombie-Prozesse, kritische Schwelle 10
checkmk_agent_count_zombie_procs_warn Zombie-Prozesse, Warnschwelle 5
checkmk_agent_dest Voller Pfad zur ausführbaren Datei des CheckMK Agenten "{{ checkmk_agent_home }}/check_mk_agent"
checkmk_agent_docker_complete Alle Docker-Module einbeziehen true
checkmk_agent_docker_dest Voller Pfad zur Docker-Konfigurationsdatei "{{ checkmk_agent_home }}/docker.cfg"
checkmk_agent_docker_group Name der Gruppe, die die Docker-Konfigurationsdatei besitzen sollte "{{ checkmk_agent_group }}"
checkmk_agent_docker_mode Datei-Modus-Einstellungen der Docker-Konfigurationsdatei "0644"
checkmk_agent_docker_src Dateiname der Docker-Konfigurationsdateivorlage docker.cfg.j2
checkmk_agent_docker_user Dateiname der Docker-Konfigurationsdateivorlage "{{ checkmk_agent_user }}"
checkmk_agent_group Name der Gruppe, die die ausführbare Datei des CheckMK Agenten besitzen sollte "{{ checkmk_agent_user }}"
checkmk_agent_home Voller Pfad zum Home-Verzeichnis des CheckMK Agentenbenutzers /home/{{ checkmk_agent_user }}
checkmk_agent_local_checks Liste der Prüfungen, die in den "local"-Ordner kopiert werden sollen count_users count_zombie_procs
checkmk_agent_local_checks_async Liste der Prüfungen, die in die "local"-Async-Ordner kopiert werden sollen (Siehe HINWEIS A unten)
checkmk_agent_local_group Name der Gruppe, die den "local"-Ordner und die Dateien besitzen sollte "{{ checkmk_agent_local_user }}"
checkmk_agent_local_mode Datei-Modus-Einstellungen des "local"-Ordners und der Dateien "{{ checkmk_agent_mode }}"
checkmk_agent_local_path Voller Pfad zum "local"-Ordner "{{ checkmk_agent_home }}/local"
checkmk_agent_local_purge Löschen des "local"-Ordners vor dem Synchronisieren false
checkmk_agent_local_user Name des Benutzers, der den "local"-Ordner und die Dateien besitzen sollte "{{ checkmk_agent_user }}"
checkmk_agent_mode Datei-Modus-Einstellungen der ausführbaren Datei des CheckMK Agenten "0755"
checkmk_agent_plugin_checks Liste der Prüfungen, die in den "plugin"-Ordner kopiert werden sollen hpsa lvm mk_inventory.linux mk_iptables mk_nfsiostat mk_sshd_config netstat.linux nfsexports smart
checkmk_agent_plugin_checks_async Liste der Prüfungen, die in die "plugin"-Async-Ordner kopiert werden sollen (Siehe HINWEIS A unten)
checkmk_agent_plugin_group Name der Gruppe, die den "plugin"-Ordner und die Dateien besitzen sollte "{{ checkmk_agent_plugin_user }}"
checkmk_agent_plugin_mode Datei-Modus-Einstellungen des "plugin"-Ordners und der Dateien "{{ checkmk_agent_mode }}"
checkmk_agent_plugin_path Voller Pfad zum "plugin"-Ordner "{{ checkmk_agent_home }}/plugins"
checkmk_agent_plugin_purge Löschen des "plugin"-Ordners vor dem Synchronisieren false
checkmk_agent_plugin_user Name des Benutzers, der den "plugin"-Ordner und die Dateien besitzen sollte "{{ checkmk_agent_user }}"
checkmk_agent_prereqs Liste der benötigten Pakete für eine erfolgreiche Installation python3-docker sudo
checkmk_agent_prereqs_yum Liste der benötigten Pakete für eine erfolgreiche Installation mit Systemen, die YUM als Paketmanager verwenden sudo
checkmk_agent_src Dateiname der Vorlage für die ausführbare Datei des CheckMK Agenten check_mk_agent.linux.j2
checkmk_agent_ssh_group Name der Gruppe, die den ".ssh"-Ordner und die Dateien besitzen sollte "{{ checkmk_agent_group }}"
checkmk_agent_ssh_mode Datei-Modus-Einstellungen des ".ssh"-Ordners und der Dateien "0700"
checkmk_agent_ssh_path Voller Pfad zum ".ssh"-Ordner "{{ checkmk_agent_home }}/.ssh"
checkmk_agent_ssh_user Name des Benutzers, der den ".ssh"-Ordner und die Dateien besitzen sollte "{{ checkmk_agent_user }}"
checkmk_agent_spool_group Name der Gruppe, die den "spool"-Ordner und die Dateien besitzen sollte "{{ checkmk_agent_spool_user }}"
checkmk_agent_spool_mode Datei-Modus-Einstellungen des "spool"-Ordners und der Dateien "{{ checkmk_agent_mode }}"
checkmk_agent_spool_path Voller Pfad zum "spool"-Ordner "{{ checkmk_agent_home }}/spool"
checkmk_agent_spool_user Name des Benutzers, der den "spool"-Ordner und die Dateien besitzen sollte "{{ checkmk_agent_user }}"
checkmk_agent_sudo_dest Voller Pfad zur "sudoers.d"-Datei, die dem CheckMK Agentenbenutzer Sudo-Zugriff auf die ausführbare Datei des CheckMK Agenten gewährt /etc/sudoers.d/99_cmkagent
checkmk_agent_sudo_group Name der Gruppe, die die "sudoers.d"-Datei besitzen sollte "{{ checkmk_agent_sudo_owner }}"
checkmk_agent_sudo_mode Datei-Modus-Einstellungen der "sudoers.d"-Datei "0440"
checkmk_agent_sudo_owner Name des Benutzers, der die "sudoers.d"-Datei besitzen sollte root
checkmk_agent_sudo_src Dateiname der Vorlage für die "sudoers.d"-Datei 99_cmkagent.j2
checkmk_agent_sudo_validate Befehl zur Validierung der "sudoers.d"-Datei; %s wird mit checkmk_agent_sudo_dest gefüllt 'visudo -cf %s'
checkmk_agent_user Anmeldename des CheckMK Agentenbenutzers cmkagent
checkmk_agent_version Version des zu installierenden CheckMK Agenten 2.3.0p13
checkmk_agent_win_config_dest Voller Pfad zur Konfigurationsdatei "{{ checkmk_agent_win_data_folder }}check_mk.user.yml"
checkmk_agent_win_config_optimize Optimieren des Windows-Agenten durch das Entfernen einiger langsamer Prüfungen true
checkmk_agent_win_config_src Dateiname der Vorlage für die Konfigurationsdatei check_mk.user.yml.j2
checkmk_agent_win_data_folder Voller Pfad zum Datenordner des CheckMK Agenten C:\\ProgramData\\checkmk\\agent\\
checkmk_agent_win_install_dest Voller Pfad zur Installationsdatei des CheckMK Agenten c:\\Users\\{{ ansible_user }}\\Downloads\\{{ checkmk_agent_win_install_src }}
checkmk_agent_win_install_src Kurzer Dateiname der Installationsdatei des CheckMK Agenten check_mk_agent.msi
checkmk_agent_win_plugins Liste von Windows-Plugins, die in den "plugin"-Ordner kopiert werden sollen mk_inventory.vbs windows_updates.vbs
checkmk_agent_win_productid Versionsspezifische "Produkt-ID" zur Installation "{B6212139-D124-4782-8F81-05D08203092D}"

HINWEIS A

checkmk_agent_local_checks_async und checkmk_agent_plugin_checks_async - Liste der Prüfungen, die in die "plugin"-Async-Ordner kopiert werden sollen. Laut Dokumentation:

Die Ausgabe von lokalen Prüfungen, ähnlich wie die von Agenten-Plugins, kann zwischengespeichert werden. Dies kann notwendig sein, wenn ein Skript eine längere Bearbeitungszeit hat. Ein solches Skript wird dann asynchron und nur in einem bestimmten Zeitintervall ausgeführt und die letzte Ausgabe wird zwischengespeichert. Wenn der Agent erneut abgefragt wird, bevor die Zeit abgelaufen ist, verwendet er diesen Cache für die lokale Prüfung und gibt ihn in der Agentenausgabe zurück.

Das Format dieser Listen ist wie folgt, wobei checkmk_agent_plugin_checks_async gezeigt wird:

300:
  - apache_status.py
600:
  - ""
900:
  - ""
1800:
  - ""
86400:
  - mk_apt
  - mk_docker.py

Dies führt dazu, dass das Plugin apache_status.py nur einmal alle fünf Minuten ausgeführt wird, und mk_apt und mk_docker.py nur einmal täglich, anstatt bei jeder Prüfung. Damit werden Sekunden von jeder verbleibenden Prüfung des Tages, die den zwischengespeicherten Wert verwendet, eingespart.

Abhängigkeiten

Noch keine definiert.

Beispiel-Playbook und Aufruf

Beispiel, das eine lokale authorized_keys-Datei verwendet:

- hosts: all
  roles:
     - { role: kso512.checkmk_agent, checkmk_agent_authkey_src="local/authorized_keys.j2" }

Beispiel, das den plugin-Ordner vor der Neuerstellung löscht:

$ ansible-playbook site.yml -t checkmk-agent -e "checkmk_agent_plugin_purge=true"

...

TASK [kso512.checkmk_agent : Verzeichnis löschen - plugins | DATEI] ***********
geändert: [instanz]

TASK [kso512.checkmk_agent : Verzeichnis erstellen - plugins | DATEI] ***********
geändert: [instanz]

Lizenz

GNU Allgemeine Öffentliche Lizenz Version 2

Mitwirkende

Wenn Sie Vorschläge oder Ideen haben, zögern Sie bitte nicht, ein Problem zu melden oder das Repository zu forken und eine Merge-Anfrage zu senden.

Autor Informationen

Über das Projekt

A role to install CheckMK RAW edition agent.

Installieren
ansible-galaxy install kso512.checkmk_agent
Lizenz
gpl-2.0
Downloads
357
Besitzer