Untuk menghuraikan metrik yang diperoleh melalui HTTP GET seperti yang dilihat dalam format eksposisi Prometheus yang diberikan, terdapat dua pendekatan yang perlu dipertimbangkan:
Pakej expfmt daripada pasukan Prometheus ialah direka khusus untuk menghurai dan mengekod data Format Eksposisi Prometheus. Ia mengikut sintaks EBNF dan menyediakan cara yang mudah untuk mengekstrak data.
Sampel Input:
# HELP net_conntrack_dialer_conn_attempted_total # TYPE net_conntrack_dialer_conn_attempted_total untyped net_conntrack_dialer_conn_attempted_total{dialer_name="federate",instance="localhost:9090",job="prometheus"} 1 1608520832877
Contoh Program:
package main import ( "fmt" "log" "os" dto "github.com/prometheus/client_model/go" "github.com/prometheus/common/expfmt" ) func main() { reader, err := os.Open("path/to/input.txt") if err != nil { log.Fatalln(err) } var parser expfmt.TextParser mf, err := parser.TextToMetricFamilies(reader) if err != nil { log.Fatalln(err) } for k, v := range mf { fmt.Println("KEY:", k) fmt.Println("VAL:", v) } }
Pakej ebnf ialah pilihan lain untuk menghuraikan data, kerana ia menyokong sintaks EBNF diikuti oleh Prometheus. Walau bagaimanapun, expfmt ialah pilihan yang lebih khusus dan cekap untuk menghuraikan data Prometheus.
Pastikan fail input menggunakan aksara suapan baris (n) untuk pengakhiran baris mengikut teks Prometheus spesifikasi protokol. Menggunakan aksara lain, seperti r, akan mengakibatkan ralat protokol.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Data Format Eksposisi Prometheus dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!