[Check_mk (deutsch)] Neues Graphensystem (CEE) und eigene Checks

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,
}
···


Michael
Gusek
|
System Administrator |
Webtrekk GmbH |
t
+49
30 755 415 302
|
** f** +49
30 755
415 100 | ** w**

                      Amtsgericht/Local

Court Berlin, HRB 93435 B | Geschäftsführer/CEO Christian
Sauer

www.webtrekk.com

Hallo Michael,

wir nutzen zwar aktuell keine 1.2.7, aber aus Erfahrung der Vergangenheit wird es (hoffentlich) in Q1/2016 die neue 1.2.8 (oder wie auch immer sie heissen wird) geben und deshalb interessiert uns diese Information natuerlich auch brennend.

Gruesse,

Marcel

P.S.: bei meinen letzten Tests der 1.2.7-CEE wurde bei Click auf das Graphen-Icon noch die entsprechende PNP-Seite aufgerufen, funktioniert das mittlerweile auch (sprich: die neuen Graphen werden gezeigt)? Ich stelle fest, ich muss doch mal wieder testen… :wink:

···

Michael Gusek michael.gusek@webtrekk.com schrieb am Mo., 4. Jan. 2016 um 12:02 Uhr:

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,

}


Michael
Gusek
>
System Administrator |
Webtrekk GmbH |
t
+49
30 755 415 302
>
** f** +49
30 755
415 100 | ** w**www.webtrekk.com

                      Amtsgericht/Local

Court Berlin, HRB 93435 B | Geschäftsführer/CEO Christian
Sauer


checkmk-de mailing list

checkmk-de@lists.mathias-kettner.de

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

Hallo Michael,
ändere mal bitte die Zeile:
perfdata = [ ( “Rejected_Connections”,
current, warn, crit ) ]
nach:
perfdata = [ ( “Rejected_Connections”,
“%sB” % current, warn, crit ) ]
Das hat schon so bei PNP mit der Unit-Übergabe
funktioniert und ich denke das sollte dann auch beim neuen Metric System
funktionieren. Auf einen Versuch kommt es an.
Mit freundlichen Grüßen
Rene Stolle

···

Corporate IT / Infrastruktur + Service
Operation Service
Produktionsbasis Print
FUNKE Corporate IT GmbH

Friedrichstr. 34 - 38, 45128 Essen

Sitz Essen, Amtsgericht Essen HRB 23241

Geschäftsführer: Michael Kurowski, Michael Wüller

Telefon: +49 201 804 8791

E-Mail: r.stolle@funkemedien.de

Von:
Michael Gusek michael.gusek@webtrekk.com

An:
checkmk-de@lists.mathias-kettner.de

Datum:
04.01.2016 12:02

Betreff:
[Check_mk (deutsch)]
Neues Graphensystem (CEE) und eigene Checks

Gesendet von:
checkmk-de-bounces@lists.mathias-kettner.de


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,

}


Michael Gusek

System Administrator
Webtrekk GmbH | **
t** +49
30 755 415 302 |
f +49
30 755 415 100 | wwww.webtrekk.com

Amtsgericht/Local Court Berlin, HRB 93435 B | Geschäftsführer/CEO Christian
Sauer

`_______________________________________________

checkmk-de mailing list

checkmk-de@lists.mathias-kettner.de

[http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de`](http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de)

Hi,

ein paar Info's dazu finden sich im Konferenzvortrag:
http://mathias-kettner.de/check_mk_konferenz_2015_vortrag_06.html

Dann schau mal in
~/share/check_mk/web/plugins/metrics/check_mk.py
Damit müsste sich dann eine passende Datei
~local//share/check_mk/web/plugins/metrics/check_redis.py
anlegen lassen.
Gemacht habe ich das aber auch noch nicht.

Gruß

Udo

----- Ursprüngliche Mail -----

···

Von: "Michael Gusek" <michael.gusek@webtrekk.com>
An: checkmk-de@lists.mathias-kettner.de
Gesendet: Montag, 4. Januar 2016 12:01:15
Betreff: [Check_mk (deutsch)] Neues Graphensystem (CEE) und eigene Checks

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,
}

--

________________________________________________

Michael Gusek | System Administrator | Webtrekk GmbH |
t +49 30 755 415 3 02 | f +49 30 755 415 100 | w www.webtrekk.com
Amtsgericht/Local Court Berlin, HRB 93435 B | Geschäftsführer/CEO Christian Sauer

_______________________________________________
checkmk-de mailing list
checkmk-de@lists.mathias-kettner.de
http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de

Ja da scheint der Hase im Pfeffer zu liegen. Ich habe im Verzeichnis
~/local/share/check_mk/web/plugins/metrics die Datei check_redis.py
mit dem Inhalt

#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-

check_metrics["redis_server"] = {
  "Memory" : { "name" : "mem_used",  "scale" : MB },
}

angelegt. Leider wird das so nicht gefressen, auch ein ändern von

“redis_server” in “check-mk-redis_server” hilft da nicht. Irgendwas
übersehe ich da noch ?

Micha
···

On 04.01.2016 15:09, Udo Woehler wrote:


Hi,
ein paar Info's dazu finden sich im Konferenzvortrag:
Dann schau mal in
~/share/check_mk/web/plugins/metrics/check_mk.py
Damit müsste sich dann eine passende Datei
~local//share/check_mk/web/plugins/metrics/check_redis.py
anlegen lassen.
Gemacht habe ich das aber auch noch nicht.
Gruß
Udo
----- Ursprüngliche Mail -----
Von: "Michael Gusek" An: Gesendet: Montag, 4. Januar 2016 12:01:15
Betreff: [Check_mk (deutsch)] Neues Graphensystem (CEE) und eigene Checks
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, }


