View Full Version : SNMP sur AIX
matdecalf
07-17-2007, 05:59 PM
Bonjour,
Nous essayons de mettre en place le protocole SNMP sur un serveur AIX pour tester les process.
Et ceci sera utiliser par oreon avec le plugin check_graph_process.pl
Voici le fichier de configuration snmpd.conf sur l'aix 5:
logging file=/usr/tmp/snmpd.log enabled
logging size=100000 level=0
community public
#community private 127.0.0.1 255.255.255.255 readWrite
#community system 127.0.0.1 255.255.255.255 readWrite 1.17.2
view 1.17.2 system enterprises view
trap public 127.0.0.1 1.2.3 fe # loopback
#snmpd maxpacket=1024 querytimeout=120 smuxtimeout=60
smux 1.3.6.1.4.1.2.3.1.2.1.2 gated_password # gated
smux 1.3.6.1.4.1.2.3.1.2.2.1.1.2 dpid_password #dpid
Mais lorsque l'on execute le plugin check_graph_process avec la commande suivante:
/usr/local/nagios/libexec/check_graph_process.pl IP_SERVEUR_AIX -v 1 -C public oracle
On a l'erreur suivante:
UNKNOWN: requested table is empty or doesn't exist
Est ce que quelqu'un aurait une idée???
Merci d'avance,
Matthieu.
matdecalf
07-18-2007, 12:21 PM
Nous avons avancé dans notre recherche...
Lorsque l'on lance la commande suivante:
snmpwalk -Os -c public -v1 IP_SERVEUR_AIX .1.3.6.1.2.1.25
On a un retour d'information, genre:
hrSystemUptime.0 = Wrong Type (should be Timeticks): INTEGER: 576926900
hrSystemDate.0 = STRING: 2007-7-18,11:11:48
hrSystemInitialLoadDevice.0 = INTEGER: 16
Par contre, si on lance la commande suivante, qui correspond a la mib hrSWRunName (pour recuperer les nom des process en execution):
snmpwalk -Os -c public -v1 190.57.160.7 .1.3.6.1.2.1.25.4.2.1.2
La commande ne retourne aucune information.
Y aurait il quelque chose a executer pour alimenter cette MIB???
Merci d'avance
MrBrown
07-18-2007, 12:36 PM
/usr/local/nagios/libexec/check_graph_process.pl IP_SERVEUR_AIX -v 1 -C public oracle
la syntaxe est incorrecte. Il manque le "-p"
/usr/local/nagios/libexec/check_graph_process.pl IP_SERVEUR_AIX -v 1 -C public -p oracle
On a l'erreur suivante:
UNKNOWN: requested table is empty or doesn't exist
Généralement cette erreur veut dire que l'information recherchée n'existe pas dans la MIB SNMP.
MrBrown
07-18-2007, 12:51 PM
Je vois que j'ai eu un peu de retard dans ma première réponse ^^
Y aurait il quelque chose a executer pour alimenter cette MIB???
Est-ce que la partie de la mib concernant hrSWRunName est vide ou inexistante?
Si elle est inexistante, c'est impossible. Si elle est vide, je ne suis pas sur mais je ne pense pas que ce soit possible non plus ^^
La solution serait de faire un script shell (comme un plugin nagios) qui vérifie que ton processus est bien lancé.
Ensuite, tu ajoutes cette ligne dans dans ton fichier snmpd.conf :
EXEC instance-name path/du/script/shell
Cette ligne fonctionne pour la configuration de SNMP sur RedHat, Debian, etc... La configuration de SNMP pour AIX à l'air différente, donc je te laisse trouver l'équivalent :)
Pour remonter les informations retournées par ton script shell au serveur Nagios, utilise le plugin check_snmp_processus_loaded (sur le svn Oreon)
surcouf
08-14-2007, 02:04 AM
Pour information (je suis en train de répondre par ailleurs au même sujet), sous AIX 5.2, il existe un sous-agent DPID2 (le protocole de communication entre agents SNMP d'IBM, comparables à SMUX ou AgentX) nommé aixmibd qui implémente la MIB du même nom : IBM-AIX-MIB.
Cette MIB permet notamment de superviser les processus sous AIX grâce à la table aixProcTable (.1.3.6.1.4.1.2.6.191.7.2).
La MIB se trouve assez facilement car elle est fournie avec le système AIX (un fichier nommé aixmib.my).
Disciplus
09-11-2007, 09:32 AM
bonjour,
Je suis moi même interessé pour faire remonter les infos disk / pros / mémoire de mon AIX 5.2. Le seul problème rien n'y fait, ils ne veulent pas remonter.
J'ai 2 questions pour commencer, afin d'utiliser le check_snmp_storage par exemple:
1. doit t'on utiliser le SNMP V1 ou V3 de l'aix pour la remonter d'info?
pour ma part je suis en V1. Le post est en production je ne pratique pas les modifications dessus sauf si nécessaires.
2. Nrpe doit t'il être forcement installer dessus? si oui, il n'y a pas de risque de surcharge mémoire, log?
pour information ma commande est:
/usr/local/nagios/libexec/check_snmp_storage.pl -H @ip_du_serveur -C public -m /home -w 80 -c 90
il me renvoit
ERROR: Description/Type table : Requested table is empty or does not exist.
merci d'avance
vcarp
09-17-2007, 03:40 PM
AIX est livré avec un SNMP assez curieux. Il existe un serveur snmpd qui traite les demandes associé à un "traducteur" dpid2 ert une floppée d'agents secondaires pour fournir des informations, tels aixmibd, hostmibd, snmpmibd, etc. De plus, l'ensemble est assez instable et il arrive que de temps en temps l'un des ces services tombe.
Pour savoir ce qui tourne, essayer la commande lssrc -a, pour lancer un service startsrc -s <le nom du service>, pour en arrêter un stopsrc -s <nom du service>.
Magios
09-17-2007, 04:12 PM
J'ai contourné cette difficulté en installant l'agent nrpe sur l'AIX.
Merci tout de même pour l'information.
vcarp
09-17-2007, 04:20 PM
Très honnêtement, c'est aussi ce que j'ai fait pour me simplifier la vie...
Disciplus
09-18-2007, 11:00 AM
merci pour ce complement d'information, je regarde ça et donne suite.
A très bientôt.
Disciplus
09-18-2007, 12:03 PM
Bon... apparament ça ne suffit pas...
J'ai toujours les mêmes messages.
vcarp
09-18-2007, 12:30 PM
Voilà mon fichier /etc/snmpd.conf, il y a peut être quelque chose à faire:
logging file=/usr/tmp/snmpd.log enabled
logging size=100000 level=0
community public
#community private 127.0.0.1 255.255.255.255 readWrite
#community system 127.0.0.1 255.255.255.255 readWrite 1.17.2
view 1.17.2 system enterprises view
trap public 127.0.0.1 1.2.3 fe # loopback
#snmpd maxpacket=1024 querytimeout=120 smuxtimeout=60
smux 1.3.6.1.4.1.2.3.1.2.1.2 gated_password # gated
smux 1.3.6.1.4.1.2.3.1.2.2.1.1.2 dpid_password #dpid
snmpd smuxtimeout=200 #muxatmd
smux 1.3.6.1.4.1.2.3.1.2.3.1.1 muxatmd_password #muxatmd
Bonjour, j'utilise le check_centreon_snmp_uptime sur mes serveurs AIX 5.3 en passant la commande suivante :
check_centreon_snmp_uptime -H IP_AIX_5-3 -C public -v 1 -d
et j'obtiens la réponse suivante :
OK - Uptime (in day): 0|uptime=0hs
Si je ne spécifie pas le "-d" j'obtiens la réponse suivante :
OK - Uptime (in hundredths of a second): 0|uptime=0hs
Ca me dit bien que le service est OK, mais impossible d'obtenir la durée, alors que mes serveurs FC7 me renvoient bien la durée ( OK - Uptime (in day): 8|uptime=8hs ).
Je sais que le snmp d'AIX est particulier, si quelqu'un a une idée (ou déjà une piste) , je suis preneur.
vcarp
09-24-2007, 05:06 PM
Le serveur SNMP de AIX retourne une simple valeur numérique pour le uptime.
Le script lui s'attend à un message du type "xx days xx hours ..."; du coup, ne trouvant pas ses petits il affiche 0.
Il faut modifier le script pour prendre en compte le fait que le résultat est seulement numérique.
Je peux y travailler d'ici demain.
vcarp
09-24-2007, 05:13 PM
C'est tout bête, ajouter les lignes suivantes à partir de 130 dans le fichier check_centreon_snmp_uptime:
130
131 if ( $return_result =~ m/^(\d+)$/ ) {
132 $un = $1;
133 }
vcarp
09-24-2007, 06:41 PM
Oups ! Il manque une ligne à mon ajout:
130
131 if ( $return_result =~ m/^(\d+)$/ ) {
132 $un = $1;
133 $day = int($1/8640000);
134 }
Super! :p
J'essaie ça tout de suite.
Encore merci.
Pendant que je suis dessus, pour l'affichage en jours, il semble qu'il y ait un petit souci dans le libellé qui s'affiche.
En effet, que l'on choisisse ou non l'option "-d" c'est toujours exprimé en centièmes de secondes. (voir ce que j'ai mis en rouge).
if ($un || ( $un == 0) ){
if ($opt_d) {
print "OK - Uptime (in day): $un|uptime=".$un."hs\n";
} else {
print "OK - Uptime (in hundredths of a second): $un|uptime=".$un."hs\n";
}
exit $ERRORS{'OK'};
if ( $return_result =~ m/^(\d+)$/ ) {
$un = $1;
$day = int($un/36000);
}
}
else{
print "CRITICAL Host unavailable\n";
exit $ERRORS{'CRITICAL'};
}
En revanche, pour mon AIX, je n'ai pas du m'y prendre comme il fallait, je continue à plancher dessus.
Edit : J'ai fait la modif suivante dans le plugin pour retrouver mon uptime
if ( $return_result =~ m/^(\d+)$/ ) {
$un = $1;
$day = int($1/36000);
}
vcarp
09-25-2007, 04:54 PM
J'ai fait mes tests sur un AIX 5.3 ML5 avec ces services démarrés (lssrc -a):
snmpd tcpip 209010 actif
dpid2 tcpip 254196 actif
hostmibd tcpip 2236566 actif
aixmibd tcpip 938002 actif
snmpmibd tcpip 131214 actif
vcarp
09-25-2007, 05:07 PM
8640000 est le nombre de centièmes de secondes en une journée. J'ai du mal à penser qu'il ne convienne pas à ta situation. De mon côté, j'ai un curieux phénomène: la commande check continue à me retourner la même valeur depuis hier à mes premiers essais tandis qu'un snmpget me retourne bien la valeur courante (respectivement 47 et 48 jours).
Pour ma part, le petit bout de code était ajouté plus haut dans le script, juste avant:
if ($opt_d) {
$un = $day;
}
vcarp
09-25-2007, 05:20 PM
En fait, c'est bien plus simple que ça: l'OID doit être le même que pour un Win*.
Il faut donc changer la ligne (170)
if ($return_result =~ /.*Windows.*/i ) {
en
if ($return_result =~ /.*Windows.*/i || $return_result =~ /.*IBM.*/i) {
Et le tour est joué.
En fait, c'est bien plus simple que ça: l'OID doit être le même que pour un Win*.
Il faut donc changer la ligne (170)
if ($return_result =~ /.*Windows.*/i ) {
en
if ($return_result =~ /.*Windows.*/i || $return_result =~ /.*IBM.*/i) {
Et le tour est joué.
Merci de t'être penché sur mon problème.
Je n'étais pas au bureau hier mais je viens de lire ta réponse et l'appliquer.
Excellent, ça marche nickel.
Quant à moi, j'ai modifié la partie en rouge dans le code ci-dessous pour avoir la bonne échelle d'affichage.
if ($un || ( $un == 0) ){
if ($opt_d) {
print "OK - Uptime (in days): $un|uptime=".$un." day(s)\n";
} else {
print "OK - Uptime (in hundredths of a second): $un|uptime=".$un."hs\n";
}
exit $ERRORS{'OK'};
}
else{
print "CRITICAL Host unavailable\n";
exit $ERRORS{'CRITICAL'};
}
vcarp
09-27-2007, 02:47 PM
Les petits gars d'Oreon/Centreon pourrait ils mettre à jour le script officiel pour prendre en compte ces deux modifs ? Merci d'avance.
Je revenais justement pour demander ça. :D
DonKiShoot
09-27-2007, 06:42 PM
Ne vous faites pas d'illusion.
Si vous voulez que ce soit pris en compte, il faut passer impérativement par l'ouverture d'un petit bugtrack :
http://bugs.oreon-project.org/
bonjour,
je me permet de poster à la suite de ce sujet, car j'ai besoin d'interroger un serveur AIX 5.2 via snmp, et cela me donne du fil à retordre !
mon but principal est de récupérer les informations de stockage dans le MIB
ces infos sont normalement dispo grace au service "hostmibd" sur AIX
le plugin suivant me permet de le faire à merveille sur des linux : http://nagios.manubulon.com/snmp_storage.html
voici où j'en suis :
les services suivant fonctionnent :
snmpd tcpip 68506 active
snmpmibd tcpip 113626 active
dpid2 tcpip 67784 active
hostmibd tcpip 110124 active
aixmibd tcpip 127350 active
voici mon snmpdv3.conf
VACM_GROUP group1 SNMPv1 ccub -
VACM_VIEW defaultView internet - included -
# exclude snmpv3 related MIBs from the default view
#VACM_VIEW defaultView snmpModules - excluded -
VACM_VIEW defaultView 1.3.6.1.6.3.1.1.4 - included -
VACM_VIEW defaultView 1.3.6.1.6.3.1.1.5 - included -
VACM_VIEW defaultView 1.3.6.1.2.1 - included -
# exclude aixmibd managed MIBs from the default view
#VACM_VIEW defaultView 1.3.6.1.4.1.2.6.191 - excluded -
VACM_ACCESS group1 - - noAuthNoPriv SNMPv1 defaultView - defaultView -
NOTIFY notify1 traptag trap -
TARGET_ADDRESS Target1 UDP 127.0.0.1 traptag trapparms1 - - -
TARGET_PARAMETERS trapparms1 SNMPv1 SNMPv1 ccub noAuthNoPriv -
COMMUNITY ccub ccub noAuthNoPriv 0.0.0.0 0.0.0.0 -
DEFAULT_SECURITY no-access - -
logging file=/usr/tmp/snmpdv3.log enabled
logging size=0 level=0
smux 1.3.6.1.4.1.2.3.1.2.1.2 gated_password # gated
smux 1.3.6.1.4.1.2.3.1.2.3.1.1 muxatmd_password #muxatmd
/etc/snmpd.peers
"gated" 1.3.6.1.4.1.2.3.1.2.1.2 "gated_password"
"dpid2" 1.3.6.1.4.1.2.3.1.2.2.1.1.2 "dpid_password"
"muxatmd" 1.3.6.1.4.1.2.3.1.2.3.1.1 "muxatmd_password"
une requete qui fonctionne :
snmpwalk -c ccub -v1 MachineAIX .1.3.6.1.2.1
SNMPv2-MIB::sysDescr.0 = STRING: IBM PowerPC CHRP Computer
Machine Type: 0x0800004c Processor id: 0051DD5A4C00
Base Operating System Runtime AIX version: 05.02.0000.0010
TCP/IP Client Support version: 05.02.0000.0010
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.2.3.1.2.1.1.3
SNMPv2-MIB::sysUpTime.0 = Timeticks: (21400) 0:03:34.00
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: blablabla
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-SMI::enterprises.2.3.1.2.1.1.3
SNMPv2-MIB::sysORDescr.1 = STRING: AIX SNMP Agent
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::snmpInPkts.0 = Counter32: 101
SNMPv2-MIB::snmpInBadVersions.0 = Counter32: 0
SNMPv2-MIB::snmpInBadCommunityNames.0 = Counter32: 67
SNMPv2-MIB::snmpInBadCommunityUses.0 = Counter32: 0
SNMPv2-MIB::snmpInASNParseErrs.0 = Counter32: 0
SNMPv2-MIB::snmpEnableAuthenTraps.0 = INTEGER: disabled(2)
SNMPv2-MIB::snmpSilentDrops.0 = Counter32: 0
SNMPv2-MIB::snmpProxyDrops.0 = Counter32: 0
celle ci devrait me renvoyer des infos sur les ressources systèmes (storage, etc...) il me semble
snmpwalk -c ccub -v1 MachineAIX .1.3.6.1.2.1.25
mais elle ne me retourne rien du tout !!
depuis la machine AIX, en local donc, j'obtiens toujours la même valeur :
snmpinfo -m next -c ccub -v 1.3.6.1.2.1.25
ibm.2.1.1.0 = 50864
snmpinfo -m next -c ccub -v 1.3.6.1.2.1.25.2
ibm.2.1.1.0 = 50864
mais dans les logs, j'ai pas mal d'erreurs qui ne me plaisent pas :
/var/tmp/snmpdv3.log
12/19/07 11:23:22 AM - Accepted new SMUX inet socket connection on fd=11 from 127.0.0.1 port 51127.
12/19/07 11:23:22 AM - Closing SMUX connection, fd=11.
12/19/07 11:23:22 AM - Address 127.0.0.1 port 51127.
12/19/07 11:23:22 AM - rc = -2 (SNMP_RC_NOT_FOUND) from snmp_delete_subagent().
12/19/07 11:23:27 AM - Accepted new SMUX inet socket connection on fd=11 from 127.0.0.1 port 51134.
12/19/07 11:23:27 AM - Closing SMUX connection, fd=11.
12/19/07 11:23:27 AM - Address 127.0.0.1 port 51134.
12/19/07 11:23:27 AM - rc = -2 (SNMP_RC_NOT_FOUND) from snmp_delete_subagent().
/var/tmp/hostmibd.log
12/19/07 09:02:17 AM - hr_src.c (354) stopsrc issued 12/19/07 09:03:31 AM - ../../../../../../src/tcpip/usr/sbin/hostmibd/hr_main.C (586) Connect to SNMP agent failed, will keep trying
12/19/07 09:29:24 AM - hr_src.c (354) stopsrc issued 12/19/07 09:30:39 AM - ../../../../../../src/tcpip/usr/sbin/hostmibd/hr_main.C (586) Connect to SNMP agent failed, will keep trying
/var/tmp/aixmibd.log
Wed Dec 19 11:24:33 NFT 2007 DPI sub-agent (AIX Enterprise MIB Support subagent): reconnected, ready to receive requests...
Wed Dec 19 11:24:33 NFT 2007 Error occured, try to re-establish connection.
Wed Dec 19 11:24:51 NFT 2007 Connect to SNMP agent failed, will keep trying
Wed Dec 19 11:25:01 NFT 2007 DPI sub-agent (AIX Enterprise MIB Support subagent): reconnected, ready to receive requests...
Wed Dec 19 11:25:01 NFT 2007 Error occured, try to re-establish connection.
Wed Dec 19 11:25:19 NFT 2007 Connect to SNMP agent failed, will keep trying
Wed Dec 19 11:25:29 NFT 2007 DPI sub-agent (AIX Enterprise MIB Support subagent): reconnected, ready to receive requests...
Wed Dec 19 11:25:29 NFT 2007 Error occured, try to re-establish connection.
Pouvez vous me donnez des infos la dessus ??? Merci