Discussion:
[Check_mk (deutsch)] Selbstgeschriebener SNMP Check bringt Crash
Birkler Michael
2018-09-18 16:03:02 UTC
Permalink
Guten Abend,

Ich habe einen SNMP Check für unsere USV geschrieben.
Der Check wird auch sauber ausgeführt. Aber nach kurzer Zeit bekomme ich einen Crash Report.
Kann mir hier jemand weiterhelfen?

Hier der Check:

#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
#
# Michael Birkler <***@knoll-mb.de>
#

ups_hpe_system_states = {
1: "Output Other",
2: "Output None",
3: "Output Normal",
4: "Output Bypass",
5: "Output Battery",
6: "Output Booster",
7: "Output Reducer",
8: "Output ParallelCapacity",
9: "Output ParallelRedundant",
10: "Output HighEfficiencyMode",
}

def inventory_ups_hpe_system_status(info):
if len(info) > 0:
return [ (None, None) ]

def check_ups_hpe_system_status(item, _no_params, info):
load = saveint(info[0][0])
frequenz = saveint(info[0][1])
voltage = saveint(info[0][2])
amperage = saveint(info[0][3])
power = saveint(info[0][4])
status = saveint(info[0][5])
temp = saveint(info[0][6])
statename = ups_hpe_system_states.get(status, "(invalid)")
perfdata = [ ( "Load", load ), ( "Power", power ), ( "Voltage", voltage ), ( "Temperature", temp ) ]
if status == 3:
return(0, "Status is %s with %d%% Load, Power %dA, Output Voltage %sV, Temperature %s°C" % (statename, load, power, voltage, temp), perfdata)
if status == 4:
return(1, "Status is %s with %d%% Load, Power %dA, Output Voltage %sV, Temperature %s°C" % (statename, load, power, voltage, temp), perfdata)
else:
return(2, "Status is %s with %d%% Load, Power %dA, Output Voltage %sV, Temperature %s°C" % (statename, load, power, voltage, temp), perfdata)


check_info['ups_hpe_system_status'] = {
"inventory_function" : inventory_ups_hpe_system_status,
"check_function" : check_ups_hpe_system_status,
"service_description" : "System Status",
"has_perfdata" : True,
# "group" : "hpe_status",
"snmp_info" : ( ".1.3.6.1.4.1.232.165.3", [ "4.1", "4.2", "4.4.1.2", "4.4.1.3", "4.4.1.4", "4.5", "6.1" ]),
"snmp_scan_function" : lambda oid: oid(".1.3.6.1.4.1.232.165.3.1.4") !=('Hewlett-Packard'),

}



Das ist die Ausgabe wenn ich in der CLI den Check mit debug ausführe:

OMD[cnsgj]:~$ check_mk --debug -p -v 10.155.13.50
Check_MK version 1.5.0p4
+ FETCHING DATA
[snmp] Execute data source
[piggyback] Execute data source
Interface 2 OK - [eth0] (up) MAC: 70:10:6F:C9:9F:2C, 10 Mbit/s, in: 387.39 B/s(0.0%), out: 416.17 B/s(0.0%) (in=387.390416;;;0;1250000 inucast=4.123436;;;; innucast=0;;;; indisc=0;;;; inerr=0;0.01;0.1;; out=416.169447;;;0;1250000 outucast=4.123436;;;; outnucast=0;;;; outdisc=0;;;; outerr=0;0.01;0.1;; outqlen=19;;;0;)
SNMP Info OK - HP UPS Management Module, revision 1.00 A, firmware version 2.1.11, cnsgjmi-upsx01, KNOLL IT Support ()
System Battery Status OK - Status is Battery Discharging with 221 minutes runtime remaining, Capacity 99%, Battery Voltage 26.2V (Runtime=221;;;; Capacity=99;;;; Voltage=26.2;;;;)
System Status OK - Status is Output Normal with 0% Load, Power 0A, Output Voltage 0V, Temperature 24°C (Load=0;;;; Power=0;;;; Voltage=0;;;; Temperature=24;;;;)
Uptime OK - Up since Tue Sep 11 11:42:57 2018 (7d 06:16:35) (uptime=627395;;;;)
OK - [snmp] Success, execution time 0.2 sec | execution_time=0.228 user_time=0.030 system_time=0.010 children_user_time=0.000 children_system_time=0.000 cmk_time_snmp=0.187 cmk_time_agent=0.000




