ホームページ >バックエンド開発 >Golang >Go で expfmt パッケージを使用して Prometheus データを解析するにはどうすればよいですか?

Go で expfmt パッケージを使用して Prometheus データを解析するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-29 22:20:10950ブラウズ

How Can I Parse Prometheus Data Using the expfmt Package in Go?

expfmt を使用した Prometheus データの解析

Prometheus メトリクスからの関連データの抽出は、によって開発されたオープンソース ツールキットである expfmt パッケージを使用して実現できます。プロメテウスの作者。このパッケージは、EBNF ベースの構文である Prometheus Exposition Format でデータを解析およびエンコードするために特別に設計されています。

Prometheus データを解析するには、以下の手順に従うことができます:

  1. expfmt をインストールするパッケージ:
go get github.com/prometheus/common/expfmt
  1. expfmt のインポート パッケージ:
import "github.com/prometheus/common/expfmt"
  1. Parseプロメテウスデータ:

expfmt.TextParser を使用して、データを対応するメトリック ファミリ形式に解析します:

parser := expfmt.TextParser{}
metricFamilies, err := parser.TextToMetricFamilies(reader)
if err != nil {
    log.Fatal(err)
}
  1. 解析されたデータにアクセスします:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。