Chapitre 02

Agents, proxies et autoregistration

Un hôte ajouté à la main est un hôte qu'on oubliera un jour de retirer, ou d'ajouter. Ce chapitre rend l'arrivée d'une machine dans Zabbix automatique.

Niveau avancé  ·  Lecture 12 min  ·  Base Zabbix 8.0 LTS

01Agent 2, en mode actif

Zabbix propose deux agents. L'agent historique, écrit en C, et l'agent 2, écrit en Go, qui ajoute un système de greffons pour PostgreSQL, MySQL, Redis, Docker, les certificats et bien d'autres. Nous déployons l'agent 2 partout où il est disponible.

Chaque agent fonctionne en deux modes, qui peuvent coexister :

  • passif : le serveur interroge l'agent, valeur par valeur ;
  • actif : l'agent récupère sa liste d'éléments auprès du serveur, collecte seul et envoie ses résultats par lots.

Le mode actif charge beaucoup moins le serveur, traverse les pare-feu dans le bon sens (de l'agent vers le serveur) et suit seul une bascule de grappe. C'est notre choix par défaut, et les modèles officiels existent dans les deux versions : prenez celles suffixées « active ».

Fichier /etc/zabbix/zabbix_agent2.conf, l'essentiel
# Server vide : mode passif desactive, l'agent n'ecoute sur aucun port
Server=

# les deux noeuds de la grappe, ou le proxy du site
ServerActive=10.10.0.61;10.10.0.62

# le nom de l'hote dans Zabbix, pris sur le systeme
HostnameItem=system.hostname

# lu par l'autoregistration, voir plus bas
HostMetadata=linux debian web client-acme

# chiffrement, voir la section suivante
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=PSK-ACME-WEB
TLSPSKFile=/etc/zabbix/zabbix_agent2.psk
Les vérifications à distance ont toujours besoin du mode passif

Quelques usages, comme les commandes à distance lancées depuis l'interface, exigent que l'agent écoute. Si vous en avez besoin, ouvrez le mode passif seulement vers l'adresse du proxy ou des serveurs, jamais vers tout le réseau.

02Chiffrer avec une clé partagée

Par défaut, le trafic entre agents, proxies et serveur circule en clair. Sur un réseau d'administration isolé, c'est un risque mesuré ; dès qu'il traverse Internet ou un réseau partagé, il faut chiffrer. La clé partagée, PSK, est le mode le plus simple à industrialiser.

Générer la clé sur l'hôte supervisé
openssl rand -hex 32 > /etc/zabbix/zabbix_agent2.psk
chown zabbix:zabbix /etc/zabbix/zabbix_agent2.psk
chmod 600 /etc/zabbix/zabbix_agent2.psk
systemctl restart zabbix-agent2

Une clé par client, et non par hôte, est un compromis raisonnable : assez fin pour qu'une fuite ne touche qu'un périmètre, assez simple pour être déployé par Ansible. L'identité PSK, en revanche, doit être unique par clé, et Zabbix refuse deux identités identiques associées à des clés différentes.

03L'autoregistration

Un agent actif inconnu du serveur se présente avec son nom et ses métadonnées. Une action d'autoregistration décide alors quoi en faire : créer l'hôte, le ranger dans un groupe, lui lier des modèles, lui poser des étiquettes. Combinée au déploiement de l'agent par Ansible, elle rend l'ajout d'une machine entièrement automatique.

Condition sur les métadonnéesOpérations
Contient linuxAjouter l'hôte, groupe Serveurs Linux, modèle Linux by Zabbix agent active
Contient webLier les modèles Nginx et certificats
Contient client-acmeGroupe Clients/ACME, étiquette client:acme
Contient proxmoxGroupe Proxmox, modèle de noeud, voir chapitre 03

Chaque mot des métadonnées déclenche une action indépendante : l'ordre n'a pas d'importance et les combinaisons se font seules. Dans Administration, Général, Autoregistration, n'autorisez que les connexions chiffrées par PSK : sans cela, n'importe quelle machine qui connaît l'adresse du serveur peut s'inscrire.

Prévoir la sortie autant que l'entrée

L'autoregistration crée, elle ne supprime jamais. Un serveur décommissionné reste dans Zabbix et finit par déclencher une alerte d'absence de données. Prévoyez la suppression dans la procédure de décommissionnement, idéalement par l'API depuis le même outil qui déploie l'agent (chapitre 05).

04Les proxies

Un proxy collecte pour le compte du serveur, garde les données dans sa propre base en cas de coupure, et les transmet ensuite. C'est l'outil des sites distants, des réseaux clients isolés et des grandes plateformes. Nous en installons un dès qu'un deuxième site apparaît, et un par client chez les clients que nous infogérons.

Proxy actif léger sur SQLite
apt install zabbix-proxy-sqlite3 zabbix-agent2
Fichier /etc/zabbix/zabbix_proxy.conf
# mode actif : le proxy contacte le serveur, aucun flux entrant sur le site
ProxyMode=0
Server=10.10.0.61;10.10.0.62
Hostname=proxy-acme-paris

DBName=/var/lib/zabbix/zabbix_proxy.db

# autonomie en cas de coupure avec le serveur : 3 jours
ProxyOfflineBuffer=72

# tampon en memoire, base seulement en debordement
ProxyBufferMode=hybrid
ProxyMemoryBufferSize=64M

TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=PSK-PROXY-ACME
TLSPSKFile=/etc/zabbix/zabbix_proxy.psk

SQLite suffit jusqu'à quelques centaines de valeurs par seconde par proxy. Au-delà, le même proxy s'installe sur PostgreSQL. Dans l'interface, déclarez le proxy sous le même nom que Hostname, avec la même identité PSK, puis rattachez-lui les hôtes du site.

05Les groupes de proxies

Depuis la version 7.0, plusieurs proxies peuvent former un groupe : les hôtes sont répartis automatiquement entre ses membres, et redistribués si l'un d'eux tombe. Un site important reçoit ainsi deux petits proxies plutôt qu'un gros, et la perte de l'un n'interrompt plus la collecte.

Réglage du groupeNotre valeurEffet
Délai de bascule1 minuteTemps avant de redistribuer les hôtes d'un proxy muet
Nombre minimal de proxies en ligne1En dessous, le groupe est considéré comme hors service
Les agents doivent connaître tout le groupe

Un agent actif rattaché à un groupe doit avoir l'adresse de tous ses proxies dans ServerActive. Le proxy qu'il contacte lui indique ensuite lequel le prend en charge. Un agent qui ne connaît qu'un proxy perd sa supervision avec lui.

06Les flux à ouvrir

SourceDestinationPortUsage
Agents actifsServeurs ou proxies10051/tcpEnvoi des données
Proxies actifsServeurs de la grappe10051/tcpConfiguration et données
Serveurs ou proxiesAgents passifs10050/tcpSeulement si le mode passif est utilisé
Navigateurs, APIFrontal web443/tcpInterface et API
Serveurs ZabbixPostgreSQL5432/tcpBase de données

Une supervision qui veille pendant que vous dormez

Nous concevons, installons et exploitons des plateformes de supervision pour des PME, des hébergeurs et des collectivités : Zabbix, Prometheus et Grafana, ou plus léger quand le besoin l'est. Reprise d'une supervision existante, réglage des alertes qui sonnent pour rien, astreinte : nous intervenons au forfait comme au long cours.