Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menghuraikan Data Format Eksposisi Prometheus dengan Cekap dalam Go?

Bagaimanakah Saya Boleh Menghuraikan Data Format Eksposisi Prometheus dengan Cekap dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-03 21:10:15535semak imbas

How Can I Efficiently Parse Prometheus Exposition Format Data in Go?

Menghuraikan Data Prometheus

Untuk menghuraikan metrik yang diperoleh melalui HTTP GET seperti yang dilihat dalam format eksposisi Prometheus yang diberikan, terdapat dua pendekatan yang perlu dipertimbangkan:

Menggunakan Pakej expfmt

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)
    }
}

Menggunakan Pakej ebnf

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.

Nota Pemformatan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn