[Check_mk (deutsch)] Mobile Benachrichtigung mit Prowl

Hallo Liste,

gerade gesehen das seit kurzem im GIT ein Script für Pushover Benachrichtigungen gibt. Da ich schon immer Prowl Nutzer bin habe ich mir damals angehängtes Bash Script geschrieben. Eventuell hat da ja jemand Interesse dran. Damals war es
für mich einfacher Bash zu scripten und Curl dann so aufzurufen, jetzt würde ich das sicher auch in Python schreiben. Aber es läuft immer noch problemlos – never change a running system :wink:

Anleitung: Zu den anderen Scripten im Ordner „notifications“ legen, ausführbar machen und als ersten und einzigen Parameter den API Key von
https://www.prowlapp.com/api_settings.php kopieren. Ich habe mir extra einen für Nagios generiert.

Viele Grüße

Christian Arnold

Stadt Leinfelden-Echterdingen
Haupt- und Personalamt

Abteilung Informations- und Kommunikationstechnik

Kernerstraße 4

70771 Leinfelden-Echterdingen

E-Mail: C.Arnold@le-mail.de
www.leinfelden-echterdingen.de

prowl (1.24 KB)

Hi,

hat jemand eine Idee warum dieser Check nun crashed nachdem er lange ohne Probleme lief?

Crash report
Check output: check failed - please submit a crash report!
Check_MK Version: 1.2.7i1p3
Host: db1.xxx.intern
Service: MySQL DB Slave mysql
Check type: mysql_slave
Item: ‘mysql’
Parameters: {}
Traceback (most recent call last):
File “/omd/sites/fidor/share/check_mk/modules/check_mk_base.py”, line 1397, in do_all_checks_on_host
result = convert_check_result(check_function(item, params, info), check_uses_snmp(checkname))
File “/omd/sites/fidor/share/check_mk/checks/mysql_slave”, line 91, in check_mysql_slave
if data[‘Seconds_Behind_Master’] == ‘NULL’:
KeyError: 'Seconds_Behind_Master’

Der Output vom Agent:

<<<mysql_slave>>>
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.1.27.6
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: repl-log-bin.002158
Read_Master_Log_Pos: 920335896
Relay_Log_File: repl-relay-bin.003954
Relay_Log_Pos: 591712186
Relay_Master_Log_File: repl-log-bin.002158
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 920335896
Relay_Log_Space: 786316196
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 12

Danke!

Stefan

···

Date: 2015-20-07 13:58:57

Ist ein KeyError im dict „data“. Scheint so als wäre der Key „Seconds_Behind_Master“ nicht aufrufbar (wieso auch immer, in den Daten
steht ganz klar eine 0 drin). Wenn du nicht selber was im Code geändert hast, sollte es funktionieren. Wenn du Zeit hast, kannst du den Check auf daten.keys() mal herausfinden ob der Key drin ist oder nicht (vielleicht fehlt irgendwo ein Buchstabe oder die
Cases stimmen nicht 100% überein).

Naja, falls nicht, kannst du den Check von share/check_mk/checks/mysql_slave nach local/share/check_mk/checks/mysql_slave kopieren
und statt

if data[‚Seconds_Behind_Master‘] == ‚NULL‘

lieber

if data.get(‚Seconds_Behind_Master‘) == ‚NULL‘

reinschreiben. Ist zwar nicht schön, aber die Exception kommt nicht mehr hoch (aber du Bekommst keine Daten, falls der Fehler auftritt).

Dabei ist in den Code schauen und den Fehler aufspüren die deutlich bessere Lösung.

image001.jpg

···

Mit freundlichen Grüßen

i.A. Jakub Tusz

Jakub Tusz
Abt.: V5-IT - Verwaltung | Informationstechnologie

VBK - Verkehrsbetriebe Karlsruhe GmbH
Tullastraße 71, D-76131 Karlsruhe
Postfach 1140, D-76001 Karlsruhe

Telefon:
Fax:
E-Mail:

+49(721)6107 5905
+49(721)6107 5909
jakub.tusz@vbk.karlsruhe.de

