tech:snmpd_configuration_et_ajout_d_oids_perso
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| tech:snmpd_configuration_et_ajout_d_oids_perso [2025/03/24 15:06] – créée - modification externe 127.0.0.1 | tech:snmpd_configuration_et_ajout_d_oids_perso [2026/06/07 19:12] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # SNMPd - Configuration et ajout d'IODs perso | ||
| + | |||
| + | Voir aussi ! | ||
| + | * pass (snmpd) | ||
| + | |||
| + | |||
| + | Source : http:// | ||
| + | |||
| + | Quand la supervision doit récupérer des valeurs systèmes, il y a autant de solutions que d’administrateurs. On peut déployer un agent, ouvrir tous les ports, passer par une page web, faire du ssh, etc. | ||
| + | Le moyen le plus simple et efficace est de passer par le protocole SNMP. Il est donc nécessaire d' | ||
| + | |||
| + | |||
| + | ## Installation | ||
| + | |||
| + | Le démon SNMP est disponible pour quasiment toutes les distributions Linux, je l' | ||
| + | |||
| + | ~~~bash | ||
| + | yum install net-snmp | ||
| + | chkconfig snmpd on | ||
| + | service snmpd start | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Si vous avez des iptables, pensez à ajouter une règle pour autoriser vos machines de supervision. Pour cela, éditer les règles Iptables : | ||
| + | |||
| + | ~~~bash | ||
| + | vim / | ||
| + | ~~~ | ||
| + | |||
| + | Et ajouter la règle : | ||
| + | ~~~ | ||
| + | -A INPUT -p udp -s < | ||
| + | ~~~ | ||
| + | |||
| + | Puis relancer Iptables : | ||
| + | ~~~bash | ||
| + | service iptables restart | ||
| + | ~~~ | ||
| + | |||
| + | ## Configuration | ||
| + | |||
| + | |||
| + | Globalement, | ||
| + | ~~~bash | ||
| + | vim / | ||
| + | ~~~ | ||
| + | |||
| + | Premièrement, | ||
| + | ~~~ | ||
| + | com2sec supervision | ||
| + | com2sec supervision | ||
| + | ~~~ | ||
| + | |||
| + | On va donner des droits à cette communauté de sécurité sous forme de groupes, dans notre cas de la simple lecture : | ||
| + | ~~~ | ||
| + | group | ||
| + | ~~~ | ||
| + | |||
| + | J'ai pour habitude d' | ||
| + | |||
| + | On va ensuite déclarer des vues, c'est à dire des branches de la MIB qui seront consultables. Certains utilisent .1 pour rendre tout l' | ||
| + | ~~~ | ||
| + | view systemInfo | ||
| + | ~~~ | ||
| + | |||
| + | Dans cet exemple, on expose que le load average de la machine. N' | ||
| + | |||
| + | Pour conclure, on va associer les vues aux groupes d' | ||
| + | ~~~ | ||
| + | access | ||
| + | ~~~ | ||
| + | |||
| + | Voila de façon très macroscopique les points importants de la configuration. Plutôt que de m' | ||
| + | |||
| + | Modèle de fichier de configuration | ||
| + | |||
| + | |||
| + | Voici un fichier de conf mini-minimale, | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | # | ||
| + | # Fichier de conf minimale SNMPd | ||
| + | # | ||
| + | |||
| + | # Parametres globaux | ||
| + | syslocation < | ||
| + | syscontact < | ||
| + | |||
| + | # Declaration des machines autorisees | ||
| + | # | ||
| + | com2sec supervision | ||
| + | com2sec supervision | ||
| + | |||
| + | # Declaration des groupes d' | ||
| + | # | ||
| + | group | ||
| + | group | ||
| + | |||
| + | # Declaration des vues | ||
| + | # | ||
| + | view systemInfo | ||
| + | |||
| + | # Association Group et View | ||
| + | # | ||
| + | access | ||
| + | |||
| + | # OID perso | ||
| + | ~~~ | ||
| + | |||
| + | Vous constatez à la fin que j'ai prévu une zone pour les OID perso, et oui on peut étendre la MIB suivant nos besoins ! Très pratique pour monitorer des valeurs systèmes spécifiques. | ||
| + | |||
| + | ## Exécuter ses propres scripts | ||
| + | |||
| + | Il est possible d' | ||
| + | |||
| + | Plusieurs directives peuvent être utilisées dans le fichier de conf : pass, exec et extend. Visiblement, | ||
| + | |||
| + | Ici, on va mettre en œuvre extend pour exécuter un script sur le serveur supervisé et récupérer la valeur avec snmpget. | ||
| + | |||
| + | On édite le fichier de configuration principal : | ||
| + | ~~~bash | ||
| + | vim / | ||
| + | ~~~ | ||
| + | |||
| + | A la fin de fichier, on ajoute un appel à notre script : | ||
| + | ~~~ | ||
| + | extend | ||
| + | ~~~ | ||
| + | |||
| + | Comment choisir un OID perso ? Il y a une branche de la MIB dédiée à cela, elle est préfixé ucdavis (un truc du genre) et son équivalent en numérique est : `.1.3.6.1.4.1.2021` | ||
| + | |||
| + | Il suffit donc de choisir un suffixe pour votre script. Sur vos nombreux serveurs, faites en sorte de ne pas avoir des scripts qui répondent sur le même OID alors qu'ils ne font pas la même chose, ça sera plus simple à gérer. | ||
| + | |||
| + | |||
| + | ## Exemple : Récupérer les infos d'un volume groupe LVM | ||
| + | |||
| + | Pour illustrer la puissance des OID perso, on va essayer de récupérer quelques infos concernant un volume group. Premièrement, | ||
| + | ~~~bash | ||
| + | vgdisplay -s VolGroup00 | ||
| + | ~~~ | ||
| + | |||
| + | Ce qui renvoi : | ||
| + | ~~~ | ||
| + | " | ||
| + | ~~~ | ||
| + | |||
| + | Pour notre exemple, ça sera suffisant, on édite donc le fichier de conf snmp : | ||
| + | ~~~bash | ||
| + | vim / | ||
| + | ~~~ | ||
| + | |||
| + | On ajoute une vue pour notre OID perso : | ||
| + | ~~~ | ||
| + | view systemInfo | ||
| + | ~~~ | ||
| + | |||
| + | Et on ajoute, à la fin du fichier, la ligne suivante : | ||
| + | ~~~ | ||
| + | extend .1.3.6.1.4.1.2021.900 | ||
| + | ~~~ | ||
| + | |||
| + | J'ai choisi l'OID de façon arbitraire et avec une grosse valeur pour éviter d' | ||
| + | |||
| + | On redémarre notre snmpd : | ||
| + | ~~~bash | ||
| + | service snmpd restart | ||
| + | ~~~ | ||
| + | |||
| + | Maintenant, on test avec snmpwalk le résultat : | ||
| + | ~~~bash | ||
| + | snmpwalk -c public -v2c localhost .1.3.6.1.4.1.2021.900 | ||
| + | ~~~ | ||
| + | |||
| + | Et voici le résultat : | ||
| + | ~~~ | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | UCD-SNMP-MIB:: | ||
| + | ~~~ | ||
| + | |||
| + | On constate qu'il s'agit d'un arbre, votre outil de supervision n'a besoin que de la valeur de résultat, on modifie donc notre commande snmpwalk pour ne garder que le nécessaire : | ||
| + | ~~~bash | ||
| + | snmpwalk -OQnv -c public -v2c localhost .1.3.6.1.4.1.2021.900.4.1.2.9.115.116.97.116.115.95.118.103.48.1 | tr -d " | ||
| + | ~~~ | ||
| + | |||
| + | Ce qui nous donne comme résultat : | ||
| + | ~~~ | ||
| + | \VolGroup00\ 136.12 GiB [75.97 GiB used / 60.16 GiB free] | ||
| + | ~~~ | ||
| + | |||
| + | ## Conclusion | ||
| + | |||
| + | |||
| + | SNMP peut servir pour toute la supervision, | ||
| + | ~~~bash | ||
| + | snmpget -OQnv -c < | ||
| + | ~~~ | ||
| + | |||
