24.09.2011, 05:23 UTC+2

Sie sind nicht angemeldet.

[solved] check_snmp liefert mir keine Performancedaten wenn ich eine MIB benutze?

falc410

Profi

Beiträge: 638

Geburtstag: 14.02.1983 (28)

Geschlecht: Männlich

Wohnort: Germany - Munich

Beruf: Student - Computer Science

Anzahl Nagios-Server: 2

Hobbys: learning C# & XNA - Gamedesign, iPhone Programming

Nagios-Version(en): 3.0.6

Verteiltes Monitoring: Nein

Redundantes Monitoring: Ja

Anzahl-Hosts: 300

Anzahl Services: 2000

Betriebssystem(e): RHEL5

Plugin-Version(en): 1.4.12

NagVis-Version: 1.5.1

NDO-Version: 1.4b7

Perfparse-Version: PNP 0.6.2

Sonstige Addon's: 2 Node Cluster again with Heartbeat 2.1 & DRBD 8 / Munin 1.4

1

21.09.2011, 13:54

[solved] check_snmp liefert mir keine Performancedaten wenn ich eine MIB benutze?

Ich steh grad etwas auf dem Schlauch. Ich hab heute eine MIB bekommen und kann nun endlich viele tollen Sachen abfragen aber check_snmp liefert mir keine Performancedaten mehr wenn ich diese benutze.

Hier mal ein Vergleich zu vorher mit OID und dann mit MIB. Ich hab es verbose ausgeben lassen:

Quoted


[root checks]# ./check_snmp -H 10.0.0.22 -C public -c 215:235 -o mib-2.33.1.3.3.1.3.3 -l 'Input Voltage L3:' -u Volt -v
/usr/bin/snmpget -t 1 -r 5 -m ALL -v 1 -c public 10.0.0.22:161 mib-2.33.1.3.3.1.3.3
UPS-MIB::upsInputVoltage.3 = INTEGER: 222 RMS Volts

Input Voltage L3: OK - 222 Volt | UPS-MIB::upsInputVoltage.3=222

[root checks]# ./check_snmp -H 10.0.0.22 -o upsInputVoltage.3 -l 'Input Voltage L3:' -v
/usr/bin/snmpget -t 1 -r 5 -m ALL -v 1 -c public 10.0.0.22:161 upsInputVoltage.3
UPS-MIB::upsInputVoltage.3 = INTEGER: 223 RMS Volts

Input Voltage L3: OK - 223 RMS Volts |

Der snmpget Aufruf ist doch identisch. Also muss es etwas intern mit check_snmp zu tun haben. Zumindest wird beim 2. Aufruf auch die Einheit mit uebertragen. Da steht jetzt Volts da und ich muss nicht extra mit -u angeben was dastehen soll. Wenn ich -u Volt drinlasse, erhalte ich als Ausgabe 223 RMS Volts Volt. Also scheint check_snmp anders zu funktionieren je nachdem was ich bei -o angebe.

Bis jetzt habe ich check_snmp noch gar nicht hergenommen sondern mir immer mein eigenes Wrapper Plugin fuer snmpget / snmpwalk gebastelt aber warum die ganze Arbeit erneut machen (vorallem fuer threshold values abfragen etc) wenn es das schon gibt. Nur Performancedaten brauche ich schon.

Quoted

check_snmp v2021 (nagios-plugins 1.4.13)


Kann sich das jemand erklaeren?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »falc410« (21.09.2011, 14:35)


pitchfork

Super Moderator

Beiträge: 15 201

Wohnort: Kassel

Beruf: Sysadmin SAP / Linux / AIX

Anzahl Nagios-Server: 2

Hobbys: Motorrad fahren, wenns die Zeit erlaubt :-)

Nagios-Version(en): 3.2.1

Icinga-Version(en): ---

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 310

Anzahl Services: 4500

Betriebssystem(e): Debian 5.0 Lenny

Plugin-Version(en): 1.4.x

NagVis-Version: 1.4.1

NDO-Version: ---

IDO-Version: ---

Perfparse-Version: ---

Sonstige Addon's: SNMPTT, NagTrap, NagVis 1.4.5, check_mk, PNP-0.6.x. Thruk

2

21.09.2011, 14:11

welche check_snmp version?
PNP Developer.
PNP 0.6.15 ist online !
Fragen zu PNP mit Angabe der verwendeten PNP Version werden bevorzugt beantwortet.
OMD - Open Monitoring Distribution

falc410

Profi

Beiträge: 638

Geburtstag: 14.02.1983 (28)

Geschlecht: Männlich

Wohnort: Germany - Munich

Beruf: Student - Computer Science

