2 Enregistrement automatique d'agent actif

Aperçu

Il est possible d’autoriser l’auto-enregistrement des agents Zabbix actifs, après quoi le serveur peut commencer à les surveiller. De cette manière, de nouveaux hôtes peuvent être ajoutés à la supervision sans les configurer manuellement sur le serveur.

L’auto-enregistrement peut se produire lorsqu’un agent actif auparavant inconnu demande des contrôles.

Cette fonctionnalité peut être très pratique pour la supervision automatique de nouveaux nœuds Cloud. Dès que vous disposez d’un nouveau nœud dans le Cloud, Zabbix commencera automatiquement à collecter les données de performance et de disponibilité de l’hôte.

L’auto-enregistrement des agents actifs prend également en charge la supervision des hôtes ajoutés avec des contrôles passifs. Lorsque l’agent actif demande des contrôles, à condition que les paramètres de configuration ListenIP ou ListenPort soient définis dans le fichier de configuration, ceux-ci sont également envoyés au serveur. Si plusieurs adresses IP sont spécifiées, la première est envoyée au serveur.

Lors de l’ajout du nouvel hôte auto-enregistré, le serveur utilise l’adresse IP et le port reçus pour configurer l’agent. Si aucune valeur d’adresse IP n’est reçue, celle utilisée pour la connexion entrante est utilisée. Si aucune valeur de port n’est reçue, 10050 est utilisé.

Il est possible de spécifier que l’hôte doit être auto-enregistré avec un nom DNS comme interface d’agent par défaut.

L’auto-enregistrement est relancé :

  • si les informations de métadonnées de l’hôte changent :
    • en raison d’une modification de HostMetadata et du redémarrage de l’agent
    • en raison d’une modification de la valeur renvoyée par HostMetadataItem
  • pour les hôtes créés manuellement dont les métadonnées sont absentes
  • si un hôte est modifié manuellement pour être supervisé par un autre proxy Zabbix
  • si l’auto-enregistrement du même hôte provient d’un nouveau proxy Zabbix

L’intervalle de pulsation de l’auto-enregistrement des agents actifs pour Zabbix server et Zabbix proxy est de 120 secondes. Ainsi, si un hôte découvert est supprimé, l’auto-enregistrement sera relancé dans 120 secondes.

Configuration

Spécifier le serveur

Assurez-vous d'avoir identifié le serveur Zabbix dans le fichier de configuration de l'agent - zabbix_agentd.conf :

ServerActive=10.0.0.1

À moins que vous ne définissiez explicitement un Hostname dans zabbix_agentd.conf, le nom d'hôte système de l'emplacement de l'agent sera utilisé par le serveur pour nommer l'hôte. Le nom d'hôte système sous Linux peut être obtenu en exécutant la commande hostname.

Si Hostname est défini dans la configuration de l'agent Zabbix sous forme de liste d'hôtes séparés par des virgules, des hôtes seront créés pour tous les noms d'hôte indiqués.

Redémarrez l'agent après avoir apporté des modifications au fichier de configuration.

Action pour l’autoréenregistrement de l’agent

Lorsque le serveur reçoit une demande d’autoréenregistrement d’un agent, il appelle une action. Une action avec la source d’événement « Autoréenregistrement » doit être configurée pour l’autoréenregistrement de l’agent.

La configuration de la découverte réseau n’est pas nécessaire pour que les agents actifs s’autoréenregistrent.

Dans l’interface Zabbix, allez dans Alertes → Actions, sélectionnez Actions d’autoréenregistrement et cliquez sur Créer une action :

  • Dans l’onglet Action, donnez un nom à votre action
  • Vous pouvez éventuellement spécifier des conditions. Vous pouvez effectuer une correspondance par sous-chaîne ou par expression régulière dans les conditions pour le nom d’hôte/les métadonnées de l’hôte. Si vous allez utiliser la condition « Métadonnées de l’hôte », consultez la section suivante.
  • Dans l’onglet Opérations, ajoutez les opérations appropriées, telles que « Ajouter un hôte », « Ajouter à un groupe d’hôtes » (par exemple, Hôtes découverts), « Lier des modèles* », etc.

Si les hôtes qui vont s’autoréenregistrer ne sont susceptibles d’être pris en charge que pour la surveillance active uniquement (par exemple, des hôtes protégés par un pare-feu vis-à-vis de votre serveur Zabbix), vous pouvez créer un modèle spécifique comme Template_Linux-active à lier.