Kfm. Geschäftsführer: Dr. Alexander Pischon, Techn. Geschäftsführer: Ascan Egerer

Vorsitzender des Aufsichtsrates: Oberbürgermeister Dr. Frank Mentrup

Amtsgericht Mannheim HRB 107847


Von: checkmk-de-bounces@lists.mathias-kettner.de [mailto:checkmk-de-bounces@lists.mathias-kettner.de]
Im Auftrag von Stefan Sticht
Gesendet: Montag, 20. Juli 2015 14:34
An: checkmk-de@lists.mathias-kettner.de
Betreff: [Check_mk (deutsch)] check mysql_slave crashed mit KeyError: ‘Seconds_Behind_Master’?

Hi,

hat jemand eine Idee warum dieser Check nun crashed nachdem er lange ohne Probleme lief?

Crash report
Check output: check failed - please submit a crash report!
Check_MK Version: 1.2.7i1p3
Date: 2015-20-07 13:58:57
Host: db1.xxx.intern
Service: MySQL DB Slave mysql
Check type: mysql_slave
Item: ‘mysql’
Parameters: {}
Traceback (most recent call last):
File “/omd/sites/fidor/share/check_mk/modules/check_mk_base.py”, line 1397, in do_all_checks_on_host
result = convert_check_result(check_function(item, params, info), check_uses_snmp(checkname))
File “/omd/sites/fidor/share/check_mk/checks/mysql_slave”, line 91, in check_mysql_slave
if data[‘Seconds_Behind_Master’] == ‘NULL’:
KeyError: 'Seconds_Behind_Master’

Der Output vom Agent:

<<<mysql_slave>>>
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.1.27.6
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: repl-log-bin.002158
Read_Master_Log_Pos: 920335896
Relay_Log_File: repl-relay-bin.003954
Relay_Log_Pos: 591712186
Relay_Master_Log_File: repl-log-bin.002158
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 920335896
Relay_Log_Space: 786316196
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

            Last_IO_Errno: 0

            Last_IO_Error: 

           Last_SQL_Errno: 0

           Last_SQL_Error: 

Replicate_Ignore_Server_Ids:

         Master_Server_Id: 12

Danke!

Stefan

Hi,

ich habe das Problem gefunden:

Das plugin und der mysql_slave check wurden nach 1.2.6p5.cee überarbeitet,
wohl um verschiedene mysql-Instanzen auf einem Host verarbeiten zu können.

Fuer mich sieht es so aus:

Altes plugin, alter check -> ok
Altes plugin, neuer check -> crash
Neues plugin, neuer check -> crash

Das Problem ist in parse_mysql_slave(info) zwei mal:

            value = parse_line(line)
            if value:
                parsed[instance][line[0][:-1]] = value

oder im zweiten Teil der Funktion:

    # Support for old Plugin version

            value = parse_line(line)
            if value:
                parsed['mysql'][line[0][:-1]] = value

Bei einigen Werten des mysql "show slave status” ist der Wert an sich 0:

['Seconds_Behind_Master:', '0']

Wenn der Wert an sich 0 ist, dann ist “if value” immer false und die Zeile wird
nie in die Datenstruktur parsed aufgenommen.

Man sieht das schnell wenn man folgenden Debugouput einbaut:

        for line in info:
            print line
            value = parse_line(line)
            print value
            if value:
                parsed['mysql'][line[0][:-1]] = value

    print parsed
    return parsed

und man sich das Ergenis ansieht:

['***************************', '1.', 'row', '***************************']
None
['Slave_IO_State:', 'Waiting', 'for', 'master', 'to', 'send', 'event']
Waiting for master to send event
['Master_Host:', '10.1.27.6']
10.1.27.6
['Master_User:', 'repl']
repl
['Master_Port:', '3306']
3306
['Connect_Retry:', '60']
60
['Master_Log_File:', 'repl-log-bin.002159']
repl-log-bin.002159
['Read_Master_Log_Pos:', '88452512']
88452512
['Relay_Log_File:', 'repl-relay-bin.003958']
repl-relay-bin.003958
['Relay_Log_Pos:', '25464404']
25464404
['Relay_Master_Log_File:', 'repl-log-bin.002159']
repl-log-bin.002159
['Slave_IO_Running:', 'Yes']
True
['Slave_SQL_Running:', 'Yes']
True
['Replicate_Do_DB:']

