La réception des traps SNMP est l'opposé de l'interrogation des périphériques compatibles SNMP.
Dans ce cas, les informations sont envoyées depuis un périphérique compatible SNMP et sont "collectées" par Zabbix.
Habituellement, les traps sont envoyées lors de certaines modifications de condition et l'agent se connecte au serveur sur le port 162 (par opposition au port 161 du côté de l'agent utilisé pour les requêtes). L'utilisation des traps peut détecter certains problèmes de courte durée qui surviennent au cours de l'intervalle de requête et peuvent être ignorés par les données de la requête.
La réception des traps SNMP dans Zabbix est conçue pour fonctionner avec snmptrapd et l'un des mécanismes intégrés pour transmettre les traps à Zabbix - un script Perl ou SNMPTT.
Le flux de travail de la réception d'un trap :
La configuration des champs suivants dans l'interface web est spécifique pour ce type d'élément :
Dans Configuration → Hôtes, dans le champ Interface hôte, définissez une interface SNMP avec l'adresse IP ou DNS correcte. L'adresse de chaque trap reçu est comparé aux adresses IP et DNS de toutes les interfaces SNMP pour trouver les hôtes correspondants.
Dans le champs Clé utilisez l'une des clés de trap SNMP suivantes :
Clé | ||
---|---|---|
Description | Valeur de retour | Commentaires |
snmptrap[regexp] | ||
Reçoit tous les traps SNMP qui correspondent à l'expression régulière spécifiée dans regexp. Si regexp n'est pas spécifié, reçoit tous les traps | Trap SNMP | Cet élément peut être défini uniquement pour les interfaces SNMP. Cet élément est supporté depuis Zabbix 2.0.0. Remarque : à partir de Zabbix 2.0.5, les macros utilisateur et les expressions régulières globales sont prises en charge dans le paramètre de cette clé d'élément. |
snmptrap.fallback | ||
Reçoit tous les traps SNMP qui n'ont été reçus par aucun élément snmptrap[] pour cette interface. | Trap SNMP | Cet élément peut être défini uniquement pour les interfaces SNMP. Cet élément est supporté depuis Zabbix 2.0.0. |
La correspondance d'expressions régulières sur plusieurs lignes n'est pas prise en charge pour le moment.
Définissez le Type d'information à 'Journal' pour les horodatages à analyser. Notez que d'autres formats tels que 'Numerique' sont également acceptables, mais peuvent nécessiter un gestionnaire de traps personnalisé.
Pour que la supervision des traps SNMP fonctionne, elle doit d'abord être correctement configurée.
Pour lire les traps, le serveur ou le proxy Zabbix doit être configuré pour démarrer le trappeur SNMP et pointer vers le fichier de traps en cours d'écriture par SNMPTT ou un récepteur de traps perl. Pour ce faire, éditez le fichier de configuration (zabbix_server.conf ou zabbix_proxy.conf) :
Si le paramètre systemd PrivateTmp est utilisé, il est peu probable que ce fichier fonctionne dans /tmp.
Au début, snmptrapd devrait être configuré pour utiliser SNMPTT.
Pour de meilleures performances, SNMPTT doit être configuré en tant que démon en utilisant snmptthandler-embedded pour lui transmettre les traps. Voir les instructions pour configurer SNMPTT sur sa page d'accueil :
http://snmptt.sourceforge.net/docs/snmptt.shtml
Lorsque SNMPTT est configuré pour recevoir les traps, configurez SNMPTT pour consigner les traps :
Maintenant formatez les traps pour que Zabbix les reconnaisse (éditez snmptt.conf) :
N'utilisez pas de traps inconnus - Zabbix ne pourra pas les reconnaître. Les traps inconnus peuvent être gérés en définissant un événement général dans snmptt.conf :
EVENT general .* "General event" Normal
Prérequis : Perl, Net-SNMP compilé avec --enable-embedded-perl (fait par défaut depuis Net-SNMP 5.4)
Le récepteur de traps Perl (recherchez misc/snmptrap/zabbix_trap_receiver.pl) peut être utilisé pour transférer les traps au serveur Zabbix directement depuis snmptrapd. Pour le configurer :
Si le nom du script n'est pas entre quote, snmptrapd refusera de démarrer avec des messages similaires à ceux-ci :
Tous les récepteurs de traps perl personnalisés et la configuration de SNMPTT doivent formater le trap de la manière suivante : [timestamp] [trap, partie 1] ZBXTRAP [adresse] [trap, partie 2], où
Notez que "ZBXTRAP" et "[adresse]" seront supprimés du message pendant le traitement. Si le trap est formaté autrement, Zabbix peut analyser les traps de façon inattendue.
Exemple de trap :
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal “Status Events” localhost - ZBXTRAP 192.168.1.1 Link down on interface 2. Admin state: 1. Operational state: 2
Cela entraînera le trap suivant pour l'interface SNMP avec IP = 192.168.1.1 :
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" localhost - Link down on interface 2. Admin state: 1.
Zabbix "prend en charge les fichiers volumineux" pour les fichiers de trapper SNMP. La taille limite maximum que Zabbix peut lire est 2^63 (8 EiB). Notez que le système de fichier peut imposer une limite inférieure sur la taille du fichier.
Zabbix ne fournit aucun système de rotation des logs - cela devrait être géré par l'utilisateur. La rotation des logs doit d'abord renommer l'ancien fichier et seulement le supprimer plus tard afin qu'aucun trap ne soit perdu :
En raison de l'implémentation du fichier de trap, Zabbix a besoin du système de fichiers pour prendre en charge les inodes afin de différencier les différents fichiers (les informations sont acquises par un appel stat()).
Cet exemple utilise snmptrapd + SNMPTT pour transmettre les traps au serveur Zabbix :
Cela a pour résultat :
Cet exemple simple utilise SNMPTT comme traphandle. Pour de meilleures performances sur les systèmes de production, utilisez le Perl intégré pour transmettre les traps de snmptrapd à SNMPTT ou directement à Zabbix.