Low-Level-Entdeckung in ZABBIX: Artikelprototypen


[*]

http://www.zabbix.com/

Es ist an der Zeit, spezifische Leistungsmetriken zu erhalten, und Artikelprototypen helfen uns dabei.… Im letzten Artikel Low-Level-Erkennung in ZABBIX: Bisher haben wir LLD-Regeln nur durch die Ausgabe einer Liste von Datenträgern des Zabbix-Agenten erreicht, aber darauf möchte ich natürlich nicht näher eingehen.


Wenn Sie sich für das Thema ZABBIX interessieren, empfehlen wir Ihnen, den Hauptartikel – ZABBIX-Überwachungssystem – zu lesen. Dort finden Sie zusätzliche Informationen.


Artikel Prototypen

Für diejenigen, die „in der letzten Lektion nicht anwesend sind“, ist eine kurze Einführung unmittelbar unten.

Einführung

Im letzten Artikel (Low-Level-Erkennung in ZABBIX: LLD-Regeln) haben wir sichergestellt, dass der Zabbix-Agent eine Reihe von verfolgten Objekten im JSON-Format zurückgibt. In meinem Beispiel ist dies nur eine Liste von Laufwerksnamen. Die Liste selbst hat keinen Wert. Nur zu Überwachungszwecken Leistungsmetriken für jedes dieser Laufwerke.

Und wie Sie diese Metriken erhalten, lesen Sie unten.

Leistungsmetriken

Ich möchte Sie daran erinnern, dass ich die Daten mit dem Dienstprogramm abrufe iostat::

Säulen rrqm / s, wrqm / s, r / s usw.… es sind nur Metriken (die Sie noch richtig lesen und entschlüsseln müssen, aber das ist eine andere Geschichte).

Skript

Die Aufgabe ist etwas klarer – Sie müssen ein Skript schreiben, das die folgenden Parameter als Argument verwendet::

  • Der Name der Datei mit der Ausgabe des iostat-Programms (zum Beispiel iostat -d -x> /tmp/iostat.output);
  • Datenträgername (zum Beispiel sdawie im Screenshot oben);
  • Der Name der Datenspalte, in der sich der Wert der erforderlichen Metrik befindet (als Beispiel sei die letzte Spalte %nützlich).

Hier ist eine der Variationen (Skript iostat.data.sh):

Die Verwendung des Skripts ist sehr einfach:

Es gibt einen numerischen Parameter am Schnittpunkt der Spalte zurück (%nützlich) und Zeilen mit dem Datenträgernamen (sda). Jetzt ist die Sache klein, Sie müssen nur noch einen benutzerdefinierten Parameter im Zabbix-Agenten hinzufügen:

Der erste Positionsparameter für das Skript ist der Name der Ausgabedatei iostatund Parameter $ 1 und $ 2 Der Laufwerksname und der Name der Ausgabespalte werden übergeben iostat jeweils wie im obigen Beispiel.

Daten aktualisieren

Dienstprogrammdaten iostat Ich gebe in eine temporäre Datei aus /tmp/iostat.data.outputaber wie Sie sich vorstellen können, werden sie veraltet sein. Wichtig Aktualisieren Sie sie rechtzeitigum aktuelle Leistungsmetriken zu erhalten.

Dies kann auf zwei Arten erfolgen. Die erste besteht darin, die Aktualisierung der Datei im Skript zu implementieren. Genau das habe ich getan.

Hinweis: In Codezeilen von 11 bis 22 wird die aktuelle Zeit mit der Erstellungszeit der Datei verglichen. Wenn die Differenz> 60 Sekunden beträgt, werden neue iostat-Daten in die Datei hochgeladen.

Der zweite Weg ist interessanter – die Datenaktualisierung über ein anderes Skript zu organisieren, das über den UserParameter von einem normalen Datenelement in der Vorlage aufgerufen wird. Genau so wird es beispielsweise in der Überwachungsvorlage Iostat-Disk-Utilization-Template implementiert , das schon lange im Internet herumläuft (ich habe übrigens einen separaten Artikel über seine Installation – Überwachung von ZABBIX-Festplatten – aber es ist ein wenig veraltet).

Hinweis: Vielleicht fragst du warum das Rad neu erfinden eine Vorlage neu schreiben, wenn eine schon lange erfunden und erfolgreich verwendet wurde? Eine ziemlich faire Frage. Tatsache ist, dass die Iostat-Disk-Utilization-Vorlage ursprünglich für gemittelte Ergebnisse entwickelt wurde und Sie die Anzahl der Sekunden, für die die Daten gemittelt werden, flexibel angeben können. Ich brauchte keine Mittelung, da iostat die Daten sowieso mittelt. Und die Durchschnittswerte sind die schlechtesten, die eine Person, die mit der Fehlerbehebung beschäftigt ist, erreichen kann. Es ist viel interessanter und informativer zu analysieren, wie der Server Spitzenwerte in Bezug auf die Auslastung berechnet. Der zweite Punkt – Ich war sehr verwirrt über den Mechanismus zum Aktualisieren von Leistungsdaten. Es ist einfacher für mich, alles in einem Skript zu erledigen, da es in Bezug auf die Leistung höchstwahrscheinlich nicht schlechter sein wird (wenn Sie eine Shell verwenden, verlieren Sie bereits an Leistung).

Die Option ist vor allem deshalb interessant, weil Sie das Hauptskript nicht überlaufen lassen können, aber mehrere Fallstricke in sich verbergen:

  • Ein zusätzlicher UserParameter wird mit einem separaten Skript mit allen Konsequenzen angezeigt (schwieriger zu debuggen, zu warten, sich mit der Arbeit zu befassen).
  • Es gibt keine feste Garantie dafür, dass die iostat-Daten immer die aktuellsten sind.
  • Wir müssen ein zusätzliches Datenelement nachverfolgen, um die aktuellsten Leistungsstatistiken zu erhalten.

All diese Punkte haben mich für die erste Option geneigt, obwohl sie den Zeitpunkt der Dateierstellung vergleicht, um jeden Wert zu erhalten (und es gibt Dutzende davon).

Prototyp entwickeln

Jeder Erkennungsregel auf niedriger Ebene werden ein oder mehrere Elementprototypen hinzugefügt. Um besser zu verstehen – Jedes Element des Datenprototyps entspricht einer Ausgabespalte iostat.

Schauen wir uns ein Beispiel für Prototyping an. Sie müssen dann zu Ihrer Vorlage gehen Erkennungsregeln – Artikelprototypen – Artikelprototyp erstellen.

Achten Sie auf das Makro {#BLKDEV} – Es wird automatisch durch den Laufwerksnamen ersetzt. Ich möchte Sie daran erinnern, dass ich im vorherigen Artikel die Namen der Laufwerke im JSON-Format herausgezogen habe. Das heißt, wenn wir drei Festplatten haben, erhalten wir nach dem Erstellen dieses Prototyps des Elements drei Metriken %nützlich eine für jede Festplatte. Gesamt iostat gibt 13 Metriken aus (Ihre Vorlage enthält 13 Artikelprototypen).

Nachdem Sie den ersten Datenprototyp erstellt haben, können Sie zu gehen Überwachung – Neueste Daten und wählen Sie den gewünschten Host aus, der überwacht werden soll, wenn für jede Festplatte eine Metrik angezeigt wird.

Kommentare bereitgestellt von HyperComments

Leave a Reply

Your email address will not be published. Required fields are marked *