Le SNMP (Simple Network Management Protocol) permet de monitorer son matériel informatique. Qu’il s’agisse d’un serveur Linux, un serveur Windows, un routeur, un firewall, etc.
Il est intéressant de savoir comment récupérer ces informations brutes, afin d’identifier les objets à intégrer à notre système de monitoring par exemple.
Linux
Le client pour récupérer les données
J’utilise Debian Wheezy pour ces notes. Voici de quoi récupérer toutes les informations SNMP, que ce soit en SNMP v1 ou v2c. La version sécurisée de SNMP sera vue plus tard.
Les paquets nécessaires :
#apt-get install snmp snmp-mibs-downloader
Éditer le fichier /etc/snmp/snmp.conf et commenter la ligne « mibs: »
Les MIB ne sont pas sélectionnées par défaut lorsque l’on interroge un périphérique. Il faut le spécifier avec l’option -m
# snmpwalk -m UPS-MIB -c public -v 2c ups2 1.3.6.1.2.1.33.1.2.5 UPS-MIB::upsBatteryVoltage.0 = INTEGER: 857 0.1 Volt DC # snmpwalk -v 1 -c public 192.168.29.5
Afin d’obtenir l’OID, numéro unique permettant d’identifier la variable SNMP, voici un exemple pour l’uptime :
# snmpwalk -On -v 1 -c public 192.168.56.21 .1.3.6.1.2.1.25.1 .1.3.6.1.2.1.25.1.1.0 = Timeticks: (705809) 1:57:38.09
Cet OID sert à créer le service dans un logiciel de monitoring comme Centreon par exemple.
-On permet d’avoir l’OID et pas la translation du nom
Pour avoir les noms d’affichés au lieu des OID, on spécifie les MIB à utiliser :
# snmpwalk -v 2c -c monitor -m UPS-MIB 10.184.4.250 UPS-MIB::upsIdentManufacturer.0 = STRING: AEG Power Solutions GmbH UPS-MIB::upsIdentModel.0 = STRING: Protect D. UPS-MIB::upsIdentUPSSoftwareVersion.0 = STRING: n/a UPS-MIB::upsIdentAgentSoftwareVersion.0 = STRING: CS121 v 4.42.2 UPS-MIB::upsIdentName.0 = STRING: CS121 SNMP/WEB Adapter UPS-MIB::upsIdentAttachedDevices.0 = STRING: UPS protected devices UPS-MIB::upsBatteryStatus.0 = INTEGER: batteryNormal(2) UPS-MIB::upsSecondsOnBattery.0 = INTEGER: 0 seconds UPS-MIB::upsEstimatedMinutesRemaining.0 = INTEGER: 75 minutes UPS-MIB::upsEstimatedChargeRemaining.0 = INTEGER: 100 percent
Autre commande :
# snmpbulkget -c public -v 2c 192.168.56.21 system ifTable
Traducteur d’OID en nom compréhensible :
# snmptranslate -m ups-mib 1.3.6.1.2.1.33.1.2
Plus d’infos sur les MIB existantes sur le site oidview.com. Par exemple pour les MIB d’UPS voir ce lien direct.
Ces commandes servent surtout à vérifier le « background » de notre installation. Il faut installer un vrai système d’alertes comme Nagios ou Centreon. Ce dernier gère également la métrique. Un article sera prochainement consacré à celui-ci.
L’installation du daemon
Afin de monitorer un serveur Linux, on installe un service snmpd et ses dépendances. Cela permettra à notre serveur de monitoring de récupérer les données du serveur Linux.
C’est notre serveur de monitoring (ou le serveur ayant snmpwalk) qui fera la demande au serveur à surveiller de manière régulière. On appelle ça un « pull ».
# apt-get install snmpd
Éditer le fichier /etc/snmp/snmpd.conf pour modifier les points essentiels de la configuration :
# diff /etc/snmp/snmpd.conf.ori /etc/snmp/snmpd.conf 15c15 < agentAddress udp:127.0.0.1:161 --- > #agentAddress udp:127.0.0.1:161 18a19,28 > # SECNAME SOURCE COMMUNITY nom de sécurité réseau communauté SNMP > com2sec localnetwork 192.168.56.20/32 public > # groupe en ro v1 > group rogroup v1 localnetwork > > # vue pour préciser ce qui est accessible pour le groupe (ici all) > ## on déclare la vue > view all included .1 80 > ## on fait l'association avec le groupe > access rogroup "" any noauth exact all none none 45,46c55,56 < view systemonly included .1.3.6.1.2.1.1 < view systemonly included .1.3.6.1.2.1.25.1 --- > #view systemonly included .1.3.6.1.2.1.1 > #view systemonly included .1.3.6.1.2.1.25.1 51c61 < rocommunity public default -V systemonly --- > # rocommunity public default -V systemonly 60c70 < rouser authOnlyUser --- > # rouser authOnlyUser
Si besoin, éditer /etc/default/snmpd et rajouter les IP qui doivent écouter à la fin de la ligne suivante :
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid 192.168.56.21'
On redémarre le service snmpd et notre système est prêt 😉
Il faut savoir qu’il existe aussi des traps SNMP, qui permettent de faire un « push ». C’est le serveur à surveiller qui va informer le serveur de monitoring d’un problème immédiatement au lieu d’attendre que le serveur de monitoring l’interroge.
Windows
Dans cet article, je ne verrai que le SNMP v2c, pas la version sécurisée SNMP v3.
Étape 1 facultatif
Pour windows Seven uniquement,il faut d’abord ajouter le composant windows dans le panneau de configuration :
Control Panel > Programs and Features. > "Turn Windows features on or off" > Windows Features > select "Simple Network Management Protocol (SNMP)"
Pour un windows serveur, on passe directement à l’étape suivante.
Étape 2 Firewall
On configure le firewall pour autoriser le port SNMP (161) en entrée :
Control Panel > System and Security > Windows Firewall > Advanced Settings
De là, on déroule « Windows Firewall with Advenceds Security » pour atteindre « Inbound Rules »
Dans le menu de droite :
"New Rules..." > Predefined Rules > SNMP service
On active la règle souhaitée selon le profil (Généralement la première « Domain »).
Étape 3 Activer le service SNMP
Il faut directement aller dans les services windows :
Manage computer > Service and Applications > Services > SNMP Agent > Enabled Automatic.
Pour plus d’infos :https://docs.microsoft.com/fr-FR/troubleshoot/windows-server/networking/configure-snmp-service
Ensuite, dans l’onglet Agent, on rempli le champ Contact et Location, on coche tous les services à monitorer.
Dans l’onglet Security :
- Dans Accpeted community names, on clique sur Add pour mettre en READ ONLY le community name « public »
- Dans Accept SNMP packets from these hosts, on ajoute l’IP de Centreon en cliquant sur Add
- On applique et on redémarre le service
Dans Centreon, il y a par défaut : l’espace disque, la RAM, le CPU. Voir pour d’autres via interrogation direct selon l’OID ou via scripts Nagios.
Laisser un commentaire