Les hôtes créés sont ajoutés au groupe Hôtes découverts (par défaut, configurable dans Administration > Général > Autre). Si vous souhaitez que les hôtes soient ajoutés à un autre groupe, ajoutez une opération Retirer du groupe d’hôtes (en spécifiant « Hôtes découverts ») et ajoutez également une opération Ajouter à un groupe d’hôtes (en spécifiant un autre groupe d’hôtes), car un hôte doit appartenir à un groupe d’hôtes.

Autorenregistrement sécurisé

Une méthode sécurisée d’autorenregistrement est possible en configurant une authentification basée sur PSK avec des connexions chiffrées.

Le niveau de chiffrement est configuré globalement dans Administration > Général > Autorenregistrement. Il est possible de sélectionner l’absence de chiffrement, le chiffrement TLS avec authentification PSK, ou les deux (afin que certains hôtes puissent s’enregistrer sans chiffrement tandis que d’autres le fassent via un chiffrement).

L’authentification par PSK est vérifiée par le serveur Zabbix avant l’ajout d’un hôte. Si elle réussit, l’hôte est ajouté et Connexions depuis/vers l’hôte sont définies sur « PSK » uniquement, avec une identité/clé pré-partagée identique à celle du paramètre global d’autorenregistrement.

Pour garantir la sécurité de l’autorenregistrement sur les installations utilisant des proxys, le chiffrement entre le serveur Zabbix et le proxy doit être activé.

Utilisation de DNS comme interface par défaut

Les paramètres de configuration HostInterface et HostInterfaceItem permettent de spécifier une valeur personnalisée pour l'interface de l'hôte lors de l'enregistrement automatique.

Plus précisément, ils sont utiles si l'hôte doit être enregistré automatiquement avec un nom DNS comme interface d'agent par défaut plutôt que son adresse IP. Dans ce cas, le nom DNS doit être spécifié ou renvoyé comme valeur du paramètre HostInterface ou HostInterfaceItem. Si la valeur de l'un de ces paramètres change — par exemple, d'une adresse IP à un nom DNS ou inversement — l'interface par défaut de l'hôte enregistré automatiquement sera mise à jour en conséquence. Cette mise à jour est appliquée à l'hôte existant, sans en créer un nouveau. Pour envoyer la nouvelle valeur, l'agent doit être redémarré afin de relancer le processus d'enregistrement automatique.

Si les paramètres HostInterface ou HostInterfaceItem ne sont pas configurés, le paramètre listen_dns est utilisé à la place. Cette valeur est déterminée en effectuant une recherche DNS inverse de l'adresse IP de l'agent. Si le DNS inverse n'est pas correctement configuré ou renvoie un nom non valide, cela peut entraîner un enregistrement automatique incorrect ou échoué en raison d'une valeur d'interface non valide.

Utilisation des métadonnées d’hôte

Lorsqu’un agent envoie une requête d’auto-enregistrement au serveur, il envoie son nom d’hôte. Dans certains cas (par exemple, les nœuds du cloud Amazon), un nom d’hôte ne suffit pas au serveur Zabbix pour différencier les hôtes découverts. Les métadonnées d’hôte peuvent être utilisées de manière facultative pour envoyer d’autres informations d’un agent au serveur.

Les métadonnées d’hôte sont configurées dans le fichier de configuration de l’agent - zabbix_agentd.conf. Il existe 2 façons de spécifier les métadonnées d’hôte dans le fichier de configuration :

HostMetadata
HostMetadataItem

Voir la description des options dans le lien ci-dessus.

Le paramètre HostMetadataItem peut renvoyer jusqu’à 65535 points de code UTF-8. Une valeur plus longue sera tronquée.

Notez que sous MySQL, la longueur maximale effective en caractères sera inférieure si la valeur renvoyée contient des caractères multioctets. Par exemple, une valeur contenant uniquement des caractères sur 3 octets sera limitée à 21844 caractères au total, tandis qu’une valeur contenant uniquement des caractères sur 4 octets sera limitée à 16383 caractères.

Une tentative d’auto-enregistrement a lieu chaque fois qu’un agent actif envoie au serveur une requête pour actualiser les contrôles actifs. Le délai entre les requêtes est spécifié dans le paramètre RefreshActiveChecks de l’agent. La première requête est envoyée immédiatement après le redémarrage de l’agent.

Exemples

Enregistrement automatique par OS à l’aide de HostMetadata