Anzahl Nagios-Server: 2

Hobbys: learning C# & XNA - Gamedesign, iPhone Programming

Nagios-Version(en): 3.0.6

Verteiltes Monitoring: Nein

Redundantes Monitoring: Ja

Anzahl-Hosts: 300

Anzahl Services: 2000

Betriebssystem(e): RHEL5

Plugin-Version(en): 1.4.12

NagVis-Version: 1.5.1

NDO-Version: 1.4b7

Perfparse-Version: PNP 0.6.2

Sonstige Addon's: 2 Node Cluster again with Heartbeat 2.1 & DRBD 8 / Munin 1.4

3

21.09.2011, 14:12

Sorry vergessen. Update siehe oben.

pitchfork

Super Moderator

Beiträge: 15 201

Wohnort: Kassel

Beruf: Sysadmin SAP / Linux / AIX

Anzahl Nagios-Server: 2

Hobbys: Motorrad fahren, wenns die Zeit erlaubt :-)

Nagios-Version(en): 3.2.1

Icinga-Version(en): ---

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 310

Anzahl Services: 4500

Betriebssystem(e): Debian 5.0 Lenny

Plugin-Version(en): 1.4.x

NagVis-Version: 1.4.1

NDO-Version: ---

IDO-Version: ---

Perfparse-Version: ---

Sonstige Addon's: SNMPTT, NagTrap, NagVis 1.4.5, check_mk, PNP-0.6.x. Thruk

4

21.09.2011, 14:15

aktuell ist 1.4.15
PNP Developer.
PNP 0.6.15 ist online !
Fragen zu PNP mit Angabe der verwendeten PNP Version werden bevorzugt beantwortet.
OMD - Open Monitoring Distribution

bern

Profi

Beiträge: 1 688

Anzahl Nagios-Server: 2-5

Nagios-Version(en): 1-3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 80-200

Anzahl Services: 1400-2000

Betriebssystem(e): Linux

Plugin-Version(en): Whatever I can download, patch, or cobble together myself :-)

Sonstige Addon's: n2rrd, PNP, livestatus

5

21.09.2011, 14:15

Also scheint check_snmp anders zu funktionieren je nachdem was ich bei -o angebe.
Nein, der Grund ist, daß in Deinem zweiten Aufruf das "-c ..." fehlt. Nur wenn numerische Limits zu prüfen sind, parst check_snmp aus dem Rückgabewert "223 RMS Volts" extra nochmal die "223" 'raus und speichert sie in show - und nur wenn show schlußendlich numerisch ist, werden Performance-Daten draus gebaut.

Quellcode

294
295
296
297
298
299
300
301
302
                   /* Process this block for integer comparisons */
                if (thlds[i]->warning || thlds[i]->critical) {
                        ptr = strpbrk (show, "0123456789");
                        if (ptr == NULL)
                                die (STATE_UNKNOWN,_("No valid data returned"));
                        response_value[i] = strtod (ptr, NULL);
                        iresult = get_status(response_value[i], thlds[i]);
                        asprintf (&show, conv, response_value[i]);
                }


Quellcode

354
355
356
357
                   if (is_numeric(show)) {
                        strncat(perfstr, oidname, sizeof(perfstr)-strlen(perfstr)-1);
                        strncat(perfstr, "=", sizeof(perfstr)-strlen(perfstr)-1);
                        strncat(perfstr, show, sizeof(perfstr)-strlen(perfstr)-1);


Aber der Hauptgrund, warum man sowieso bei Nummern bleiben will, ist, daß man es check_snmp dadurch erspart, bei jeder Ausführung erst die MIBs einzulesen und zu parsen.

pitchfork

Super Moderator

Beiträge: 15 201

Wohnort: Kassel

Beruf: Sysadmin SAP / Linux / AIX

Anzahl Nagios-Server: 2

Hobbys: Motorrad fahren, wenns die Zeit erlaubt :-)

Nagios-Version(en): 3.2.1

Icinga-Version(en): ---

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 310

Anzahl Services: 4500

Betriebssystem(e): Debian 5.0 Lenny

Plugin-Version(en): 1.4.x

NagVis-Version: 1.4.1

NDO-Version: ---

IDO-Version: ---

Perfparse-Version: ---

Sonstige Addon's: SNMPTT, NagTrap, NagVis 1.4.5, check_mk, PNP-0.6.x. Thruk

6

21.09.2011, 14:26

Wieder was gelernt. Danke Jochen!
PNP Developer.
PNP 0.6.15 ist online !
Fragen zu PNP mit Angabe der verwendeten PNP Version werden bevorzugt beantwortet.
OMD - Open Monitoring Distribution

