v2c verwenden lassen kann, aber keinen Bulkwalk.
Hi Bastian,
die Option “nobulk” habe ich heute nochmal genauer beleuchtet. Es geht leider nicht. Bleibt nur ein Workaround:
-
den snmpget Test in ein “normales” nagios cmd kapseln wie es Christian zu dem Thread schon beschrieben hat
-
oder den folgenden Workaround der aber nur bei mir eingesetzt wird da ich ja kein OMD sondern eine Version von Ubuntu 12.04 verwende.
Ich denke nicht dass ihr das aufnehmt zumal ich ja glaube dass die Telefone sich eigentlich auf einen snmpwalk melden sollten und dass eben nur nicht umgesetzt wurde. Da kenne ich mich aber auch nicht aus genauso wenig wie mit python daher verzeiht mir mein Scriptversuch der im Folgenden beschrieben ist.
Für alle die mehr wissen wollen weiterlesen ansonsten Danke für das Lesen.
Miko
mein Workaround
##################
Basiert im Grunde auf einer “fake” community Namens “getpublic” die ich im Script /usr/share/check_mk/modules/check_mk.py explizit auswerte.
In der Sektion SNMP
Die Definition snmp_walk_command definition um das Erkennen der community erweitern.
def snmp_walk_command(hostname):
credentials = snmp_credentials_of(hostname)
if credentials == 'getpublic':
return snmp_base_command('get', hostname)
else:
return snmp_base_command('walk', hostname) + " -Cc"
Dann in der snmp_base_command Definition die community zurücksetzen.
…
credentials = snmp_credentials_of(hostname)
if what == 'get':
command = 'snmpget'
elif what == 'getnext':
command = 'snmpgetnext -Cf'
else:
command = 'snmpbulkwalk'
# DAS IST NEU - WA for get only single OID devices which do not support snmpwalk in v1 - DAS IST NEU
if credentials == 'getpublic':
credentials = 'public'
…
Vorteil: Es geht
Nachteil: Es ist nicht snmp conform die snmp community dafür zu Mißbrauchen und es würde ein Versions Upgrade von check_mk nicht überleben. Dann muss man es wieder neu implementieren. Da ich aber auf dieser Version 1.1.12 von check MK bleibe und auch nicht glaube das ubuntu 12.04 LTS das nochmal so schnell updated - Murphy außen vor - lasse ich meine Workaround drin.
Hier noch der check und der Eintrag in der main.mk:
-------------- cat /usr/share/check_mk/checks/voip_reg ----------------
the inventory function for voip Registrations on SNOM phones
def inventory_voip_reg(checkname, info):
inventory = []
inventory.append( ("registration", None) )
return inventory
the check function for voip Registrations on SNOM phones
def check_voip_reg(item, params, info):
# Da info eine Liste in einer Liste darstellt ich aber nur eine Zahl haben will damit ich das auswerten kann, ferner auch gar kein Python kenne...
for regis in info:
for number in regis:
nmbr = int(number)
if number < 1:
return (2, "CRITICAL - kein Benutzer registriert " )
else:
return (0, "OK - " +number +" Benutzer registriert" )
#return (3, "UNKNOWN - not yet implemented")
the check function for voip Registrations on SNOM phones
check_info[“voip_reg”] = (check_voip_reg, “REG %s”, 0, inventory_voip_reg)
the SNMP OID code
snmp_info[“voip_reg”] = ( “.1.3.6.1.2.1.7526.2”, [5] )
#snmp_scan_functions[‘voip_reg’] = \
lambda oid: oid(“.1.3.6.1.2.1.7526.2.5”) != None
all_hosts += [
# SNOM320
'tel-32|snmp|nobulk|voip_reg|voip|snom-320',
#
]
Fake Community damit check_mk.py das mit dem WA auswerten kann um ein snmpget anstatt einen snmpwalk auf die Telefone zu machen.
snmp_communities = [
( “getpublic”, [“voip”], all_hosts ),
]
============= Ergebnis ============
Inventory erzeugen
check_mk -v --checks=voip_reg -II tel-32
Deleting /var/lib/check_mk/autochecks/voip_reg-2012-06-27_14.10.52.mk.
voip_reg 1 new checks
Prüfen
check_mk -v --debug -nv tel-32
Reading default settings from /usr/share/check_mk/modules/defaults
Reading config file /etc/check_mk/main.mk…
Check_mk version 1.1.12
Running snmpget -v1 -c 'public' -m '' -M '' -OQ -OU -On -Ot 10.0.2.32 .1.3.6.1.2.1.7526.2.5 2>/dev/null
REG registration OK - 1 Benutzer resgistriert
OK - execution time 0.0 sec|execution_time=0.018
============ Nachtrag ===============
Vielleicht könnt ihr einen solchen Fall irgendwie anders vorsehen. Aber wie gesagt , die Telefone könnten snmp besser implementieren…
Was ich jetzt noch habe ist, dass der check nicht automatisch erkannt wird . (Bin noch immer Neuling)
root@icinga:/usr/share/check_mk/checks# check_mk -L | grep voip
voip_reg snmp no yes REG %s
root@icinga:/usr/share/check_mk/checks# check_mk -v -II tel-32
=> Nur ein Ping test wird erzeugt.
root@icinga:/usr/share/check_mk/checks# check_mk -v --checks=voip_reg -II tel-32
=> der passende SNMP Test wird erzeugt.
Servus Miko
–
Marcus Mikolaiczyk
Software Engineer
m.mikolaiczyk@rac.de
Phone:+49 7251 3862 32 | Mobil:+49 151 146557 32 | Fax:+49 7251 3862 11
=======================================================================
RA Consulting GmbH, Geschäftsführer: Armin Rupalla, Heiko Bauer
Amtsgericht Mannheim HRB 231127, Sitz: Zeiloch 6a, D-76646 Bruchsal
ORACLE Partner, DIN EN ISO 9001:2000 zertifiziert
=======================================================================
-----Ursprüngliche Nachricht-----
Von: Bastian Kuhn [mailto:bk@mathias-kettner.de]
Gesendet: Montag, 25. Juni 2012 14:53
An: checkmk-de@lists.mathias-kettner.de
Cc: Marcus Mikolaiczyk | RA Consulting
Betreff: Re: [Check_mk (deutsch)] snmpget Test auf eine OID anstatt
snmpwalk möglich?
Hallo Miko,
jetzt habe ich doch etwas “schmarrn” erählt. Der Walk wird in der Check
Funktion auf jeden Fall gemacht, nur die Inventur Funktion macht den get.
Technisch ist bei SNMPv1 zwischen Walk und Get kein großer unterschied
(getnext). Was also noch eine Chance wäre, die Telefone aus den Blukwalk
Hosts
zu nehmen, damit SNNMPv1 benutzt wird. Vielleicht geht das.
Grüße Bastian
Am Donnerstag, 14. Juni 2012, 16:07:32 schrieb Marcus Mikolaiczyk | RA
Consulting:
Hi Bastian,
das klingt doch gut, ich habe nur noch nicht so viel Erfahrung sammeln
können (erst einen Tag) und mit dem Tutorial für SNMP Checks bekomme
ich
es nicht hin.
Mein Check “voip_reg” beinhaltet
# the SNMP OID code
snmp_info["voip_reg"] = ( ".1.3.6.1.2.1.7526.2" , [5] )
Eigentlich ist es nur die OID .1.3.6.1.2.1.7526.2.5 daher ein “get”. Aber
man kann es nicht anders angeben. Ich hatte sowas probiert = (
“.1.3.6.1.2.1.7526.2.5” , ) da kommt aber nichts bei raus. Ich vermute
dass ich nicht snmp_info nehmen sollte den das mach ganz sicher so wie es
da steht ein “walk”. Hatte ich mir über Debugging auch ausgeben lassen.
check_mk --debug -v --checks=voip_reg -c main.mk.snmp -I tel-32
Reading default settings from
/usr/share/check_mk/modules/defaults
Reading config file main.mk.snmp…
Running snmpwalk -v1 -c 'public' -m '' -M '' -Cc -OQ -OU -On -Ot
10.0.2.32 .1.3.6.1.2.1.7526.2.5 2>/dev/null ERROR: SNMP error
Host 'tel-32': SNMP Error on 10.0.2.32
Nur weiß ich nicht wie dann check_mk von einer “neuen” snmp Funktion
wind
bekommen, denn eigentlich ist snmp_info ja eher ein Hinweis dafür das
das
was dahinter steht ein snmp Test ist.
Die spannende Frage
Wie teile ich also snmp_info mit dass es sich um nur eine OID handelt und
damit der get und nicht der walk benötigt wird? ##
Verwende ich check_mk --snmpget wird ja auch ein get gemacht. Daher
habe
ich die Hoffnung einen passenden snmptest zu schreiben noch nicht
aufgegeben. Ich konfiguriere jetzt aber ersteinmal noch unser Netzwerk
(Switches, Server, Drucker,…) und bringe das zum laufen, dann komm ich
nochmal zu den Telefonen zurück.
Mein Ziel ist es ja mit
‘|snmp|voip’,
in der main.mk
und dem passenden snmp Test die Telefone einfach ins Inventory und die
Testconfig für das Icinga zu bekommen.
Eine Lösung hat auch schon Christian Haase geschickt - Danke dir dafür
Christian , das ist gewiss mein Fallback. Ein Feedback gebe ich wenn ich
die Implementierung hier vorangebracht habe.
Wie gesagt mir fehlt noch know how, das kommt aber mit den nächsten
Tests…

