Config snmptrapd
This commit is contained in:
parent
71f566788e
commit
5f859fccd3
86
HowtoSNMP.md
86
HowtoSNMP.md
|
@ -104,8 +104,94 @@ DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (107510) 0:17:55.10
|
|||
|
||||
### Recevoir des traps SNMP
|
||||
|
||||
#### snmptrapd
|
||||
|
||||
##### Installation
|
||||
|
||||
Le démon `snmptrapd` permet de recevoir et logger les traps SNMP, puis éventuellement exécuter une action suite à la réception d'une trap :
|
||||
|
||||
~~~
|
||||
# apt install snmptrapd
|
||||
~~~
|
||||
|
||||
Cependant, l'installation de ce paquet installe également le paquet `snmpd`, ce qui installe donc un agent SNMP sur notre manager SNMP. Si l'on souhaite que notre manager reste uniquement manager, il faut désactiver les fonctionnalités de l'agent, en éditant `/etc/snmp/snmpd.conf`. On indique à l'agent de n'écouter sur aucune IP :
|
||||
|
||||
~~~
|
||||
agentaddress none
|
||||
~~~
|
||||
|
||||
Tout le reste peut être commenté, puis on finit par redémarrer l'agent :
|
||||
|
||||
~~~
|
||||
# systemctl restart snmpd
|
||||
~~~
|
||||
|
||||
##### Modifier les arguments de démarrage
|
||||
|
||||
Par défaut, `snmptrapd` va écrire les traps reçues dans syslog, à partir de la facilité "warning".
|
||||
|
||||
On modifie les arguments de démarrage par :
|
||||
|
||||
* `-A` : n'écrase pas le fichier de log à chaque redémarrage du service, mais ajoute de nouvelles lignes
|
||||
* `-LF 6 /var/log/snmptrap.log` : redirige les logs vers le fichier `/var/log/snmptrap.log`, à partir de la facilité syslog "info" et au-dessus
|
||||
* `-f` : ne pas forker
|
||||
* `-p /run/snmptrapd.pid` : fichier PID
|
||||
|
||||
* Si on utilise `SysvInit`, on modifie les arguments de démarrage du démon dans `/etc/default/snmptrapd` :
|
||||
|
||||
~~~
|
||||
TRAPDOPTS='-A -LF 6 /var/log/snmptrap.log -f -p /run/snmptrapd.pid'
|
||||
~~~
|
||||
|
||||
* Si on utilise `Systemd`, on modifie les arguments de démarrage du démon en surchargent l'unité
|
||||
|
||||
~~~
|
||||
# systemctl edit snmptrapd.service
|
||||
[Service]
|
||||
ExecStart=
|
||||
ExecStart=/usr/sbin/snmptrapd -A -LF 6 /var/log/snmptrap.log -f -p /run/snmptrapd.pid
|
||||
|
||||
# systemctl daemon-reload
|
||||
~~~
|
||||
|
||||
##### Configuration
|
||||
|
||||
La configuration se fait dans `/etc/snmp/snmptrapd.conf` :
|
||||
|
||||
~~~
|
||||
# Écouter sur l'IP 192.0.2.5
|
||||
snmpTrapdAddr 192.0.2.5
|
||||
|
||||
# Autoriser à recevoir des traps sur la communauté private, et à uniquement logger ces traps
|
||||
authCommunity log private
|
||||
~~~
|
||||
|
||||
Par défaut le format dans lequel s'ecrivent les trap SNMP en version 2c correspond à `%.4y-%.2m-%.2l %.2h:%.2j:%.2k %B [%b]:\n%v\n` (soit la date, l'heure, l'hostname de la machine source, les IPs et ports source et destination, puis le contenu de la trap ; voir les explications du format dans [man snmptrapd(8)](https://manpages.debian.org/bullseye/snmptrapd/snmptrapd.8.en.html#FORMAT_SPECIFICATIONS). Il n'est pas très lisible et on peut le modifier pour simplement ajouter un saut de ligne entre chaque champs de la trap :
|
||||
|
||||
~~~
|
||||
# Format des traps SNMPv2 : ajouter un saut de ligne entre chaque champs de la trap
|
||||
format print2 %.4y-%.2m-%.2l %.2h:%.2j:%.2k %B [%b]:\n%V\n%v\n\n
|
||||
~~~
|
||||
|
||||
Si on veut exécuter une action à la réception d'une trap en particulier, on peut utiliser l'option `traphandle`. Le paquet `traptoemail` est inclus avec `snmptrapd` et permet d'envoyer le contenu de la trap SNMP par email. Les autorisations doivent alors être changées pour rajouter le droit d'exécution :
|
||||
|
||||
~~~
|
||||
# Autoriser à recevoir des traps sur la communauté private, et à logger ces traps puis exécuter une action
|
||||
authCommunity log,execute private
|
||||
|
||||
# Envoyer un mail quand on reçoit certaines trap SNMP
|
||||
traphandle IF-MIB::linkDown /usr/bin/traptoemail -s 127.0.0.1 me@example.org # Link Down
|
||||
traphandle IF-MIB::linkUp /usr/bin/traptoemail -s 127.0.0.1 me@example.org # Link Up
|
||||
traphandle default /usr/bin/traptoemail -s 127.0.0.1 me@example.org # Tout le reste
|
||||
~~~
|
||||
|
||||
Si `default` est indiqué dans le champ OID, alors le programme sera invoqué pour chaque OID ne correspondant pas aux autres OID pour lesquels une `traphandle` est définie.
|
||||
|
||||
On finit par redémarrer le service :
|
||||
|
||||
~~~
|
||||
# systemctl restart snmptrapd
|
||||
~~~
|
||||
|
||||
## Intégration à Icinga
|
||||
|
||||
|
|
Loading…
Reference in a new issue