kso512.checkmk_agent
checkmk_agent
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:
- Debian 10 "Buster"
- Debian 11 "Bullseye"
- Debian 12 "Bookworm"
- Fedora 38
- Fedora 39
- Fedora 40
- Microsoft Windows Server 2019 / Microsoft Windows 10
- Microsoft Windows Server 2022 / Microsoft Windows 11
- Ubuntu 20.04 LTS "Focal Fossa"
- Ubuntu 22.04 LTS "Jammy Jellyfish"
- Ubuntu 24.04 LTS "Noble Numbat"
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
auf120
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
- Beschreibung:
- 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
A role to install CheckMK RAW edition agent.
ansible-galaxy install kso512.checkmk_agent