expfmt を使用した Prometheus データの解析
Prometheus メトリクスからの関連データの抽出は、によって開発されたオープンソース ツールキットである expfmt パッケージを使用して実現できます。プロメテウスの作者。このパッケージは、EBNF ベースの構文である Prometheus Exposition Format でデータを解析およびエンコードするために特別に設計されています。
Prometheus データを解析するには、以下の手順に従うことができます:
go get github.com/prometheus/common/expfmt
import "github.com/prometheus/common/expfmt"
expfmt.TextParser を使用して、データを対応するメトリック ファミリ形式に解析します:
parser := expfmt.TextParser{} metricFamilies, err := parser.TextToMetricFamilies(reader) if err != nil { log.Fatal(err) }
1 回解析されると、その名前を使用して各メトリック ファミリにアクセスできます。各メトリクス ファミリにはメトリクスのコレクションが含まれており、それぞれに一連のラベルと時系列があります。
for name, metricFamily := range metricFamilies { fmt.Println("Metric Family:", name) for _, metric := range metricFamily.GetMetric() { fmt.Println("\tMetric:", metric) for _, label := range metric.GetLabel() { fmt.Println("\t\tLabel:", label) } for _, point := range metric.GetCounter().GetValue() { fmt.Println("\t\tPoint:", point) } } }
使用例:
path := "path/to/prometheus.txt" mf, err := parseMF(path) if err != nil { log.Fatal(err) } for k, v := range mf { fmt.Println(k) fmt.Println(v) }
このサンプル使用法は Prometheus データを解析します。指定されたファイルからデータを取得し、各メトリック ファミリのキーと値のペアを出力します。
注: Prometheus データがは、行末文字として改行 (n) 文字を使用して正しくフォーマットされます。キャリッジ リターン (r) などの他の文字を使用すると、エラーが発生する可能性があります。
以上がGo で expfmt パッケージを使用して Prometheus データを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。