Menghuraikan Data Prometheus dengan expfmt
Mengekstrak data yang berkaitan daripada metrik Prometheus boleh dicapai menggunakan pakej expfmt, kit alat sumber terbuka yang dibangunkan oleh pengarang Prometheus. Pakej ini direka khusus untuk menghurai dan mengekod data dalam Format Eksposisi Prometheus, sintaks berasaskan EBNF.
Untuk menghuraikan data Prometheus, anda boleh mengikuti langkah yang digariskan di bawah:
go get github.com/prometheus/common/expfmt
import "github.com/prometheus/common/expfmt"
Gunakan expfmt.TextParser untuk menghuraikan data ke dalam format keluarga metrik yang sepadan:
parser := expfmt.TextParser{} metricFamilies, err := parser.TextToMetricFamilies(reader) if err != nil { log.Fatal(err) }
Setelah dihuraikan, anda boleh mengakses setiap keluarga metrik menggunakan namanya. Setiap keluarga metrik mengandungi koleksi metrik, setiap satunya mempunyai set label dan siri masa:
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) } } }
Contoh Penggunaan:
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) }
Penggunaan sampel ini menghuraikan data Prometheus daripada fail yang ditentukan dan mencetak pasangan nilai kunci untuk setiap keluarga metrik.
Nota: Pastikan anda Data Prometheus diformat dengan betul dengan aksara suapan baris (n) sebagai penamat baris. Menggunakan aksara lain seperti carriage return (r) boleh membawa kepada ralat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Data Prometheus Menggunakan Pakej expfmt dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!