Supposons que vous souhaitiez que les hôtes soient enregistrés automatiquement par le serveur Zabbix. Vous disposez d’agents Zabbix actifs (voir la section « Configuration » ci-dessus) sur votre réseau. Il y a des hôtes Windows et des hôtes Linux sur votre réseau, et vous avez les modèles « Linux by Zabbix agent » et « Windows by Zabbix agent » disponibles dans votre interface Zabbix. Ainsi, lors de l’enregistrement de l’hôte, vous souhaitez que le modèle Linux/Windows approprié soit appliqué à l’hôte en cours d’enregistrement. Par défaut, seul le nom d’hôte est envoyé au serveur lors de l’enregistrement automatique, ce qui peut ne pas être suffisant. Afin de vous assurer que le modèle approprié est appliqué à l’hôte, vous devez utiliser les métadonnées de l’hôte.

Configuration du frontend

La première chose à faire est de configurer le frontend. Créez 2 actions. La première action :

  • Nom : Autorenregistrement de l'hôte Linux
  • Conditions : Les métadonnées de l'hôte contiennent Linux
  • Opérations : Lier les modèles : Linux by Zabbix agent

Vous pouvez ignorer une opération « Add host » dans ce cas. Lier un modèle à un hôte nécessite d'abord l'ajout de l'hôte ; le serveur le fera donc automatiquement.

La deuxième action :

  • Nom : Autorenregistrement de l'hôte Windows
  • Conditions : Les métadonnées de l'hôte contiennent Windows
  • Opérations : Lier les modèles : Windows by Zabbix agent

Configuration de l’agent

Vous devez maintenant configurer les agents. Ajoutez la ligne suivante aux fichiers de configuration de l’agent :

HostMetadataItem=system.uname

De cette façon, vous vous assurez que les métadonnées de l’hôte contiendront « Linux » ou « Windows » selon l’hôte sur lequel un agent s’exécute. Voici un exemple de métadonnées d’hôte dans ce cas :

Linux: Linux server3 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux
Windows: Windows WIN-0PXGGSTYNHO 6.0.6001 Windows Server 2008 Service Pack 1 Intel IA-32

N’oubliez pas de redémarrer l’agent après avoir apporté des modifications au fichier de configuration.

Utilisation de HostMetadata pour contrôler l’autorégistration et les modèles

Étape 1 - Protéger l’enregistrement avec HostMetadata

Utilisez les métadonnées d’hôte pour offrir une protection de base contre l’enregistrement d’hôtes indésirables.

Configuration du frontend

Créez une action dans le frontend en utilisant un code secret difficile à deviner afin d’empêcher les hôtes indésirables :

  • Nom : Action d’autorégistration Linux
  • Conditions :
    • Type de calcul : AND
    • Condition (A) : Les métadonnées de l’hôte contiennent //Linux//
    • Condition (B) : Les métadonnées de l’hôte contiennent //21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae//
  • Opérations :
    • Envoyer un message aux utilisateurs : Admin via tous les médias
    • Ajouter aux groupes d’hôtes : Serveurs Linux
    • Lier les modèles : Linux by Zabbix agent

Veuillez noter que cette méthode seule n’offre pas une protection forte, car les données sont transmises en texte brut. Un rechargement du cache de configuration est nécessaire pour que les modifications prennent effet immédiatement.

Configuration de l'agent

Ajoutez la ligne suivante au fichier de configuration de l'agent :

HostMetadata=Linux    21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

où « Linux » est une plateforme, et le reste de la chaîne est le texte secret difficile à deviner.

N'oubliez pas de redémarrer l'agent après avoir apporté des modifications au fichier de configuration.

Étape 2 - Ajouter un modèle à l’hôte enregistré

Il est possible d’ajouter des modèles supplémentaires à un hôte déjà enregistré. Dans ce cas, le modèle MySQL by Zabbix agent sera lié uniquement aux hôtes dont le HostMetadata contient le jeton MySQL.

Configuration du frontend

Mettez à jour l’action dans le frontend :

  • Nom : Action d’autorégistration Linux
  • Conditions :
    • Type de calcul : AND
    • Condition (A) : Les métadonnées de l’hôte contiennent Linux
    • Condition (B) : Les métadonnées de l’hôte contiennent 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
    • Condition (C) : Les métadonnées de l’hôte contiennent MySQL
  • Opérations :
    • Envoyer un message aux utilisateurs : Admin via tous les médias
    • Ajouter aux groupes d’hôtes : Serveurs Linux
    • Lier les modèles : Linux by Zabbix agent
    • Lier les modèles : MySQL by Zabbix Agent

Configuration de l’agent

Mettez à jour la ligne suivante dans le fichier de configuration de l’agent :

HostMetadata=MySQL on Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

N’oubliez pas de redémarrer l’agent après avoir apporté des modifications au fichier de configuration.