Und das ist der Crash Report:

Crash Type

check

Time

2018-09-18 17:49:06

Operating System

stretch

Check_MK Version

1.5.0p4

Edition

cee

Core

cmc

Python Version

2.7.15 (default, Sep 10 2018, 18:28:55) [GCC 7.2.0]

Exception

KeyError ('ups_hpe_system_status')

Traceback

File "/omd/sites/cnsgj/lib/python/cmk_base/checking.py", line 80, in wrapped_check_func
status, infotexts, long_infotexts, perfdata = check_func(hostname, *args, **kwargs)

File "/omd/sites/cnsgj/lib/python/cmk_base/checking.py", line 159, in do_check
_do_all_checks_on_host(sources, hostname, ipaddress, only_check_plugin_names)

File "/omd/sites/cnsgj/lib/python/cmk_base/checking.py", line 234, in _do_all_checks_on_host
sources.enforce_check_plugin_names(only_check_plugin_names)

File "/omd/sites/cnsgj/lib/python/cmk_base/data_sources/__init__.py", line 230, in enforce_check_plugin_names
source.enforce_check_plugin_names(check_plugin_names)

File "/omd/sites/cnsgj/lib/python/cmk_base/data_sources/abstract.py", line 314, in enforce_check_plugin_names
check_plugin_names, self._for_mgmt_board)

File "/omd/sites/cnsgj/lib/python/cmk_base/checks.py", line 843, in filter_by_management_board
host_precedence_tcp, host_only_tcp = _get_categorized_check_plugins(found_check_plugin_names)

File "/omd/sites/cnsgj/lib/python/cmk_base/checks.py", line 895, in _get_categorized_check_plugins
mgmt_board = get_management_board_precedence(check_plugin_name)

File "/omd/sites/cnsgj/lib/python/cmk_base/checks.py", line 787, in get_management_board_precedence
mgmt_board = check_info[check_plugin_name]["management_board"]

Local Variables

{'check_plugin_name': 'ups_hpe_system_status'}



Freundliche Grüße aus Bad Saulgau / Kind regards from Saulgau

KNOLL Maschinenbau GmbH

Michael Birkler
Informationstechnik

KNOLL Maschinenbau GmbH
Schwarzachstraße 20, D-88348 Bad Saulgau
Tel. +49 7581 2008-90503
Fax: +49 7581 2008-90300
E-Mail: ***@knoll-mb.de
Web: http://www.knoll-mb.de<http://www.knoll-mb.de/>
Handelsregister: Ulm HRB 560151
USt-Id-Nr: DE 811 202 964
Geschäftsführer: Matthias Knoll, Jürgen Knoll

[cid:E-MailSign_AMB_052b8a92-c8a4-490f-ab5c-b7ca6726116e.jpg]<https://www.knoll-mb.de/>

Diese E-Mail ist vertraulich. Wenn Sie nicht der rechtmäßige Empfänger sind, dürfen Sie den Inhalt weder kopieren, verbreiten oder benutzen. Sollten Sie diese E-Mail versehentlich erhalten haben, senden Sie sie bitte an uns zurück und löschen sie anschließend.This email is confidential. If you are not the intended recipient, you must not copy, disclose or use its contents. If you have received it in error, please inform us immediately by return email and delete the document.
Andreas Döhler
2018-09-18 19:14:33 UTC
Permalink
Hallo Michael,

