Local Check häufiger ausführen und cachen?

Hallo zusammen, gibt es bei der Raw-Edition die Möglichkeit, einen local check (auf dem Target) häufiger auszuführen?

Ich weiß, dass nur der CMC häufiger als minütlich checkt/abruft, aber vielleicht gibt es eine Möglichkeit, den Check lokal auszuführen und die Ergebnisse zu cachen – und dann minütlich abzurufen.

Selbst wenn du den Check lokal öfters ausführst und das Ergebnis zwischenspeicherst wirst ein Problem haben aus den dann vorhandenen einzelnen Ergebnissen ein Gesamtergebnis zu erzeugen. Dies wären ja dann mehrere Lokal Checks mit gleichem Namen.
Einen Agenten direkt öfters wie einmal pro Minute abzufragen halte ich für keine so gute Idee.
Es kommt halt darauf an was und warum der Lokal Check öfters ausgeführt werden soll / muss.

Wenn man unbedingt muss lässt sich das auch mit der RAW Edition machen.
Die Option hier ist “interval_length”. Man sollte sich aber genau durchlesen was eine Änderung für Abhängigkeiten hat und ob man das will.

Muss nicht unbedingt sein. Es geht um gleichzeitige Anrufe in einer 3CX-Anlage. Viele Telefonate sind ja auch kürzer als 60 Sekunden und ich hätte hier ausnahmsweise gerne mehr Daten.

Ich schaue mir mal die Option “interval_length” an, danke! :slight_smile:

Wie gesagt die Option im Nagios Core ist “gefährlich” :smiley:

Eine Möglichkeit wäre die Verwendung von Spoolfiles: Du schreibst kontinuierlich immer, wenn etwas interessantes passiert ist, in eine Spooldatei. Wenn dann der Agent aufgerufen wird, liefert er den letzten Stand der Spooldatei mit:

4 Likes

Das klingt jedoch eher nach einem anderen Einsatzzweck – ich würde ja sekündlich (oder alle 10 Sekunden) in die Spool-Datei schreiben…

Kannst du das etwas ausführen? Soweit ich das richtig verstanden habe, muss man dann ein paar weitere Parameter anpassen, damit nicht alle Checks sekündlich ausgeführt werden und die Instanz überladen ist. (Noch dazu habe ich den Parameter bisher nicht gefunden…)

Hallo,
als Ergänzung zum Vorschlag von @mschlenker: Wenn es bei der Abfrage um einen Service geht, dann könntest du deine Detailergebnisse im Sekundenintervall ins Servicedetail schreiben. 1x pro Minute wird der Service im Monitoring aktualisiert und zeigt dir im Detail an, was in der letzten Minute passiert ist.

Karl

Die Option im Nagios Core definiert wie lange das Basis Interval des Systems dauert.
Default hier 60 Sekunden.
Wenn man nun diesen Basis Wert auf 10 Sekunden setzt dann muss im Monitoring zum Beispiel der Check Interval auf 6 Minuten gesetzt zu werden um einen wirklichen Check Interval von 1er Minute zu erhalten. Eine Einstellung von 1er Minute im CMK erzeugt einen Check alle 10 Sekunden.
Das macht richtig Spaß sich da in alle Regeln rein zu denken welche Intervalle definieren.

Sorry, ich muss nun nochmal doof fragen, weil es aus der Doku nicht ganz klar hervor geht: Ist nicht eines der Features des CMC, dass auch sekündliche Checks möglich sind? Davon lese ich hier nichts…

Ich habe nur diesen Beitrag hier und das verlinkte ‘Werk’ gefunden: Real time checks

Real time checks sind wieder was anderes. Hier sendet der Agent regelmäßig selbst Daten an den Monitoringserver. Dieser fragt wie bisher auch nur minütlich ab.

1 Like

Verstehe… Das wäre in diesem Fall ja nicht notwendig, ich bräuchte nur die sekündlichen Werte – es reicht aber, wenn die minütlich (oder sogar noch seltener) zu Checkmk übertragen werden. Ist das mit dem CMC möglich, oder habe ich das missverstanden?

Ich würde hier mal sagen nein - CMK wertet immer nur die aktuell übertragenen Werte/Status aus und gib dazu auch die Performance Daten aus.

Was ich mir vorstellen kann wäre folgendes Konstrukt.

  • auf dem überwachten System läuft ein Script alle X Sekunden und produziert definierten Output und schreibt diesen in eine Spooldatei
  • pro Abfrage des CMK Agent wird diese Spooldatei mit übertragen und abgeräumt
  • im CMK gibt es ein Plugin welches alle Output Zeilen welche übertragen wurden auswertet und einen kumulativen Status bildet - im Ouptut kann dann hier ja gern angezeigt werden wenn von den X Zeilen nur eine einen Fehler enthielt zum Beispiel

Ist halt etwas aufwendiger.

1 Like

Ich wärme mal den alten Thread mit der Frage auf, ob das Telefonsystem dafür nicht einen Anrufzähler hat? Dann könnte alle 60 Sekunden der Zählstand ausgelesen werden und über die Differenz zum letzten Wert die durchschnittlichen Telefonate pro Sekunde abgebildet werden.

In der Check-API gibt es dafür die Funktion get_rate(). Das ist dann aber schon kein Local Check mehr sondern ein “ordentliches” Agentenplugin.