Michael
Gusek
|
System Administrator |
Webtrekk GmbH |
t
+49
30 755 415 302
|
** f** +49
30 755
415 100 | ** w**

                      Amtsgericht/Local

Court Berlin, HRB 93435 B | Geschäftsführer/CEO Christian
Sauer

http://mathias-kettner.de/check_mk_konferenz_2015_vortrag_06.htmlmichael.gusek@webtrekk.comcheckmk-de@lists.mathias-kettner.dewww.webtrekk.com

Hi,

versuch mal "check_mk-redis_server" (man beachte den _ in check_mk).
Hast Du den Core nach einer Änderung neu gestartet?

Gruß

Udo

----- Ursprüngliche Mail -----

···

Von: "Michael Gusek" <michael.gusek@webtrekk.com>
An: "Udo Woehler" <uw@bsw-com.de>
CC: checkmk-de@lists.mathias-kettner.de
Gesendet: Montag, 4. Januar 2016 15:52:32
Betreff: Re: [Check_mk (deutsch)] Neues Graphensystem (CEE) und eigene Checks

Ja da scheint der Hase im Pfeffer zu liegen. Ich habe im Verzeichnis ~/local/share/check_mk/web/plugins/metrics die Datei check_redis.py mit dem Inhalt

#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-

check_metrics["redis_server"] = {
"Memory" : { "name" : "mem_used", "scale" : MB },
}

angelegt. Leider wird das so nicht gefressen, auch ein ändern von "redis_server" in "check-mk-redis_server" hilft da nicht. Irgendwas übersehe ich da noch ?

Micha

On 04.01.2016 15:09, Udo Woehler wrote:

Hi,

ein paar Info's dazu finden sich im Konferenzvortrag: http://mathias-kettner.de/check_mk_konferenz_2015_vortrag_06.html Dann schau mal in
~/share/check_mk/web/plugins/metrics/check_mk.py
Damit müsste sich dann eine passende Datei
~local//share/check_mk/web/plugins/metrics/check_redis.py
anlegen lassen.
Gemacht habe ich das aber auch noch nicht.

Gruß

Udo

----- Ursprüngliche Mail -----
Von: "Michael Gusek" <michael.gusek@webtrekk.com> An: checkmk-de@lists.mathias-kettner.de Gesendet: Montag, 4. Januar 2016 12:01:15
Betreff: [Check_mk (deutsch)] Neues Graphensystem (CEE) und eigene Checks

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,
}

--

________________________________________________

Michael Gusek | System Administrator | Webtrekk GmbH |
t +49 30 755 415 3 02 | f +49 30 755 415 100 | w www.webtrekk.com
Amtsgericht/Local Court Berlin, HRB 93435 B | Geschäftsführer/CEO Christian Sauer

Ah, damit klapps. Die Datei sieht jetzt so aus:

#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-

check_metrics["check_mk-redis_server"] = {
  "Memory" : { "name" : "mem_used",  "scale" : MB },
}

Ich hab jetzt zwar die Angabe in TB, aber das krieg ich noch hin.

Vielen Dank schonmal,

Micha
···

On 04.01.2016 16:08, Udo Woehler wrote:


Hi,
versuch mal "check_mk-redis_server" (man beachte den _ in check_mk).
Hast Du den Core nach einer Änderung neu gestartet?
Gruß
Udo
----- Ursprüngliche Mail -----
Von: "Michael Gusek" An: "Udo Woehler" CC: Gesendet: Montag, 4. Januar 2016 15:52:32
Betreff: Re: [Check_mk (deutsch)] Neues Graphensystem (CEE) und eigene Checks
Ja da scheint der Hase im Pfeffer zu liegen. Ich habe im Verzeichnis ~/local/share/check_mk/web/plugins/metrics die Datei check_redis.py mit dem Inhalt #!/usr/bin/python # -*- encoding: utf-8; py-indent-offset: 4 -*- check_metrics["redis_server"] = { "Memory" : { "name" : "mem_used", "scale" : MB }, } angelegt. Leider wird das so nicht gefressen, auch ein ändern von "redis_server" in "check-mk-redis_server" hilft da nicht. Irgendwas übersehe ich da noch ? Micha On 04.01.2016 15:09, Udo Woehler wrote: Hi,
ein paar Info's dazu finden sich im Konferenzvortrag: Dann schau mal in
~/share/check_mk/web/plugins/metrics/check_mk.py
Damit müsste sich dann eine passende Datei
~local//share/check_mk/web/plugins/metrics/check_redis.py
anlegen lassen.
Gemacht habe ich das aber auch noch nicht.
Gruß
Udo
----- Ursprüngliche Mail -----
Von: "Michael Gusek" An: Gesendet: Montag, 4. Januar 2016 12:01:15
Betreff: [Check_mk (deutsch)] Neues Graphensystem (CEE) und eigene Checks
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, }


Michael
Gusek
|
System Administrator |
Webtrekk GmbH |
t
+49
30 755 415 302
|
** f** +49
30 755
415 100 | ** w**

                      Amtsgericht/Local

Court Berlin, HRB 93435 B | Geschäftsführer/CEO Christian
Sauer

michael.gusek@webtrekk.comuw@bsw-com.decheckmk-de@lists.mathias-kettner.dehttp://mathias-kettner.de/check_mk_konferenz_2015_vortrag_06.htmlmichael.gusek@webtrekk.comcheckmk-de@lists.mathias-kettner.dewww.webtrekk.com