Supervision via Snmp / Nagios


Un exemple d’utilisation d’un Raspberry avec une carte Piface pour superviser des alarmes ( contacts secs ) via snmp et Nagios.

Le raspberry + piface sont configurés comme expliqué dans les autres articles.

Installation du serveur snmp

apt-get install snmpd

Pour avoir le droit de lire les entrées via snmpd

Ajouter à /etc/rc.local

chmod 777 -R /sys/devices/virtual/gpio

Script python affichant l’état des 8 entrées, 1 par ligne, appellé par snmpd

fichier pins.py

#!/usr/bin/python3
import pifacedigitalio
pifacedigital = pifacedigitalio.PiFaceDigital()
for i in range(0,8 ) :
 pin=pifacedigital.input_pins[i].value
 print(pin)

le rendre exécutable

chmod +x pins.py

Configuration Snmpd

fichier minimal /etc/snmp/snmpd.conf

agentAddress udp:161
rocommunity COMMUNAUTE 0.0.0.0
extend .1.3.6.1.4.1.2021.3000.1 piface CHEMIN-DU-FICHIER/pins.py

Personnaliser la communauté ; remplacer 0.0.0.0 par l’adresse IP de la machine nagios.

relancer snmpd

/etc/init.d/snmpd restart

Test :

snmpwalk -v1 -c COMMUNAUTE -t 5 -O n IP-RASPBERRY .1.3.6.1.4.1.2021.3000.1

.1.3.6.1.4.1.2021.3000.1.1.0 = INTEGER: 1
.1.3.6.1.4.1.2021.3000.1.2.1.2.6.112.105.102.97.99.101 = STRING: "/CHEMIN-du-SCRIPT/pins.py"
.1.3.6.1.4.1.2021.3000.1.2.1.3.6.112.105.102.97.99.101 = ""
.1.3.6.1.4.1.2021.3000.1.2.1.4.6.112.105.102.97.99.101 = ""
.1.3.6.1.4.1.2021.3000.1.2.1.5.6.112.105.102.97.99.101 = INTEGER: 5
.1.3.6.1.4.1.2021.3000.1.2.1.6.6.112.105.102.97.99.101 = INTEGER: 1
.1.3.6.1.4.1.2021.3000.1.2.1.7.6.112.105.102.97.99.101 = INTEGER: 1
.1.3.6.1.4.1.2021.3000.1.2.1.20.6.112.105.102.97.99.101 = INTEGER: 4
.1.3.6.1.4.1.2021.3000.1.2.1.21.6.112.105.102.97.99.101 = INTEGER: 1
.1.3.6.1.4.1.2021.3000.1.3.1.1.6.112.105.102.97.99.101 = STRING: "0"
.1.3.6.1.4.1.2021.3000.1.3.1.2.6.112.105.102.97.99.101 = STRING: "0
0
0
0
0
0
0
0"
.1.3.6.1.4.1.2021.3000.1.3.1.3.6.112.105.102.97.99.101 = INTEGER: 8
.1.3.6.1.4.1.2021.3000.1.3.1.4.6.112.105.102.97.99.101 = INTEGER: 0
.1.3.6.1.4.1.2021.3000.1.4.1.2.6.112.105.102.97.99.101.1 = STRING: "0"
.1.3.6.1.4.1.2021.3000.1.4.1.2.6.112.105.102.97.99.101.2 = STRING: "0"
.1.3.6.1.4.1.2021.3000.1.4.1.2.6.112.105.102.97.99.101.3 = STRING: "0"
.1.3.6.1.4.1.2021.3000.1.4.1.2.6.112.105.102.97.99.101.4 = STRING: "0"
.1.3.6.1.4.1.2021.3000.1.4.1.2.6.112.105.102.97.99.101.5 = STRING: "0"
.1.3.6.1.4.1.2021.3000.1.4.1.2.6.112.105.102.97.99.101.6 = STRING: "0"
.1.3.6.1.4.1.2021.3000.1.4.1.2.6.112.105.102.97.99.101.7 = STRING: "0"
.1.3.6.1.4.1.2021.3000.1.4.1.2.6.112.105.102.97.99.101.8 = STRING: "0"

dans nagios

fichier commands.cfg

define command{
       command_name    check_alarme
       command_line    $USER1$/check_snmp -H $HOSTADDRESS$ -p $ARG1$  -C $ARG2$ -c 0:0 -o $ARG3$
       }

Si la valeur de retour est différente de 0, alors alarme critique

dans le fichier .cfg de la machine pour superviser l’entrée 0 du raspberry

define service{
       use                             generic-service
       host_name                       ALARME_RASPBERRY
       service_description             ALARME
       check_command                   check_alarme!PORT!COMMUNAUTE!.1.3.6.1.4.1.2021.3000.1.4.1.2.6.112.105.102.97.99.101.1
       notifications_enabled           1
       }