Introduction
Nous avions vu dans cet article comment ajouter des hôtes Zabbix de 3 façons différentes.
L'auto-enregistrement d'un agent actif est la 4ème façon d'en ajouter.
C'est un mécanisme pratique et automatisé pour inscrire un agent dans l'infrastructure Zabbix sans intervention manuelle.
Cet article explore le fonctionnement technique de cette fonctionnalité.
Qu'est-ce qu'un Agent Actif Zabbix ?
Un agent Zabbix peut fonctionner de deux manières : en tant qu'agent passif ou en tant qu'agent actif.
Agent Passif
Il attend que le serveur Zabbix lui envoie des requêtes pour obtenir des données.
Agent Actif
Il prend l'initiative de collecter des données et de les envoyer directement au serveur Zabbix.
L'agent actif est particulièrement utile dans les environnements où les serveurs sont derrière des pare-feu stricts ou lorsqu'il est préférable de minimiser les connexions réseau entrantes vers les machines surveillées.
Qu'est-ce que l'Auto-enregistrement ?
L'auto-enregistrement est un processus où un agent actif Zabbix s'inscrit automatiquement auprès du serveur Zabbix lors de son démarrage. Cela est particulièrement utile dans des environnements dynamiques tels que les infrastructures cloud, où de nouveaux serveurs sont fréquemment déployés et doivent être surveillés sans configuration manuelle répétée.
Fonctionnement technique de l'Auto-enregistrement
Voici une description détaillée du fonctionnement technique de l'auto-enregistrement d'un agent actif Zabbix.
Configuration de l'Agent Actif
L'agent Zabbix est configuré pour fonctionner en mode actif. Cela inclut la spécification du serveur Zabbix (ou proxy) avec lequel l'agent communiquera.
C'est au niveau de l'interface web de Zabbix, le Frontend, que les autres paramètres tels que le groupe d'hôtes, le modèle à associer, etc, sont définis.
Exemple de configuration dans "zabbix_agentd.conf" ou "zabbix_agent2.conf" :
```ini
Server=zabbix-server.domain.com
ServerActive=zabbix-server.domain.com
Hostname=auto_reg_host
HostMetadata=webserver
```
- "ServerActive" : Adresse du serveur Zabbix pour les connexions actives.
- "Hostname" : Nom sous lequel l'agent apparaîtra sur le serveur.
- "HostMetadata" : Informations supplémentaires pour aider lors de l'enregistrement.
Démarrage de l'agent
Lors du démarrage, l'agent en mode actif commence à collecter des données locales. Simultanément, il envoie une demande d'auto-enregistrement au composant serveur.
Envoi de la demande d'Auto-enregistrement
L'agent actif contacte le composant serveur défini par la variable "ServerActive" de son fichier de configuration au démarrage. La requête envoyée contient des informations telles que le nom de l'hôte ("Hostname"), les métadonnées ("HostMetadata"), et potentiellement d'autres informations de configuration.
Si vous passez votre composant server en mode "Debug", vous pouvez voir le processus d'Auto-enregistrement.
24897:20180905:101024.000 trapper got '{"request":"active checks","host":"ip-izi-it.compute.internal"}'
24897:20180905:101024.000 In is_ip4() ip:'10.0.0.48'
24897:20180905:101024.000 In get_hostid_by_host() host:'ip-izi-it.compute.internal'
24897:20180905:101024.000 query [txnlev:0] [select hostid,status,tls_accept,tls_issuer,tls_subject,tl s_psk_identity from hosts where host='ip-izi-it.compute.internal' and status in (0,1) and flags<>2 and proxy_hostid is null]
24897:20180905:101024.002 query [txnlev:1] [select autoreg_hostid,host from autoreg_host where proxy_hostid is null and host='ip-izi-it.compute.internal']
24897:20180905:101024.002 query [txnlev:1] [update autoreg_host set listen_ip='10.0.0.48',listen_dns='ip-izi-it.compute.internal',listen_port=10050,host_metadata='webserver' where autoreg_hostid=1820;
24897:20180905:101024.003 query [txnlev:1] [select null from hosts where host='ip-izi-it.compute.internal' and status=3]
24897:20180905:101024.003 query [txnlev:1] [select hostid,proxy_hostid from hosts where host='ip-izi-it.compute.internal' and flags<>2 and status in (0,1) order by hostid limit 1]
24897:20180905:101024.004 query [txnlev:1] [insert into hosts (hostid,proxy_hostid,host,name,description) values (10258,null,'ip-izi-it.compute.internal','ip-izi-it.compute.internal','');
24897:20180905:101024.005 query [txnlev:1] [insert into interface (interfaceid,hostid,main,type,useip,ip,dns,port) values (2,10258,1,1,1,'10.0.0.48','ip-izi-it.compute.internal',10050)]
Traitement par le composant serveur
Le composant serveur (serveur Zabbix ou proxy Zabbix) reçoit la demande et traite les informations fournies. En fonction des métadonnées et des règles d'auto-enregistrement configurées dans l'interface Zabbix, le serveur décide comment intégrer ce nouvel hôte :
- Assignation à un groupe d'hôtes spécifique.
- Application de modèles prédéfinis.
- Définition de tags, de macros, mode d'inventaire, etc.
Par exemple, une règle pourrait spécifier que tous les hôtes avec "HostMetadata=webserver" soient ajoutés au groupe "Web Servers" et aient un modèle de surveillance de base pour les serveurs web.
Une fois l'hôte créé et les modèles appliqués, l'agent commence alors à envoyer régulièrement des données de surveillance en fonction des éléments appliqués par les modèles.
Avantages et cas d'usage
L'auto-enregistrement présente plusieurs avantages :
Automatisation
Réduction de la charge administrative en automatisant l'intégration de nouveaux hôtes dans Zabbix.
Scalabilité
Particulièrement utile dans des environnements où des serveurs sont fréquemment ajoutés ou supprimés, comme dans des environnements cloud ou de conteneurs.
Conclusion
L'auto-enregistrement d'un agent actif Zabbix est une fonctionnalité puissante qui simplifie la gestion des environnements complexes et en évolution rapide. En configurant correctement les agents et les règles, vous pouvez automatiser l'enregistrement et la surveillance des nouveaux hôtes, garantissant ainsi une surveillance cohérente et efficace. Cette automatisation non seulement améliore l'efficacité opérationnelle, mais permet également de minimiser les erreurs humaines dans la configuration des agents.