Birkler Michael
2018-09-18 16:03:02 UTC
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.
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.