|
| 1 | +# check_httpv2_evn - Erweiterte Inhaltsprüfung |
| 2 | + |
| 3 | +## Beschreibung |
| 4 | + |
| 5 | +Dieses Monitoring-Paket (MKP) enthält eine angepasste Version des `check_httpv2`-Plugins mit dem Namen `check_httpv2_evn`. Die Anpassung ermöglicht es, im Fehlerfall spezifische Teile aus dem Body einer HTTP-Antwort zu extrahieren und als Service-Zusammenfassung (Summary) in Checkmk anzuzeigen. Dies ist besonders nützlich für die Überwachung von APIs, die detaillierte Fehlermeldungen im JSON-Format zurückgeben. |
| 6 | + |
| 7 | +## Funktionsweise |
| 8 | + |
| 9 | +Die Kernfunktionalität basiert auf einer intelligenten Nutzung der Regex-Optionen des Checks: |
| 10 | + |
| 11 | +1. **Invertierte Regex-Prüfung:** Anstatt auf einen "OK"-Zustand zu prüfen, wird ein regulärer Ausdruck konfiguriert, der den **Fehlerfall** beschreibt. |
| 12 | +2. **Fehlerfall-Erkennung:** Die Option `--body-regex-invert` wird verwendet. Das bedeutet: |
| 13 | + * **OK-Zustand:** Der Regex für den Fehlerfall findet **keine** Übereinstimmung im Antwort-Body. Durch die Invertierung ist der Check-Status **OK**. |
| 14 | + * **Fehler-Zustand:** Der Regex findet eine Übereinstimmung. Der Check geht in den Zustand **WARNING**. |
| 15 | +3. **Dynamische Ausgabe:** Im Fehlerfall wird der gesamte Text, der vom regulären Ausdruck gefunden wurde, als Service-Output verwendet. Die Standard-Fehlermeldung wird dadurch ersetzt. |
| 16 | + |
| 17 | +## Konfiguration |
| 18 | + |
| 19 | +Die Konfiguration erfolgt über das Regelwerk **"Setup > Services > Other services > Integrate Nagios plug-ins"**. |
| 20 | + |
| 21 | +**Kommandozeilen-Beispiel:** |
| 22 | + |
| 23 | +``` |
| 24 | +check_httpv2_evn --url '$URL$' --method GET --body-regex '(?s)"msg":".*?".*"status":"-.*?".*"summary":\{.*\}' --body-regex-invert |
| 25 | +``` |
| 26 | + |
| 27 | +*Anmerkung: Weitere Parameter wie Authentifizierung (`--auth-user`, etc.) können bei Bedarf hinzugefügt werden.* |
| 28 | + |
| 29 | +### Wichtige Parameter erklärt |
| 30 | + |
| 31 | +* `--body-regex '(?s)"msg":".*?".*"status":"-.*?".*"summary":\{.*\}`' |
| 32 | + * Dieser reguläre Ausdruck ist das Herzstück. Er ist so gestaltet, dass er nur zutrifft, wenn ein negativer Status (z.B. `"status":"-1"`) im JSON vorkommt. |
| 33 | + * `(?s)`: Sorgt dafür, dass der Punkt `.` auch Zeilenumbrüche umfasst. |
| 34 | + * `\{` und `\}`: Die geschweiften Klammern des `summary`-Objekts müssen mit einem Backslash maskiert werden, da sie in Regex eine Sonderbedeutung haben. |
| 35 | + * Der Ausdruck ist so geschrieben, dass er die komplette relevante Zeile findet. |
| 36 | + |
| 37 | +* `--body-regex-invert` |
| 38 | + * Dieser Schalter ist entscheidend. Er kehrt die Logik um und sorgt dafür, dass der Check nur dann fehlschlägt, wenn der Regex eine Übereinstimmung findet. |
| 39 | + |
| 40 | +## Anwendungsbeispiel |
| 41 | + |
| 42 | +Angenommen, eine API unter `https://sub.dom.tld/api/tool/spoolMonitor` wird überwacht. |
| 43 | + |
| 44 | +**Antwort im OK-Fall:** |
| 45 | +```json |
| 46 | +{"msg":"ok","status":"1","summary":{"spoolsMissing":0,"spoolsTotal":42}} |
| 47 | +``` |
| 48 | +Der Regex (`..."status":"-.*?"...`) findet keine Übereinstimmung. Wegen `--body-regex-invert` ist der Service-Status **OK**. |
| 49 | + |
| 50 | +**Antwort im Fehlerfall:** |
| 51 | +```json |
| 52 | +{"msg":"spool error","status":"-1","summary":{"spoolsMissing":2,"spoolsTotal":42}} |
| 53 | +``` |
| 54 | +Der Regex findet eine Übereinstimmung. Der Service-Status wird **WARNING**. |
| 55 | + |
| 56 | +**Resultierender Service-Output in Checkmk:** |
| 57 | +``` |
| 58 | +{"msg":"spool error","status":"-1","summary":{"spoolsMissing":2,"spoolsTotal":42}} (!) |
| 59 | +``` |
| 60 | + |
| 61 | +Diese Konfiguration ermöglicht eine sehr präzise und informative Überwachung von API-Endpunkten. |
0 commit comments