Rolle monitoring
Installiert und konfiguriert den Zabbix Agent 2 auf Debian-Hosts,
generiert/verteilt pro Host eine TLS-PSK, konfiguriert das Docker-Plugin
(bei vorhandenem Socket) und registriert den Host über die Zabbix-API
einschließlich Template-Verlinkung.
Siehe auch das Playbook playbooks/monitoring.yml sowie die
Repo-README.
Voraussetzungen
- Debian-Ziel-Host
- Erreichbarer Zabbix-Server (API & Agent-Polling)
community.zabbix Collection
- Vault-Secret
monitoring_zabbix_api_password in vault.yml
- OpenSSL auf dem Ansible-Controller (für PSK-Generierung)
Einbindung
Funktionsweise
tasks/main.yml importiert die Subtasks in folgender Reihenfolge (alle mit
Tag monitoring):
validate.yml – bricht bei Nicht-Debian ab, prüft dass
monitoring_zabbix_passive_servers gesetzt ist und (bei aktivierter
Registrierung) API-URL/-User/-Passwort vorliegen. Stellt sicher, dass
bei gesetztem monitoring_zabbix_proxy auch eine Proxy-Adresse definiert ist.
install-repository.yml – installiert ca-certificates, lädt das
Zabbix-Release-Paket herunter, installiert es und aktualisiert den
apt-Cache.
install-agent.yml – installiert zabbix-agent2 und aktiviert/startet
den Service.
configure-docker.yml – prüft, ob der Docker-Socket existiert. Falls
ja: Zabbix-User zur Docker-Gruppe hinzufügen, Plugin-Config-Verzeichnis
anlegen, docker.conf aus Template ausliefern. Falls nein: Plugin-Config
entfernen.
configure-psk.yml – stellt PSK-Store auf dem Controller sicher
(<playbook_dir>/../.zabbix-psk), generiert pro Host eine PSK mit
openssl rand -hex, persistiert sie im Store und verteilt sie auf den
Zielhost (/etc/zabbix/zabbix_agent2.psk, Mode 0600).
configure-agent.yml – schreibt zabbix_agent2.conf aus Template.
register-host.yml – registriert bzw. aktualisiert den Host über die
Zabbix-API (community.zabbix.zabbix_host). Verknüpft Standard-Templates
und ggf. Docker-Templates. Unterscheidet zwischen Proxy- und
Server-Modus (zwei Tasks, gegeneinander exklusiv). Delegiert an localhost.
Variablen
Zabbix-Agent
| Variable |
Typ |
Default |
Beschreibung |
monitoring_zabbix_version |
string |
7.0 |
Zabbix-Hauptversion |
monitoring_zabbix_release_package |
string |
abgeleitet |
Dateiname des Release-Pakets |
monitoring_zabbix_release_url |
string |
abgeleitet |
Download-URL des Release-Pakets |
monitoring_zabbix_release_path |
string |
/tmp/<package> |
lokaler Ablagepfad auf dem Zielhost |
monitoring_zabbix_agent_package |
string |
zabbix-agent2 |
Zu installierendes Agent-Paket |
monitoring_zabbix_agent_service |
string |
zabbix-agent2 |
systemd-Service-Name |
monitoring_zabbix_config_file |
string |
/etc/zabbix/zabbix_agent2.conf |
Pfad zur Agent-Konfiguration |
monitoring_zabbix_agent_user |
string |
zabbix |
Benutzer, unter dem der Agent läuft |
monitoring_zabbix_passive_servers |
list |
["192.168.212.1"] |
Erlaubte Server für passive Checks (Server=) |
monitoring_zabbix_active_servers |
list |
"" |
Server für aktive Checks (ServerActive=) |
monitoring_zabbix_listen_port |
int |
10050 |
Listen-Port des Agents |
Docker-Plugin
| Variable |
Typ |
Default |
Beschreibung |
monitoring_zabbix_docker_group |
string |
docker |
Docker-Gruppe für Socket-Zugriff |
monitoring_zabbix_docker_socket_path |
string |
/var/run/docker.sock |
Pfad zum Docker-Socket |
monitoring_zabbix_docker_plugin_config_file |
string |
/etc/zabbix/zabbix_agent2.d/plugins.d/docker.conf |
Pfad zur Plugin-Config |
monitoring_zabbix_docker_endpoint |
string |
unix://<socket> |
Docker-Endpoint für das Plugin |
TLS / PSK
| Variable |
Typ |
Default |
Beschreibung |
monitoring_zabbix_tls_connect |
string |
psk |
TLS-Modus für ausgehende Verbindungen |
monitoring_zabbix_tls_accept |
string |
psk |
TLS-Modus für eingehende Verbindungen |
monitoring_zabbix_psk_identity |
string |
{{ inventory_hostname }} |
PSK-Identity (hostname) |
monitoring_zabbix_psk_file |
string |
/etc/zabbix/zabbix_agent2.psk |
Pfad zur PSK-Datei auf dem Zielhost |
monitoring_zabbix_psk_bits |
int |
256 |
PSK-Länge in Bits (32 Byte → 64 Hex-Chars) |
monitoring_zabbix_psk_store |
string |
{{ playbook_dir }}/../.zabbix-psk |
PSK-Store-Verzeichnis auf dem Controller |
monitoring_zabbix_psk_store_mode |
string |
0700 |
Berechtigung des PSK-Stores |
Zabbix Proxy (optional)
| Variable |
Typ |
Default |
Beschreibung |
monitoring_zabbix_proxy |
string |
"" |
Name des Proxys in Zabbix (leer = direkter Server-Modus) |
monitoring_zabbix_proxy_address |
string |
"" |
IP/DNS des Proxys, den der Agent kontaktiert |
Zabbix API / Host-Registrierung
| Variable |
Typ |
Default |
Beschreibung |
monitoring_zabbix_api_url |
string |
https://zabbix/api_jsonrpc.php |
API-URL |
monitoring_zabbix_api_user |
string |
Admin |
API-Benutzer |
monitoring_zabbix_api_password |
string |
(Vault) |
API-Passwort – MUSS in vault.yml gesetzt werden |
monitoring_zabbix_api_validate_certs |
bool |
true |
TLS-Zertifikate prüfen |
monitoring_zabbix_register_host |
bool |
true |
Host automatisch registrieren |
monitoring_zabbix_host_name |
string |
{{ inventory_hostname }} |
Hostname in Zabbix |
monitoring_zabbix_host_groups |
list |
["Linux servers"] |
Zabbix-Host-Gruppen |
monitoring_zabbix_host_interface_ip |
string |
{{ ansible_host }} |
Interface-IP |
monitoring_zabbix_host_interface_port |
string |
{{ monitoring_zabbix_listen_port }} |
Interface-Port |
monitoring_zabbix_host_inventory_mode |
string |
manual |
Inventory-Modus |
monitoring_zabbix_templates |
list |
["Linux by Zabbix agent", "Zabbix agent2"] |
Standard-Templates |
monitoring_zabbix_docker_templates |
list |
["Docker by Zabbix agent2"] |
Zusätzliche Templates bei vorhandenem Docker-Socket |
Inventory-Overrides
In inventory/group_vars/home.yml werden u. a. überschrieben:
monitoring_zabbix_passive_servers, monitoring_zabbix_active_servers,
monitoring_zabbix_api_url, monitoring_zabbix_host_groups,
monitoring_zabbix_templates, monitoring_zabbix_docker_templates,
monitoring_zabbix_proxy, monitoring_zabbix_proxy_address.
Templates
| Template |
Ziel |
zabbix_agent2.conf.j2 |
/etc/zabbix/zabbix_agent2.conf |
docker.conf.j2 |
/etc/zabbix/zabbix_agent2.d/plugins.d/docker.conf |
zabbix_agent2.conf.j2 berücksichtigt Proxy-Konfiguration (vereinigt
Passive-Servers mit Proxy-Adresse, setzt ServerActive auf Proxy).
Handler
| Handler |
Auslöser |
Restart Zabbix Agent |
Änderungen an Config, PSK oder Docker-Plugin |
Tags
monitoring – alle Subtasks sind mit diesem Tag versehen:
Abhängigkeiten
community.zabbix Collection (zabbix_host-Modul)
ansible.builtin (Bordmittel)
- OpenSSL auf dem Controller (für PSK-Generierung)
Hinweise
- PSK-Store: Pro Host wird eine PSK unter
<playbook_dir>/../.zabbix-psk/<hostname>.psk (git-ignored) gespeichert.
Bei Host-Umbenennung PSK migrieren oder neu generieren – sonst stimmt die
Zabbix-Registrierung nicht.
- API-Passwort MUSS in
vault.yml als monitoring_zabbix_api_password
gesetzt sein; die Validate-Tasks brechen sonst ab.
- Docker-Plugin wird nur konfiguriert, wenn der Socket existiert – sonst
wird eine eventuell vorhandene Plugin-Config entfernt (Idempotenz).
- Die Registrierung wird delegiert an localhost ausgeführt, da der
Controller den API-Zugang besitzt.
- Proxy- und Server-Modus schließen sich gegenseitig aus (zwei Tasks mit
entgegengesetzten
when-Bedingungen).