Danke für jedes Feedback.
Miko
-----Ursprüngliche Nachricht-----
Von: Bastian Kuhn [mailto:bk@mathias-kettner.de]
Gesendet: Donnerstag, 14. Juni 2012 15:00
An: checkmk-de@lists.mathias-kettner.de
Cc: Marcus Mikolaiczyk | RA Consulting
Betreff: Re: [Check_mk (deutsch)] snmpget Test auf eine OID anstatt
snmpwalk möglich?
Hallo Miko,
ob von Check_MK ein walk oder ein get gemacht wird, hängt vom Check
ab.
Die Inventur Funktion frägt nur eine OID ab, sprich die einen Get.
Bei den Checkfuntkionenen der Checks hängt es davon welche OIDs die
holen
müssen.
Müssen die nur einen OID holen, machen die auch nur einen get und
keinen
walk.
Grüße
Bastian
Am Donnerstag, 14. Juni 2012, 10:40:11 schrieb Marcus Mikolaiczyk | RA
Consulting:
Servus zusammen,
wir fangen gerade an ein Monitoring System bei uns aufzusetzen und
testen
verschiedenen Hosts/Devices und services durch. check_mk wäre hier
für
uns
eine große Hilfe. Unser Setup
-
Ubuntu 12.04 LTS
-
icinga 1.6.1
-
Check_mk_ 1.1.12
Wir wollen u.a. unsere VOIP Telefone (SNOM3xx) über SNMP
monitoren
(Benutzer
registriert oder nicht). Leider unterstützen die Telefone
ausschließlich
die Get Funktion von snmp . snmpget -v1 … verschiedene OIDs die
man
abfragen kann. Eine MIB dazu existiert nicht. Mit diesem Wissen habe
ich
einen snmp Test für check_mk angefangen und komme leider nicht
weiter
da
er immer einen snmpwalk beim Inventory ausführt. Das wird leider
vom
Telefon nicht unterstützt. Einen Agent Test kann ich leider nicht
schreiben da ich ihn nicht auf den Telefon speichern kann. Über ein
Shellscript wäre es kein Problem, wenn das dann auf dem Monitoring
Server
für alle Telefone verwendet werden könnte.
Mögliche Lösung die ich sehe:
- check_mk dazu zu bringen keinen snmpwalk auszuführen sondern
nur
snmpget
- habe hier leider im Netz oder sonstwo keine Info gefunden. Es gab
wohl
man eine Funktion snmp_info_single, die bei mir leider nicht geht. - hat
jemand eine Idee? Meine Konfiguration steht weiter unten. Kann gut
sein
dass ich eine Option oder die Syntax ändern muss. 2. einen “normalen”
Test
zu schreiben mit dem das geht (shell script) - hier habe ich nur
Anleitungen für agent-tests gefunden. Ich kann aber kein shell-script
auf
dem Telefon ablegen. 3. einen icinga Test zu implementieren der von
check_mk verwendet wird - geht das ? (für Nagios hatte ich das schon
für
die Telefone ausprobiert. Hatte funktioniert.
Die Verwendung von “snmp_scan_functions” habe ich auch
ausprobiert
aber
leider das Prinzip noch nicht ganz verstanden… hat aber auch nicht
geholfen.
Falls jemand Infos zu meinem Problem hat wäre ich dankbar. Ziel ist es
kein
snmpwalk zuzulassen sondern nur snmpget. Ich frage ja auch nur eine
dediziert OID ab da ist ein Walk nicht hilfreich.
Für die die weiter lesen wollen…
Details Tests:
Manuelle Tests: walk - NOK, get - OK
:# snmpwalk -v1 -c public tel-32
Timeout: No Response from tel-32
:# snmpget -v1 -c public tel-32 .1.3.6.1.2.1.7526.2.5
iso.3.6.1.2.1.7526.2.5 = INTEGER: 1
Test mit check_mk - OK - Die eine “DDD Debug” Meldung habe ich
implementiert
um zu sehen was das python script als command setzt. Könnte also
gehen
… -----------------------------
:# check_mk --debug -v --snmpget .1.3.6.1.2.1.7526.2.5 tel-32
Reading default settings from /usr/share/check_mk/modules/defaults
Reading config file /etc/check_mk/main.mk…
DDD Debug : what : get — Command: snmpget
Running 'snmpget -v1 -c ‘public’ -m ‘’ -M ‘’ -On -OQ -Oe -Ot 10.0.2.32
.1.3.6.1.2.1.7526.2.5 2>/dev/null’ SNMP answer: ==> [1]
tel-32 (10.0.2.32): ‘1’
Versuch das Inventory zu erstellen - NOK : Die eine “DDD Debug”
Meldung
habe
ich implementiert um zu sehen was das python script als command
setzt.
:# check_mk --debug -v --checks=voip_reg -c main.mk.snmp -I tel-32
Reading default settings from /usr/share/check_mk/modules/defaults
Reading config file main.mk.snmp…
DDD Debug : what : walk — Command: snmpbulkwalk
Running snmpwalk -v1 -c 'public' -m '' -M '' -Cc -OQ -OU -On -Ot
10.0.2.32 .1.3.6.1.2.1.7526.2.5 2>/dev/null ERROR: SNMP error
Host ‘tel-32’: SNMP Error on 10.0.2.32
Details Dateien:
/etc/check_mk/main.mk.snmp:
all_hosts = [
'localhost',
##############################
# Telefone
'tel-32|snmp|voip|snom-320',
…
]
host_groups = [
…
('SNOM-320', ['snmp','voip','snom-320'], all_hosts),
…
]
/usr/share/check_mk/checks/voip_regs
the inventory function for voip Registrations on SNOM phones
def inventory_voip_reg(checkname, info):
# Debug: lets see how the data we get looks like
import pprint ; pprint.pprint(info)
return []
the check function for voip Registrations on SNOM phones
def check_voip_reg(item, params, info):
return (3, "UNKNOWN - not yet implemented")
the check function for voip Registrations on SNOM phones
check_info[“voip_reg”] = (check_voip_reg, “REG %s”, 0,
inventory_voip_reg)
the SNMP OID code
snmp_info[“voip_reg”] = ( “.1.3.6.1.2.1.7526.2.” , [5] )
#snmp_scan_functions[‘voip_reg’] = \
lambda oid: oid(“.1.3.6.1.2.1.7526.2.5”)
:#check_mk -L | grep voip
voip_reg snmp no yes REG %s
Viele Grüße
Miko
–
Marcus Mikolaiczyk
Software Engineer
m.mikolaiczyk@rac.de
Phone:+49 7251 3862 32 | Mobil:+49 151 146557 32 | Fax:+49 7251 3862
11
==========================================================
=============
RA Consulting GmbH, Geschäftsführer: Armin Rupalla, Heiko
Bauer
Amtsgericht Mannheim HRB 231127, Sitz: Zeiloch 6a, D-76646 Bruchsal
ORACLE Partner, DIN EN ISO 9001:2000 zertifiziert
==========================================================
=============
checkmk-de mailing list
checkmk-de@lists.mathias-kettner.de
http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de
–
Bastian Kuhn
Mathias Kettner GmbH
Registergericht: Amtsgericht München, HRB 165902
Firmensitz: Kellerstraße 29, 81667 München
Geschäftsführer: Mathias Kettner
Tel. 089 / 1890 4210
Fax 089 / 1890 4211
http://mathias-kettner.de
–
Marcus Mikolaiczyk
Software Engineer
m.mikolaiczyk@rac.de
Phone:+49 7251 3862 32 | Mobil:+49 151 146557 32 | Fax:+49 7251 3862 11
==========================================================
=============
RA Consulting GmbH, Geschäftsführer: Armin Rupalla, Heiko
Bauer
Amtsgericht Mannheim HRB 231127, Sitz: Zeiloch 6a, D-76646 Bruchsal
ORACLE Partner, DIN EN ISO 9001:2000 zertifiziert
==========================================================
=============
checkmk-de mailing list
checkmk-de@lists.mathias-kettner.de
http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de
–
Bastian Kuhn
Mathias Kettner GmbH
Registergericht: Amtsgericht München, HRB 165902
Firmensitz: Kellerstraße 29, 81667 München
Geschäftsführer: Mathias Kettner
Tel. 089 / 1890 4210
Fax 089 / 1890 4211
http://mathias-kettner.de
checkmk-de mailing list
checkmk-de@lists.mathias-kettner.de
http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de