Check Plugin Jitsi Meet

Hallo,
ich suche was für Jitsi Meet.

Ein Plugin habe ich schon gefunden:

#!/bin/sh
echo ‘<<>>’
JSON=$(curl -s http://127.0.0.1:8080/colibri/stats)
JCODE=$?
VERSION=$(curl -s http://127.0.0.1:8080/about/version)
JVERSION=$?
service=jitsi-meet
scode=3
sname=Unknown
metrics="-"
detail=“No more output”
if [ $JCODE -eq 0 ] && [ $JVERSION -eq 0 ]
then
m_bitsdown=$(echo “$JSON” | jq -r .bit_rate_download)
m_bitsup=$(echo “$JSON” | jq -r .bit_rate_upload)
m_confer=$(echo “$JSON” | jq -r .conferences)
m_partici=$(echo “$JSON” | jq -r .participants)
m_threads=$(echo “$JSON” | jq -r .threads)
m_videostr=$(echo “$JSON” | jq -r .videostreams)
scode=0
sname=OK
metrics=“bitrate_download=$m_bitsdown|bitrate_upload=$m_bitsup|conference_count=$m_confer|participant_count=$m_partici|thread_count=$m_threads|videostream_count=$m_videostr”
detail=“Conferences: $m_confer; Participants: $m_partici;”
else
scode=2
sname=Critical
detail=“Connection to REST API failed”
fi
echo “$scode $service $metrics $sname: $detail”

Ausgabe:

sysadmin@zjitsi01v:/usr/lib/check_mk_agent/plugins$ ./jitsi
<<>>
0 jitsi-meet bitrate_download=0|bitrate_upload=0|conference_count=0|participant_count=0|thread_count=45|videostream_count=null OK: Conferences: 0; Participants: 0;

Aber ich scheitere am Check deklarieren:

from .agent_based_api.v1 import *
import pprint

def discover_jitsi_meet(section):
for sector, used, slots in section:
yield Service(item=sector)

def check_linux_jitsi(item, section):
for sector, used, slots in section:
if sector == item:
used = int(used) # convert string to int
slots = int(slots) # convert string to int
if used == slots:
s = State.CRIT
elif slots - used <= 10:
s = State.WARN
else:
s = State.OK
yield Result(
state = s,
summary = f"Used {used} out of {slots} slots")
return

register.check_plugin(
name = “jitsi”,
service_name = “jitsi-meet %s”,
discovery_function = discover_jitsi_meet,
check_function = check_linux_jitsi,
)

Die Ausgabe ist leer. Keine neuen Check’s gefunden …
Was mache ich falsch. Hat jemand schon was Fertiges?

vg
Mario

Das was das Script ausgibt ist ja ein local Check da wird kein extra Check auf CMK Seite gebraucht.
Oder sollte dein Check Plugin für eine andere Ausgabe sein?
Wenn ja wäre es gut diese zu sehen und auch den Code in einen vorformatierten Rahmen zu packen so wie gerade ist das echt übel zu lesen :wink:

Was an deinem Plugin erstmal nicht funktionieren wird ist die Behandlung der Daten. Du gehst einfach davon aus, dass in der “Section” einfach drei Werte stehen, das glaube ich eher nicht.
Genau aus dem Grund kann man nur was sagen wenn auch der Output vom Plugin vorhanden ist.

Hallo Andreas,

Danke erstmal für die schnelle Reaktion.

Du merkst ja, dass ich mich noch nicht so richtig mit den Check-Plugin-programmieren auskenne.

Ich habe versucht, was aus der Docu abzubilden. Na das ging ja logisch in die Hose, da die Daten ja in allen möglichen Formaten ausgegeben werden können.

Also das Agenten-Plugin auf dem Jitsi-Server erzeugt folgende Ausgabe:

1. Zeile.....
<<< Jitsi >>>

2. Zeile... 
0 jitsi-meet bitrate_download=0|bitrate_upload=0|conference_count=0|participant_count=0|thread_count=45|videostream_count=null OK: Conferences: 0; Participants: 0;

1._und 2. Zeile habe ich jetzt mal zur Erläuterung dazu gefügt.
Die 2. Zeile ist ohne Umbruch, also alles auf einer Zeile.
Also letztendlich nur zwei Zeilen.

Ich habe das Plugin auch nur gefunden/kopiert. Keine Ahnung warum die Struktur so gewählt ist.
Man könnte die Ausgabe evt. auch anpassen.

Ausgabe evt. zeilenweise so: (nur Metrik)

<<< Jitsi >>> 
bitrate_download=0
bitrate_upload=0
conference_count=0
participant_count=0
thread_count=45
videostream_count=0

Wie würde der Teil auf dem Checkmk Server dann aussehen:?
local/lib/check_mk/base/plugins/agent_based/jitsi.py
Check-Plugin?

vg
Mario

Da vermurkst leider die Forums-Software die Tags. Bitte generell Code als “preformatted text” formatieren:
discourse-preformatted-text

Gerne mal die URL nennen, falls öffentlich :slight_smile:

Hallo Martin,

Danke für den Hinweis mit der Formatierung.

Die Url ist

im Playbook “play-jitsi-install.yml”
ab Zeile 564

vg
Mario

Danke für den Link! Das ist ein local check, gehört also als ausführbare Datei (oder symlink wie im Playbook vorgeschlagen) auf dem Client unter /usr/lib/check_mk_agent/local/. Ausgabe des Checks selbst ist dann eine einzelne Zeile pro Service, Details siehe Local checks.

Diese Ausgabe wird dann vom Agent im Abschnitt <<<local>>> mit ausgeliefert und sollte in der Service Discovery auftauchen.

Mir ist grad nicht klar, wo die von dir zitierte Ausgabe <<< Jitsi >>> herkommen soll.

Du kannst den local check auch manuell ausführen und schauen ob/was er zurückliefert. Oder sogar erstmal nur die curl-Aufrufe manuell testen. Evtl muss der Port angepasst und/oder die interne Statistik-API in JiCoFo überhaupt erst aktiviert werden:

1 Like

Bin jetzt total verunsichert.

Laut Handbuch heißt das doch CHECK-Plugin (Auf den Client z.B. Jitsi Server)
Der funktioniert ja und liefert:

<<< Jitsi >>>
0 jitsi-meet bitrate_download=0|bitrate_upload=0|conference_count=0|participant_count=0|thread_count=45|videostream_count=null OK: Conferences: 0; Participants: 0;

Der Name “Jitsi” war meine Idee.

Aber ich benötige doch noch die CHECK-Funktion. (auf den Checkmk-Server)
### 2.8. Die Check-Funktion schreiben
Somit können wir nun zur eigentlichen Check-Funktion kommen, welche anhand aktueller Agentenausgaben endlich entscheidet, welchen Zustand ein Service annehmen soll. Da unser Check keine Parameter hat und es auch immer nur einen pro Host gibt, wird unsere Funktion ebenfalls mit dem einzigen Argument section aufgerufen…

Oder benötige ich die nicht, wenn ich …

<<< local >>>
0 jitsi-meet bitrate_download=0|bitrate_upload=0|conference_count=0|participant_count=0|thread_count=45|videostream_count=null OK: Conferences: 0; Participants: 0;

als Ausgabe bekomme?
Also kein Status OK, KRIT … nur Werte 0, 1, 500, 456 …
Ich teste es nachher mal aus.
Sollte es so einfach sein :wink:

vg
Mario

Ja, ein local check ist so simpel, Details wie gesagt in Lokale Checks

Mit dem Nachteil, dass zB die Limits fix auf Client-Seite im Script stecken statt serverseitig regelbasiert angepasst werden zu können.

Was du da zur CHECK-Funktion zitierst bezieht sich auf vollwertige “native” Check-Plugins statt local checks.

Und ja, der Begriff “plugin” ist in Checkmk etwas überladen und wird an vielen Stellen mit teils abweichender Bedeutung verwendet. Der Zusammenhang ist wichtig :wink:

1 Like

Die erste Ziffer steht im local check für den Status. 0=OK, 1=WARN, 2=CRIT.

Ich bin begeistert :wink:
So einfach ist Checkmk

vielen Dank für die Hilfe.

vg
Mario