falc410

Profi

Beiträge: 638

Geburtstag: 14.02.1983 (28)

Geschlecht: Männlich

Wohnort: Germany - Munich

Beruf: Student - Computer Science

Anzahl Nagios-Server: 2

Hobbys: learning C# & XNA - Gamedesign, iPhone Programming

Nagios-Version(en): 3.0.6

Verteiltes Monitoring: Nein

Redundantes Monitoring: Ja

Anzahl-Hosts: 300

Anzahl Services: 2000

Betriebssystem(e): RHEL5

Plugin-Version(en): 1.4.12

NagVis-Version: 1.5.1

NDO-Version: 1.4b7

Perfparse-Version: PNP 0.6.2

Sonstige Addon's: 2 Node Cluster again with Heartbeat 2.1 & DRBD 8 / Munin 1.4

7

21.09.2011, 14:33

Naja aber ich hab die OIDs ja nicht, deswegen benutze ich die MIB. Ich denke auch nicht dass das jetzt so der grosse Performancehit ist wenn ich nur so wenige Werte abfrage.

Aber auch wenn ich einen Critical Threshold mit -c angebe habe ich keine Performancedaten:

Quoted


[root checks]# ./check_snmp -H 10.0.0.22 -o upsInputVoltage.3 -l 'Input Voltage L3:'-c 215:235 -v
/usr/bin/snmpget -t 1 -r 5 -m ALL -v 1 -c public 10.0.0.22:161 upsInputVoltage.3
UPS-MIB::upsInputVoltage.3 = INTEGER: 226 RMS Volts

Input Voltage L3:-c OK - 226 RMS Volts |


UPDATE: Aha es ist wichtig an welcher Stelle -c steht. Der gleiche Aufruf noch einmal:

Quoted


[root checks]# ./check_snmp -H 10.0.0.22 -c 215:235 -o upsInputVoltage.3 -l 'Input Voltage L3:' -v
/usr/bin/snmpget -t 1 -r 5 -m ALL -v 1 -c public 10.0.0.22:161 upsInputVoltage.3
UPS-MIB::upsInputVoltage.3 = INTEGER: 223 RMS Volts

Input Voltage L3: OK - 223 | UPS-MIB::upsInputVoltage.3=223


Aber du hast recht das wenn ich die numerische OID benutze ich nur Performancedaten habe wenn ich auch eine Critical Range angebe.

So Geheimnis gelueftet, vielen Dank bern!

Meinst ich sollte wirklich mir die entsprechenden Eintraege aus der MIB raussuchen und versuchen die entsprechenden OIDs zu finden damit die MIB nicht jedesmal gelesen werden muss? Ich mache hier pro Device ca. 10 Abfragen im 5 Minuten Intervall. Derzeit werden geschaetzte 20 Geraete so mit snmpget / snmpwalk abgefragt (also ca. 200 snmpget / check_snmp Aufrufe alle 5 Minuten). Das ganze auf einem eigens dafuer bestimmten Rechner, also nicht Nagios Core. Die Abfragen werden mittels check_multi noch gebuendelt und als passiv Checks in Nagios eingepflegt und eigentlich dachte ich das es sehr gut performt bis jetzt.

bern

Profi

Beiträge: 1 688

Anzahl Nagios-Server: 2-5

Nagios-Version(en): 1-3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 80-200

Anzahl Services: 1400-2000

Betriebssystem(e): Linux

Plugin-Version(en): Whatever I can download, patch, or cobble together myself :-)

Sonstige Addon's: n2rrd, PNP, livestatus

8

21.09.2011, 16:49

Ich hab' dazu keine gezielten Tests an der Hand, aber der Haken ist, daß die MIB-Scannerei nicht nach dem Prinzip "ich frag' ja nur eine OID ab" skaliert. Die gewünschte OID fooEntry.0 benutzt fooEntry, das ist in der FOO-MIB als bar.47 definiert, bar in der BAR-MIB als baz.11, baz in der BAZ-MIB als enterprises.0815, ... - um also schlußendlich die komplette Übersetzung zwischen "fooEntry.0" und ".1.3.6.1.4.1.0815.11.47.0" hinzukriegen, muß das snmpcmd die $MIBDIRs komplett einsaugen und parsen. Deswegen werfen ja auch u.U. schon lang benutzte snmpcmds plötzlich Fehlermeldungen, wenn man einen einzelnen, nicht mit der Abfrage zusammenhängenden MIB File mit Syntaxfehler ins Verzeichnis wirft. (Und eines Tages kriege ich auch noch 'raus, mit was fürs Tools die Firmware-Entwickler zugange sind, daß sie z.T. derartig kaputte MIB Files auf die Welt loslassen.)

