Prometheus-Daten mit expfmt analysieren
Das Extrahieren relevanter Daten aus Prometheus-Metriken kann mit dem expfmt-Paket erreicht werden, einem von entwickelten Open-Source-Toolkit Die Prometheus-Autoren. Dieses Paket wurde speziell für das Parsen und Codieren von Daten im Prometheus Exposition Format, einer EBNF-basierten Syntax, entwickelt.
Um Prometheus-Daten zu parsen, können Sie die unten beschriebenen Schritte ausführen:
go get github.com/prometheus/common/expfmt
import "github.com/prometheus/common/expfmt"
Verwenden Sie die expfmt.TextParser, um die Daten in das entsprechende Metrikfamilienformat zu analysieren:
parser := expfmt.TextParser{} metricFamilies, err := parser.TextToMetricFamilies(reader) if err != nil { log.Fatal(err) }
Nach der Analyse können Sie Sie können über ihren Namen auf jede Metrikfamilie zugreifen. Jede Metrikfamilie enthält eine Sammlung von Metriken, von denen jede über einen Satz Beschriftungen und eine Zeitreihe verfügt:
for name, metricFamily := range metricFamilies { fmt.Println("Metric Family:", name) for _, metric := range metricFamily.GetMetric() { fmt.Println("\tMetric:", metric) for _, label := range metric.GetLabel() { fmt.Println("\t\tLabel:", label) } for _, point := range metric.GetCounter().GetValue() { fmt.Println("\t\tPoint:", point) } } }
Beispielverwendung:
path := "path/to/prometheus.txt" mf, err := parseMF(path) if err != nil { log.Fatal(err) } for k, v := range mf { fmt.Println(k) fmt.Println(v) }
Diese Beispielverwendung analysiert die Prometheus-Daten aus der angegebenen Datei und druckt die Schlüssel-Wert-Paare für jede Metrikfamilie aus.
Hinweis: Stellen Sie sicher, dass Ihre Prometheus-Daten ist korrekt mit Zeilenvorschubzeichen (n) als Zeilenabschlusszeichen formatiert. Die Verwendung anderer Zeichen wie Wagenrücklauf (r) kann zu Fehlern führen.
Das obige ist der detaillierte Inhalt vonWie kann ich Prometheus-Daten mithilfe des expfmt-Pakets in Go analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!