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 ».
# 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
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.
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ées | Opérations |
|---|---|
Contient linux | Ajouter l'hôte, groupe Serveurs Linux, modèle Linux by Zabbix agent active |
Contient web | Lier les modèles Nginx et certificats |
Contient client-acme | Groupe Clients/ACME, étiquette client:acme |
Contient proxmox | Groupe 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.
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.
apt install zabbix-proxy-sqlite3 zabbix-agent2
# 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 groupe | Notre valeur | Effet |
|---|---|---|
| Délai de bascule | 1 minute | Temps avant de redistribuer les hôtes d'un proxy muet |
| Nombre minimal de proxies en ligne | 1 | En dessous, le groupe est considéré comme hors service |
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
| Source | Destination | Port | Usage |
|---|---|---|---|
| Agents actifs | Serveurs ou proxies | 10051/tcp | Envoi des données |
| Proxies actifs | Serveurs de la grappe | 10051/tcp | Configuration et données |
| Serveurs ou proxies | Agents passifs | 10050/tcp | Seulement si le mode passif est utilisé |
| Navigateurs, API | Frontal web | 443/tcp | Interface et API |
| Serveurs Zabbix | PostgreSQL | 5432/tcp | Base 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.