Hattest du den Check nach der letzten Generierung der Konfiguration nochmal
im Editor offen?
Habe so einen Àhnlichen Effekt auch gehabt die letzten Tage.
Nachdem du den Check das letzte mal in Bearbeitung hattest unbedingt ein
"cmk -R" durchfÃŒhren dann waren die Fehler bei mir weg.

Da die einzelnen "precompiled" Files der einzelnen Hosts nicht mehr als
eine monolithische Datei existieren kann es scheinbar passieren das
Änderungen an einzelnen Checks das gesamte System in Probleme fÃŒhren auch
ohne das man die Konfiguration neu generiert hat.
Mir ist dies auch nur bei SNMP Checks bisher passiert.

Gruß
Andreas
Post by Birkler Michael
Guten Abend,
Ich habe einen SNMP Check fÃŒr unsere USV geschrieben.
Der Check wird auch sauber ausgefÃŒhrt. Aber nach kurzer Zeit bekomme ich
einen Crash Report.
Kann mir hier jemand weiterhelfen?
#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
#
#
ups_hpe_system_states = {
1: "Output Other",
2: "Output None",
3: "Output Normal",
4: "Output Bypass",
5: "Output Battery",
6: "Output Booster",
7: "Output Reducer",
8: "Output ParallelCapacity",
9: "Output ParallelRedundant",
10: "Output HighEfficiencyMode",
}
return [ (None, None) ]
load = saveint(info[0][0])
frequenz = saveint(info[0][1])
voltage = saveint(info[0][2])
amperage = saveint(info[0][3])
power = saveint(info[0][4])
status = saveint(info[0][5])
temp = saveint(info[0][6])
statename = ups_hpe_system_states.get(status, "(invalid)")
perfdata = [ ( "Load", load ), ( "Power", power ), ( "Voltage",
voltage ), ( "Temperature", temp ) ]
return(0, "Status is %s with %d%% Load, Power %dA, Output Voltage
%sV, Temperature %s°C" % (statename, load, power, voltage, temp), perfdata)
return(1, "Status is %s with %d%% Load, Power %dA, Output Voltage
%sV, Temperature %s°C" % (statename, load, power, voltage, temp), perfdata)
return(2, "Status is %s with %d%% Load, Power %dA, Output Voltage
%sV, Temperature %s°C" % (statename, load, power, voltage, temp), perfdata)
check_info['ups_hpe_system_status'] = {
"inventory_function" : inventory_ups_hpe_system_status,
"check_function" : check_ups_hpe_system_status,
"service_description" : "System Status",
"has_perfdata" : True,
# "group" : "hpe_status",
"snmp_info" : ( ".1.3.6.1.4.1.232.165.3", [ "4.1", "4.2",
"4.4.1.2", "4.4.1.3", "4.4.1.4", "4.5", "6.1" ]),
"snmp_scan_function" : lambda oid: oid(".1.3.6.1.4.1.232.165.3.1.4")
!=('Hewlett-Packard'),
}
OMD[cnsgj]:~$ check_mk --debug -p -v 10.155.13.50
Check_MK version 1.5.0p4
+ FETCHING DATA
[snmp] Execute data source
[piggyback] Execute data source
Interface 2 OK - [eth0] (up) MAC: 70:10:6F:C9:9F:2C, 10 Mbit/s,
in: 387.39 B/s(0.0%), out: 416.17 B/s(0.0%) (in=387.390416;;;0;1250000
inucast=4.123436;;;; innucast=0;;;; indisc=0;;;; inerr=0;0.01;0.1;;
out=416.169447;;;0;1250000 outucast=4.123436;;;; outnucast=0;;;;
outdisc=0;;;; outerr=0;0.01;0.1;; outqlen=19;;;0;)
SNMP Info OK - HP UPS Management Module, revision 1.00 A,
firmware version 2.1.11, cnsgjmi-upsx01, KNOLL IT Support ()
System Battery Status OK - Status is Battery Discharging with 221 minutes
runtime remaining, Capacity 99%, Battery Voltage 26.2V (Runtime=221;;;;
Capacity=99;;;; Voltage=26.2;;;;)
System Status OK - Status is Output Normal with 0% Load, Power 0A,
Output Voltage 0V, Temperature 24°C (Load=0;;;; Power=0;;;; Voltage=0;;;;
Temperature=24;;;;)
Uptime OK - Up since Tue Sep 11 11:42:57 2018 (7d
06:16:35) (uptime=627395;;;;)
OK - [snmp] Success, execution time 0.2 sec | execution_time=0.228
user_time=0.030 system_time=0.010 children_user_time=0.000
children_system_time=0.000 cmk_time_snmp=0.187 cmk_time_agent=0.000
Crash Type
check
Time
2018-09-18 17:49:06
Operating System
stretch
Check_MK Version
1.5.0p4
Edition
cee
Core
cmc
Python Version
2.7.15 (default, Sep 10 2018, 18:28:55) [GCC 7.2.0]
Exception
KeyError ('ups_hpe_system_status')
Traceback
File "/omd/sites/cnsgj/lib/python/cmk_base/checking.py", line 80, in wrapped_check_func
status, infotexts, long_infotexts, perfdata = check_func(hostname, *args, **kwargs)
File "/omd/sites/cnsgj/lib/python/cmk_base/checking.py", line 159, in do_check
_do_all_checks_on_host(sources, hostname, ipaddress,
only_check_plugin_names)
File "/omd/sites/cnsgj/lib/python/cmk_base/checking.py", line 234, in
_do_all_checks_on_host
sources.enforce_check_plugin_names(only_check_plugin_names)
File "/omd/sites/cnsgj/lib/python/cmk_base/data_sources/__init__.py",
line 230, in enforce_check_plugin_names
source.enforce_check_plugin_names(check_plugin_names)
File "/omd/sites/cnsgj/lib/python/cmk_base/data_sources/abstract.py",
line 314, in enforce_check_plugin_names
check_plugin_names, self._for_mgmt_board)
File "/omd/sites/cnsgj/lib/python/cmk_base/checks.py", line 843, in
filter_by_management_board
host_precedence_tcp, host_only_tcp =
_get_categorized_check_plugins(found_check_plugin_names)
File "/omd/sites/cnsgj/lib/python/cmk_base/checks.py", line 895, in
_get_categorized_check_plugins
mgmt_board = get_management_board_precedence(check_plugin_name)
File "/omd/sites/cnsgj/lib/python/cmk_base/checks.py", line 787, in
get_management_board_precedence
mgmt_board = check_info[check_plugin_name]["management_board"]
Local Variables
{'check_plugin_name': 'ups_hpe_system_status'}
Freundliche GrÌße aus Bad Saulgau / Kind regards from Saulgau
KNOLL Maschinenbau GmbH
Michael Birkler
Informationstechnik
KNOLL Maschinenbau GmbH
Schwarzachstraße 20, D-88348 Bad Saulgau
Tel. +49 7581 2008-90503 <07581%20200890503>
Fax: +49 7581 2008-90300 <07581%20200890300>
Web: http://www.knoll-mb.de
Handelsregister: Ulm HRB 560151
USt-Id-Nr: DE 811 202 964
GeschÀftsfÌhrer: Matthias Knoll, JÌrgen Knoll
<https://www.knoll-mb.de/>
Diese E-Mail ist vertraulich. Wenn Sie nicht der rechtmÀßige EmpfÀnger
sind, dÃŒrfen Sie den Inhalt weder kopieren, verbreiten oder benutzen.
Sollten Sie diese E-Mail versehentlich erhalten haben, senden Sie sie bitte
an uns zurÃŒck und löschen sie anschließend.This email is confidential. If
you are not the intended recipient, you must not copy, disclose or use its
contents. If you have received it in error, please inform us immediately by
return email and delete the document.
_______________________________________________
checkmk-de mailing list
Verwaltung & Abmeldung unter
http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de
Loading...