['Replicate_Ignore_DB:']

['Replicate_Do_Table:']

['Replicate_Ignore_Table:']

['Replicate_Wild_Do_Table:']

['Replicate_Wild_Ignore_Table:']

['Last_Errno:', '0']
0
['Last_Error:']

['Skip_Counter:', '0']
0
['Exec_Master_Log_Pos:', '88452512']
88452512
['Relay_Log_Space:', '88452919']
88452919
['Until_Condition:', 'None']
None
['Until_Log_File:']

['Until_Log_Pos:', '0']
0
['Master_SSL_Allowed:', 'No']
False
['Master_SSL_CA_File:']

['Master_SSL_CA_Path:']

['Master_SSL_Cert:']

['Master_SSL_Cipher:']

['Master_SSL_Key:']

['Seconds_Behind_Master:', '0']
0
['Master_SSL_Verify_Server_Cert:', 'No']
False
['Last_IO_Errno:', '0']
0
['Last_IO_Error:']

['Last_SQL_Errno:', '0']
0
['Last_SQL_Error:']

['Replicate_Ignore_Server_Ids:']

['Master_Server_Id:', '12']
12
{'mysql': {'Master_Log_File': 'repl-log-bin.002159', 'Slave_IO_Running': True, 'Read_Master_Log_Pos': 88452512, 'Relay_Log_Space': 88452919, 'Slave_IO_State': 'Waiting for master to send event', 'Exec_Master_Log_Pos': 88452512, 'Master_Host': '10.1.27.6', 'Master_Server_Id': 12, 'Master_User': 'repl', 'Master_Port': 3306, 'Relay_Master_Log_File': 'repl-log-bin.002159', 'Connect_Retry': 60, 'Slave_SQL_Running': True, 'Relay_Log_Pos': 25464404, 'Relay_Log_File': 'repl-relay-bin.003958’}}

Ich hoffe das hilft jemanden.

Stefan

···

Von: checkmk-de-bounces@lists.mathias-kettner.de [mailto:checkmk-de-bounces@lists.mathias-kettner.de] Im Auftrag von Stefan Sticht
Gesendet: Montag, 20. Juli 2015 14:34
An: checkmk-de@lists.mathias-kettner.de
Betreff: [Check_mk (deutsch)] check mysql_slave crashed mit KeyError: 'Seconds_Behind_Master'?

Hi,

hat jemand eine Idee warum dieser Check nun crashed nachdem er lange ohne Probleme lief?

Crash report

  Check output: check failed - please submit a crash report!
  Check_MK Version: 1.2.7i1p3
  Date: 2015-20-07 13:58:57
  Host: db1.xxx.intern
  Service: MySQL DB Slave mysql
  Check type: mysql_slave
  Item: 'mysql'
  Parameters: {}
  Traceback (most recent call last):
        File "/omd/sites/fidor/share/check_mk/modules/check_mk_base.py", line 1397, in do_all_checks_on_host
          result = convert_check_result(check_function(item, params, info), check_uses_snmp(checkname))
        File "/omd/sites/fidor/share/check_mk/checks/mysql_slave", line 91, in check_mysql_slave
          if data['Seconds_Behind_Master'] == 'NULL':
      KeyError: 'Seconds_Behind_Master’

Der Output vom Agent:
    
<<<mysql_slave>>>
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.1.27.6
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: repl-log-bin.002158
          Read_Master_Log_Pos: 920335896
               Relay_Log_File: repl-relay-bin.003954
                Relay_Log_Pos: 591712186
        Relay_Master_Log_File: repl-log-bin.002158
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 920335896
              Relay_Log_Space: 786316196
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 12

Danke!

Stefan

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte Informationen enthalten. Wenn Sie nicht der richtige Adressat sind, so bitten wir Sie, sofort den Absender zu informieren und diese E-Mail vollständig zu löschen. Das unerlaubte Kopieren, Weiterleiten, Verbreiten oder Verwenden dieser E-Mail und deren Inhalte ist nicht gestattet.
_______________________________________________
checkmk-de mailing list
checkmk-de@lists.mathias-kettner.de
http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de

Wir treffen uns zur 2. Check_MK-Konferenz in München!
Rechtzeitig buchen und dabei sein!
18.-20. Oktober 2015
http://mathias-kettner.de/conference

Hallo Stefan,

ich habe nun die beiden von Dir genannten Zeilen einfach folgendermassen abgeändert und nun funktioniert es wieder einwandfrei!

von:

            if value:

nach:

            if value or value == 0:

Gruß
Stefan

···

Von: Stefan Sticht <sticht@sticht.com<mailto:sticht@sticht.com>>
Datum: Montag, 20. Juli 2015 19:06
An: "feedback@check-mk.org<mailto:feedback@check-mk.org>" <feedback@check-mk.org<mailto:feedback@check-mk.org>>
Cc: "checkmk-de@lists.mathias-kettner.de<mailto:checkmk-de@lists.mathias-kettner.de>" <checkmk-de@lists.mathias-kettner.de<mailto:checkmk-de@lists.mathias-kettner.de>>
Betreff: [Check_mk (deutsch)] [Bug]: check mysql_slave crashed mit KeyError:'Seconds_Behind_Master'

Hi,

ich habe das Problem gefunden:

Das plugin und der mysql_slave check wurden nach 1.2.6p5.cee überarbeitet,
wohl um verschiedene mysql-Instanzen auf einem Host verarbeiten zu können.

Fuer mich sieht es so aus:

Altes plugin, alter check -> ok
Altes plugin, neuer check -> crash
Neues plugin, neuer check -> crash

Das Problem ist in parse_mysql_slave(info) zwei mal:

            value = parse_line(line)
            if value:
                parsed[instance][line[0][:-1]] = value

oder im zweiten Teil der Funktion:

    # Support for old Plugin version

            value = parse_line(line)
            if value:
                parsed['mysql'][line[0][:-1]] = value

Bei einigen Werten des mysql "show slave status” ist der Wert an sich 0:

['Seconds_Behind_Master:', '0']

Wenn der Wert an sich 0 ist, dann ist “if value” immer false und die Zeile wird
nie in die Datenstruktur parsed aufgenommen.

Man sieht das schnell wenn man folgenden Debugouput einbaut:

        for line in info:
            print line
            value = parse_line(line)
            print value
            if value:
                parsed['mysql'][line[0][:-1]] = value

    print parsed
    return parsed

und man sich das Ergenis ansieht:

['***************************', '1.', 'row', '***************************']
None
['Slave_IO_State:', 'Waiting', 'for', 'master', 'to', 'send', 'event']
Waiting for master to send event
['Master_Host:', '10.1.27.6']
10.1.27.6
['Master_User:', 'repl']
repl
['Master_Port:', '3306']
3306
['Connect_Retry:', '60']
60
['Master_Log_File:', 'repl-log-bin.002159']
repl-log-bin.002159
['Read_Master_Log_Pos:', '88452512']
88452512
['Relay_Log_File:', 'repl-relay-bin.003958']
repl-relay-bin.003958
['Relay_Log_Pos:', '25464404']
25464404
['Relay_Master_Log_File:', 'repl-log-bin.002159']
repl-log-bin.002159
['Slave_IO_Running:', 'Yes']
True
['Slave_SQL_Running:', 'Yes']
True
['Replicate_Do_DB:']

['Replicate_Ignore_DB:']

['Replicate_Do_Table:']

['Replicate_Ignore_Table:']

['Replicate_Wild_Do_Table:']

['Replicate_Wild_Ignore_Table:']

['Last_Errno:', '0']
0
['Last_Error:']

['Skip_Counter:', '0']
0
['Exec_Master_Log_Pos:', '88452512']
88452512
['Relay_Log_Space:', '88452919']
88452919
['Until_Condition:', 'None']
None
['Until_Log_File:']

['Until_Log_Pos:', '0']
0
['Master_SSL_Allowed:', 'No']
False
['Master_SSL_CA_File:']

['Master_SSL_CA_Path:']

['Master_SSL_Cert:']

['Master_SSL_Cipher:']

['Master_SSL_Key:']

['Seconds_Behind_Master:', '0']
0
['Master_SSL_Verify_Server_Cert:', 'No']
False
['Last_IO_Errno:', '0']
0
['Last_IO_Error:']

['Last_SQL_Errno:', '0']
0
['Last_SQL_Error:']

['Replicate_Ignore_Server_Ids:']

['Master_Server_Id:', '12']
12
{'mysql': {'Master_Log_File': 'repl-log-bin.002159', 'Slave_IO_Running': True, 'Read_Master_Log_Pos': 88452512, 'Relay_Log_Space': 88452919, 'Slave_IO_State': 'Waiting for master to send event', 'Exec_Master_Log_Pos': 88452512, 'Master_Host': '10.1.27.6', 'Master_Server_Id': 12, 'Master_User': 'repl', 'Master_Port': 3306, 'Relay_Master_Log_File': 'repl-log-bin.002159', 'Connect_Retry': 60, 'Slave_SQL_Running': True, 'Relay_Log_Pos': 25464404, 'Relay_Log_File': 'repl-relay-bin.003958’}}

Ich hoffe das hilft jemanden.

Stefan

Von: checkmk-de-bounces@lists.mathias-kettner.de<mailto:checkmk-de-bounces@lists.mathias-kettner.de> [mailto:checkmk-de-bounces@lists.mathias-kettner.de] Im Auftrag von Stefan Sticht
Gesendet: Montag, 20. Juli 2015 14:34
An: checkmk-de@lists.mathias-kettner.de<mailto:checkmk-de@lists.mathias-kettner.de>
Betreff: [Check_mk (deutsch)] check mysql_slave crashed mit KeyError: 'Seconds_Behind_Master'?

Hi,

hat jemand eine Idee warum dieser Check nun crashed nachdem er lange ohne Probleme lief?

Crash report

  Check output: check failed - please submit a crash report!
  Check_MK Version: 1.2.7i1p3
  Date: 2015-20-07 13:58:57
  Host: db1.xxx.intern
  Service: MySQL DB Slave mysql
  Check type: mysql_slave
  Item: 'mysql'
  Parameters: {}
  Traceback (most recent call last):
        File "/omd/sites/fidor/share/check_mk/modules/check_mk_base.py", line 1397, in do_all_checks_on_host
          result = convert_check_result(check_function(item, params, info), check_uses_snmp(checkname))
        File "/omd/sites/fidor/share/check_mk/checks/mysql_slave", line 91, in check_mysql_slave
          if data['Seconds_Behind_Master'] == 'NULL':
      KeyError: 'Seconds_Behind_Master’

Der Output vom Agent:

<<<mysql_slave>>>
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.1.27.6
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: repl-log-bin.002158
          Read_Master_Log_Pos: 920335896
               Relay_Log_File: repl-relay-bin.003954
                Relay_Log_Pos: 591712186
        Relay_Master_Log_File: repl-log-bin.002158
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 920335896
              Relay_Log_Space: 786316196
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 12

Danke!

Stefan

________________________________
Diese E-Mail kann vertrauliche und/oder rechtlich geschützte Informationen enthalten. Wenn Sie nicht der richtige Adressat sind, so bitten wir Sie, sofort den Absender zu informieren und diese E-Mail vollständig zu löschen. Das unerlaubte Kopieren, Weiterleiten, Verbreiten oder Verwenden dieser E-Mail und deren Inhalte ist nicht gestattet.
_______________________________________________
checkmk-de mailing list
checkmk-de@lists.mathias-kettner.de<mailto:checkmk-de@lists.mathias-kettner.de>
http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de

Wir treffen uns zur 2. Check_MK-Konferenz in München!
Rechtzeitig buchen und dabei sein!
18.-20. Oktober 2015
http://mathias-kettner.de/conference