Hi,
ich habe für meine Redisdatenbanken einen eigenen Check geschrieben,
der mir unter anderen den verwendeten Hauptspeicher ausgibt. Mit dem
neuen Graphensystem wird mir nicht die Einheit angezeigt. Auf der
Konferenz habe ich für mich migenommen, das check-mk das selber
ermittelt, bzw. ich sagen kann, das mein Check Bytes als Einheit
verwendet. Wo kann ich diese Information ablegen, damit der Graph
die richtige Einheit verwendet ?
Hier der Check ~/check_mk/local/share/check_mk/checks/check_redis
selber:
# <<<redis_server>>
# ...
# connected_clients 24
# used_memory 1327400
# rejected_connections
# ...
suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']
def humansize(nbytes):
if nbytes == 0: return '0 B'
i = 0
while nbytes >= 1024 and i < len(suffixes)-1:
nbytes /= 1024.
i += 1
f = ('%.2f' % nbytes).rstrip('0').rstrip('.')
return '%s %s' % (f, suffixes[i])
def inventory_redis_server(info):
inventory = []
wanted_checks = [ 'connected_clients', 'used_memory',
‘rejected_connections’ ]
for line in info:
if line[0] in wanted_checks:
inventory.append( (line[0], None) )
return inventory
# the check function (dummy)
def check_redis_server(item, params, info):
for line in info:
if line[0] == item:
if item == "used_memory":
current = int(line[1])
human_current = humansize(current)
warn = 1073741824
crit = 2147483648
perfdata = [ ( "Memory", current, warn, crit ) ]
if current >= crit:
return 2, "Used memory %s is critical" %
human_current, perfdata
if current >= warn:
return 1, "Used memory %s is warning" %
human_current, perfdata
return 0, "Used memory %s is ok" % human_current,
perfdata
if item == "connected_clients":
current = int(line[1])
warn = 250
crit = 500
perfdata = [ ( "Clients", current, warn, crit ) ]
return 0, "Connected clients: %s" % current,
perfdata
if item == "rejected_connections":
current = int(line[1])
warn = 10
crit = 20
perfdata = [ ( "Rejected_Connections", current,
warn, crit ) ]
if current >= crit:
return 2, "Rejected Connections %s is critical"
% current, perfdata
if current >= warn:
return 1, "Rejected Connections %s is warning" %
current, perfdata
return 0, "Rejected Connections %s is ok" % current,
perfdata
return (3, "Check %s not found in agent output" % item)
# declare the check to Check_MK
check_info["redis_server"] = {
'check_function': check_redis_server,
'inventory_function': inventory_redis_server,
'service_description': 'Redis %s',
'has_perfdata': True,
}