Maison >développement back-end >Golang >Comment puis-je analyser efficacement les données du format d'exposition Prometheus à l'aide du package « expfmt » de Go ?
Analyse des données Prometheus : tirer parti du package expfmt pour une analyse sans effort
Le format d'exposition Prometheus (syntaxe EBNF) présente un défi lors de l'analyse des métriques obtenues via HTTP GET. Cet article vous guidera tout au long du processus d'analyse des données Prometheus à l'aide du package expfmt, développé par les auteurs de Prometheus eux-mêmes.
Exploiter expfmt
Le package expfmt fournit un moyen fiable et efficace de décoder et d'encoder le format d'exposition de Prometheus. Son utilisation simplifie considérablement le processus d'analyse :
package main import ( expfmt "github.com/prometheus/common/expfmt" dto "github.com/prometheus/client_model/go" "fmt" "os" ) func main() { // Parse the Prometheus data from a file mf, err := parseMF("path/to/file.txt") if err != nil { fmt.Println(err) return } // Iterate over the metric families for k, v := range mf { fmt.Printf("KEY: %s\n", k) fmt.Printf("VAL: %+v\n", v) } } func parseMF(path string) (map[string]*dto.MetricFamily, error) { reader, err := os.Open(path) if err != nil { return nil, err } defer reader.Close() // Use the expfmt parser to parse the data var parser expfmt.TextParser mf, err := parser.TextToMetricFamilies(reader) if err != nil { return nil, err } return mf, nil }
Exemple d'utilisation
# 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
Exemple de sortie
KEY: net_conntrack_dialer_conn_attempted_total VAL: name: "net_conntrack_dialer_conn_attempted_total" type: UNTYPED metric:<label:<name: "dialer_name" value: "federate" > label:<name: "instance" value: "localhost:9090" > label:<name: "job" value: "prometheus" > untyped:<value: 1 > timestamp_ms: 1608520832877 >
Adressage du formatage Problèmes
Il est important de s'assurer que les données Prometheus sont correctement formatées. Si vous rencontrez une erreur de protocole, vérifiez que chaque ligne se termine par un caractère de saut de ligne (n), comme l'exige le protocole texte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!