Pour analyser les métriques obtenues via HTTP GET comme indiqué dans le format d'exposition Prometheus donné, il existe deux approches à considérer :
Le package expfmt de l'équipe Prometheus est spécifiquement conçu pour analyser et coder les données du format d'exposition Prometheus. Il suit la syntaxe EBNF et fournit un moyen pratique d'extraire les données.
Exemple d'entrée :
# 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 programme :
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) } }
Le package ebnf est une autre option pour analyser les données, car il prend en charge la syntaxe EBNF suivie par Prometheus. Cependant, expfmt est un choix plus spécifique et plus efficace pour analyser les données Prometheus.
Assurez-vous que le fichier d'entrée utilise des caractères de saut de ligne (n) pour que les fins de ligne suivent le texte Prometheus. spécifications du protocole. L'utilisation d'autres caractères, tels que r, entraînera une erreur de protocole.
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!