指定された Prometheus 表示形式で見られるように、HTTP GET 経由で取得されたメトリクスを解析するには、考慮すべき 2 つのアプローチがあります。
expfmt パッケージPrometheus チームのこのツールは、Prometheus Exposition Format データの解析とエンコードのために特別に設計されています。これは EBNF 構文に従い、データを抽出する便利な方法を提供します。
サンプル入力:
# 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
サンプル プログラム:
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) } }
ebnf パッケージは、Prometheus に続く EBNF 構文をサポートするため、データを解析するためのもう 1 つのオプションです。ただし、expfmt は、Prometheus データを解析するためのより具体的で効率的な選択肢です。
入力ファイルでは、Prometheus テキストに続く行末に改行文字 (n) が使用されていることを確認してください。プロトコル仕様。 r などの他の文字を使用すると、プロトコル エラーが発生します。
以上がGo で Prometheus Exposition 形式のデータを効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。