[Check_mk (deutsch)] snmpget Test auf eine OID anstatt snmpwalk möglich?

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:
1. 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

Hi Miko,

ich habe dazu auch nichts gefunden, daher habe das so gemacht, w�re aber �ber was "nativeres" dankbar :slight_smile:

extra_nagios_conf += r"""
define command {
        command_name check-snmp-info
        command_line $USER1$/check_snmp -H '$HOSTADDRESS$' -o '$ARG1$'
}

define command {
        command_name check-snmp
        command_line $USER1$/check_snmp -H '$HOSTADDRESS$' -o '$ARG1$' -w '$ARG2$' -c '$ARG3$'
}

"""

legacy_checks = [
        ( ( "check-snmp-info!1.3.6.1.2.1.7526.2.4", "Snom Firmware", True), ["snom"], ALL_HOSTS ),
        ( ( "check-snmp-info!1.3.6.1.2.1.7526.2.1.1", "Rx Bytes", True), ["snom"], ALL_HOSTS ),
        ( ( "check-snmp-info!1.3.6.1.2.1.7526.2.1.2", "Rx Packets", True), ["snom"], ALL_HOSTS ),
        ( ( "check-snmp-info!1.3.6.1.2.1.7526.2.2.1", "Tx Bytes", True), ["snom"], ALL_HOSTS ),
        ( ( "check-snmp-info!1.3.6.1.2.1.7526.2.2.2", "Tx Packets", True), ["snom"], ALL_HOSTS ),
        ( ( "check-snmp-info!1.3.6.1.2.1.7526.2.5", "Missed Calls", True), ["snom"], ALL_HOSTS ),
        ( ( "check-snmp!1.3.6.1.2.1.7526.2.6!50!50", "Registrations", True), ["snom"], ALL_HOSTS ),
]

Gr�sse,
Christian

···

--
ifu Hamburg - material flows and software
"We enable sustainable production."

ifu Hamburg GmbH
Max-Brauer-Allee 50 - 22765 Hamburg - Germany
fon: +49 40 480009-0 - fax: +49 40 480009-22 - email: info@ifu.com

Managing Director: Jan Hedemann - Commercial Register: Hamburg, HRB 52629
www.ifu.com - www.umberto.de - www.e-sankey.com
www.carbonfootprint-software.com

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:
1. 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

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
'<IP-Des-Telefons>|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... :slight_smile:

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:
> 1. 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

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
'<IP-Des-Telefons>|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...
:slight_smile:

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:
> > 1. 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

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
> '<IP-Des-Telefons>|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...
> :slight_smile:
>
> 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:
> > > 1. 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

Hallo Marcus,

es gibt inzwischen �brigens die Variable snmpv2c_hosts mit der man Hosts
v2c verwenden lassen kann, aber keinen Bulkwalk.

Mathias

···

Am 27.06.2012 15:35, schrieb Marcus Mikolaiczyk | CarMediaLab:

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
'<IP-Des-Telefons>|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...

:slight_smile:

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:
1. 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

Marcus, Mathias, Bastian, werte Mitleser :wink:

ich stehe vor dem gleichen Problem (v1-Geraete ohne walk-/getnext-Unterstuetzung).

Marcus, dein Ansatz hat mir schon etwas weiter geholfen. Ich wuerde empfehlen, den Befehl lieber an einem Hosttag festzumachen als an der Community - es koennte ja sein, dass eines der Geraete eine andere nutzt. Hierzu habe ich in der check_mk.py lediglich diese Funktion angepasst:

···

Am 20. November 2012 08:57 schrieb Mathias Kettner mk@mathias-kettner.de:

Hallo Marcus,

es gibt inzwischen übrigens die Variable snmpv2c_hosts mit der man Hosts

v2c verwenden lassen kann, aber keinen Bulkwalk.

Mathias

Am 27.06.2012 15:35, schrieb Marcus Mikolaiczyk | CarMediaLab:

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…
:slight_smile:

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:

  1. 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


checkmk-de mailing list

checkmk-de@lists.mathias-kettner.de

http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de