brouillon_snmp
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
brouillon_snmp [2008/08/27 14:18] – thierry | brouillon_snmp [2008/08/28 13:01] – thierry | ||
---|---|---|---|
Ligne 28: | Ligne 28: | ||
Management Information Base\\ Version ascii d'un OID (?)\\ | Management Information Base\\ Version ascii d'un OID (?)\\ | ||
Exemple: '' | Exemple: '' | ||
+ | |||
Ligne 36: | Ligne 37: | ||
Voir la commande **'' | Voir la commande **'' | ||
- | {{http:// | + | {{http:// |
====== installation ====== | ====== installation ====== | ||
Ligne 162: | Ligne 163: | ||
Et voila. | Et voila. | ||
+ | |||
+ | |||
+ | |||
Ligne 201: | Ligne 205: | ||
DISMAN-EVENT-MIB:: | DISMAN-EVENT-MIB:: | ||
HOST-RESOURCES-MIB:: | HOST-RESOURCES-MIB:: | ||
+ | |||
+ | La description complete (pas trés clair dans cet exemple): | ||
+ | $ snmptranslate -On -Td DISMAN-EVENT-MIB:: | ||
+ | .1.3.6.1.2.1.1.3.0 | ||
+ | sysUpTimeInstance OBJECT-TYPE | ||
+ | -- FROM | ||
+ | ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysUpTime(3) 0 } | ||
+ | |||
+ | Un diagramme: | ||
+ | $ snmptranslate -Tp -IR system | ||
+ | +--system(1) | ||
+ | | | ||
+ | +-- -R-- String | ||
+ | | ||
+ | | ||
+ | +-- -R-- ObjID | ||
+ | +-- -R-- TimeTicks sysUpTime(3) | ||
+ | | ||
+ | | ||
+ | | | ||
+ | +-- -RW- String | ||
+ | | ||
+ | | ||
+ | +-- -RW- String | ||
+ | | ||
+ | | ||
+ | +-- -RW- String | ||
+ | | ||
+ | | ||
+ | +-- -R-- INTEGER | ||
+ | | ||
+ | +-- -R-- TimeTicks sysORLastChange(8) | ||
+ | | ||
+ | | | ||
+ | | ||
+ | | | ||
+ | +--sysOREntry(1) | ||
+ | | ||
+ | | | ||
+ | +-- ---- INTEGER | ||
+ | | ||
+ | +-- -R-- ObjID | ||
+ | +-- -R-- String | ||
+ | | ||
+ | | ||
+ | +-- -R-- TimeTicks sysORUpTime(4) | ||
+ | Textual Convention: TimeStamp | ||
+ | Oh! un arbre! | ||
+ | |||
+ | |||
+ | |||
+ | ==== v1 ou v2c ==== | ||
+ | Il faudra choisir un protocole " | ||
+ | |||
+ | Les réponses n'ont pas toujours le même format. | ||
+ | |||
+ | Nous, on choisira "-v 2c" ... mouai. | ||
+ | |||
+ | ==== snmpget ==== | ||
+ | Retourne l' | ||
+ | $ snmpget -v 2c -c < | ||
+ | DISMAN-EVENT-MIB:: | ||
+ | On précise la version " | ||
+ | $ snmpget -v 2c -c code_secret1 localhost DISMAN-EVENT-MIB:: | ||
+ | |||
+ | En plus simple: | ||
+ | $ snmpget -v 2c -c code_secret1 localhost sysUpTime.0 | ||
+ | DISMAN-EVENT-MIB:: | ||
+ | |||
+ | Plus interessant: | ||
+ | $ snmpget -v 2c -c code_secret1 localhost UCD-SNMP-MIB:: | ||
+ | UCD-SNMP-MIB:: | ||
+ | (sera developpé ultérieurement) | ||
+ | |||
+ | ==== snmpgetnext ==== | ||
+ | Pareil que " | ||
+ | |||
+ | Exemple: | ||
+ | $ snmpgetnext -v 2c -c code_secret1 localhost DISMAN-EVENT-MIB:: | ||
+ | SNMPv2-MIB:: | ||
+ | C'est bien le suivant! | ||
+ | |||
+ | Mais c'est surtout interessant pour les OID incomplets: | ||
+ | $ snmpgetnext -v 2c -c code_secret1 localhost sysUpTime | ||
+ | DISMAN-EVENT-MIB:: | ||
+ | |||
+ | Comme vous pouvez l' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== snmpwalk ==== | ||
+ | |||
+ | Retourne quelques infos de l' | ||
+ | $ snmpwalk -v 2c -c code_secret1 localhost sysORID | ||
+ | SNMPv2-MIB:: | ||
+ | SNMPv2-MIB:: | ||
+ | SNMPv2-MIB:: | ||
+ | SNMPv2-MIB:: | ||
+ | SNMPv2-MIB:: | ||
+ | SNMPv2-MIB:: | ||
+ | SNMPv2-MIB:: | ||
+ | SNMPv2-MIB:: | ||
+ | SNMPv2-MIB:: | ||
+ | |||
+ | Retourner toutes les informations de la branche " | ||
+ | $ snmpwalk -v 2c -c code_secret1 localhost .1 | ||
+ | ou | ||
+ | $ snmpwalk -v 2c -c code_secret1 localhost .iso | ||
+ | (huge output !) | ||
+ | |||
+ | Un poil plus interessant: | ||
+ | $ snmpwalk -v 2c -c code_secret1 localhost .1.3.6.1.4.1.2021.8.1 | ||
+ | UCD-SNMP-MIB:: | ||
+ | UCD-SNMP-MIB:: | ||
+ | UCD-SNMP-MIB:: | ||
+ | UCD-SNMP-MIB:: | ||
+ | UCD-SNMP-MIB:: | ||
+ | UCD-SNMP-MIB:: | ||
+ | UCD-SNMP-MIB:: | ||
+ | |||
+ | |||
+ | ==== snmptable ==== | ||
+ | Sortir des tables... | ||
+ | |||
+ | $ snmptable -v 2c -c code_secret1 localhost sysORTable | ||
+ | SNMP table: SNMPv2-MIB:: | ||
+ | | ||
+ | sysORID | ||
+ | IF-MIB:: | ||
+ | SNMPv2-MIB:: | ||
+ | TCP-MIB:: | ||
+ | | ||
+ | UDP-MIB:: | ||
+ | SNMP-VIEW-BASED-ACM-MIB:: | ||
+ | | ||
+ | SNMP-MPD-MIB:: | ||
+ | | ||
+ | |||
+ | ==== snmpset ==== | ||
+ | Fixer une valeur:\\ | ||
+ | "The SET request is used to modify information on the target agent - updating the configuration of that agent, or controlling the behaviour of the remote system." | ||
+ | [[http:// | ||
+ | |||
+ | |||
+ | ==== snmptrap ==== | ||
+ | FIXME | ||
+ | |||
+ | ====== tips ====== | ||
+ | ===== snmp et commande externe ===== | ||
+ | |||
+ | On va prendre exemple d'un monitoring de RAID ! | ||
+ | |||
+ | |||
+ | ==== commande ==== | ||
+ | On a composé un script de monitoring RAID trés simple: | ||
+ | $ cat / | ||
+ | #!/bin/sh | ||
+ | | ||
+ | # pour snmpd | ||
+ | # Il n' | ||
+ | | ||
+ | MDADM=/ | ||
+ | EGREP=/ | ||
+ | | ||
+ | [ -x " | ||
+ | | ||
+ | COUNT=0 | ||
+ | RAIDOK=0 | ||
+ | CRITICAL=0 | ||
+ | | ||
+ | for RAIDDEV in /dev/md* | ||
+ | do | ||
+ | if [ -b " | ||
+ | then | ||
+ | COUNT=$(( COUNT + 1 )) | ||
+ | | ||
+ | if [ -z "$( $MDADM --detail $RAIDDEV | $EGREP '^ *State *: *(clean|active) *$' )" ] | ||
+ | then | ||
+ | CRITICAL=$(( CRITICAL + 1 )) | ||
+ | else | ||
+ | RAIDOK=$(( RAIDOK + 1 )) | ||
+ | fi | ||
+ | fi | ||
+ | done | ||
+ | | ||
+ | if [ " | ||
+ | then | ||
+ | echo "RAID OK ($RAIDOK/ | ||
+ | else | ||
+ | echo "RAID CRITICAL ($CRITICAL/ | ||
+ | fi | ||
+ | | ||
+ | exit 0 | ||
+ | | ||
+ | ### vim: set shiftwidth=2 softtabstop=2 : ### | ||
+ | |||
+ | En root, quand on fait : **''/ | ||
+ | # / | ||
+ | RAID OK (2/2) | ||
+ | |||
+ | On attend qu'une simple ligne en retour, avec " | ||
+ | |||
+ | Mais en simple **'' | ||
+ | $ / | ||
+ | mdadm: cannot open /dev/md0: Permission denied | ||
+ | mdadm: cannot open /dev/md1: Permission denied | ||
+ | RAID CRITICAL (2/2) | ||
+ | |||
+ | Donc, il faudra l' | ||
+ | |||
+ | On va utiliser [[brouillon_sudo|sudo]] | ||
+ | |||
+ | Donc, aprés avoir configuré " | ||
+ | $ sudo / | ||
+ | RAID OK (2/2) | ||
+ | |||
+ | Bien ! | ||
+ | |||
+ | ==== snmpd.conf ==== | ||
+ | |||
+ | Insérer la commande dans le fichier de conf (exemple): | ||
+ | # TJ ---------- | ||
+ | exec raidmon / | ||
+ | # ------------- | ||
+ | |||
+ | Puis on redemarre: | ||
+ | # / | ||
+ | |||
+ | |||
+ | |||
+ | ==== snmpget RAID ==== | ||
+ | |||
+ | $ snmpget -v 2c -c code_secret1 localhost .1.3.6.1.4.1.2021.8.1.101.1 | ||
+ | UCD-SNMP-MIB:: | ||
+ | Ou encore: | ||
+ | $ snmpget -v 2c -c code_secret1 localhost UCD-SNMP-MIB:: | ||
+ | UCD-SNMP-MIB:: | ||
+ | |||
+ | Un peu plus d' | ||
+ | $ snmpwalk -v 2c -On -c code_secret1 localhost .1.3.6.1.4.1.2021.8.1 | ||
+ | .1.3.6.1.4.1.2021.8.1.1.1 = INTEGER: 1 | ||
+ | .1.3.6.1.4.1.2021.8.1.2.1 = STRING: raidmon | ||
+ | .1.3.6.1.4.1.2021.8.1.3.1 = STRING: / | ||
+ | .1.3.6.1.4.1.2021.8.1.100.1 = INTEGER: 0 | ||
+ | .1.3.6.1.4.1.2021.8.1.101.1 = STRING: RAID OK (2/2) | ||
+ | .1.3.6.1.4.1.2021.8.1.102.1 = INTEGER: 0 | ||
+ | .1.3.6.1.4.1.2021.8.1.103.1 = STRING: | ||
+ | |||
+ | Si j'ai bien compris, chaque script ajouté dans la conf de " | ||
+ | |||
+ | Donc: | ||
+ | .1.3.6.1.4.1.2021.8.1.1.1 | ||
+ | .1.3.6.1.4.1.2021.8.1.1.2 | ||
+ | .1.3.6.1.4.1.2021.8.1.1.3 | ||
+ | etc... | ||
+ | .1.3.6.1.4.1.2021.8.1.101.1 | ||
+ | .1.3.6.1.4.1.2021.8.1.101.2 | ||
+ | .1.3.6.1.4.1.2021.8.1.101.3 | ||
+ | etc... etc... | ||
brouillon_snmp.txt · Dernière modification : 2008/08/28 13:18 de thierry