Deswegen das empfohlene Standardvorgehen:
  • Mit ganz normalem "snmpwalk" auf die Suche nach den entscheidenden Einträgen gehen
  • Wenn dabei zusätzliche MIBs benötigt werden, in ein separates Dir werfen und mit "-M +/wo/auch/immer" weiterarbeiten
  • Die schlußendlich gefundene namentliche OID mit einem "snmpget -On" in eine numerische OID wandeln
  • No. Names. In. The. Nagios. Config. ;)

pitchfork

Super Moderator

Beiträge: 15 201

Wohnort: Kassel

Beruf: Sysadmin SAP / Linux / AIX

Anzahl Nagios-Server: 2

Hobbys: Motorrad fahren, wenns die Zeit erlaubt :-)

Nagios-Version(en): 3.2.1

Icinga-Version(en): ---

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 310

Anzahl Services: 4500

Betriebssystem(e): Debian 5.0 Lenny

Plugin-Version(en): 1.4.x

NagVis-Version: 1.4.1

NDO-Version: ---

IDO-Version: ---

Perfparse-Version: ---

Sonstige Addon's: SNMPTT, NagTrap, NagVis 1.4.5, check_mk, PNP-0.6.x. Thruk

9

21.09.2011, 16:56

+1
PNP Developer.
PNP 0.6.15 ist online !
Fragen zu PNP mit Angabe der verwendeten PNP Version werden bevorzugt beantwortet.
OMD - Open Monitoring Distribution

falc410

Profi

Beiträge: 638

Geburtstag: 14.02.1983 (28)

Geschlecht: Männlich

Wohnort: Germany - Munich

Beruf: Student - Computer Science

Anzahl Nagios-Server: 2

Hobbys: learning C# & XNA - Gamedesign, iPhone Programming

Nagios-Version(en): 3.0.6

Verteiltes Monitoring: Nein

Redundantes Monitoring: Ja

Anzahl-Hosts: 300

Anzahl Services: 2000

Betriebssystem(e): RHEL5

Plugin-Version(en): 1.4.12

NagVis-Version: 1.5.1

NDO-Version: 1.4b7

Perfparse-Version: PNP 0.6.2

Sonstige Addon's: 2 Node Cluster again with Heartbeat 2.1 & DRBD 8 / Munin 1.4

10

Gestern, 13:49

Vielen Dank fuer die Erklaerung.
Werde mir die OID dann mithilfe von snmpget und dem Outopt -n raussuchen!

Eine letzte Frage noch zu check_snmp. Ich kann zwar die Range angeben aber bei den Performancedaten wird ja trotzdem nur das Ergebnis mit ausgegeben:
z.B. fuehrt das hier:

Quoted


command[ Input_Voltage_L2 ] = check_snmp -H $UPSIP$ -C public -c 215:235 -o mib-2.33.1.3.3.1.3.2 -l 'Input Voltage L2:' -u Volt

zu diesen Performancedaten:

Quoted


Input_Voltage_L2::check_snmp::UPS-MIB_upsInputVoltage.2=231


Kann ich die Range irgendwie so angeben das bei den Perf Daten auch noch die Schwellwerte mit ausgegeben werden damit ich in meinen PNP Graphen dann die horizontalen Linien habe (ich will logischerweise nicht 100 extra Templates dafuer mit hardgecodeten Werten anlegen).

Geht das vielleicht erst mit einer neueren check_snmp Version?

Wenn nicht dann bastel ich mir doch mein eigenes Script (einen Wrapper fuer snmpget sozusagen) wo ich dann den Output dementsprechend anpassen kann. Aber warum das Rad neu erfinden wenn check_snmp schon so gut performt? :)

bern

Profi

Beiträge: 1 688

Anzahl Nagios-Server: 2-5

Nagios-Version(en): 1-3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 80-200

Anzahl Services: 1400-2000

Betriebssystem(e): Linux

Plugin-Version(en): Whatever I can download, patch, or cobble together myself :-)

Sonstige Addon's: n2rrd, PNP, livestatus

11

Gestern, 15:40

Zitat von »falc410«

Kann ich die Range irgendwie so angeben das bei den Perf Daten auch noch die Schwellwerte mit ausgegeben werden
Geht das vielleicht erst mit einer neueren check_snmp Version?
Nein und nein. Auch in der aktuellen 1.4.15 steht

Quellcode

1
                   /* Write perfdata with whatever can be parsed by strtod, if possible */

und die Limits werden schnellstmöglich in thlds[] versenkt und nur von utils_base::get_status() je wieder angefaßt.

Ähnliche Themen