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

Go の `expfmt` パッケージを使用して Prometheus Exposition 形式のデータを効率的に解析するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-14 21:18:11
オリジナル
593 人が閲覧しました

How Can I Efficiently Parse Prometheus Exposition Format Data Using Go's `expfmt` Package?

Prometheus データの解析: expfmt パッケージを活用した楽な解析

Prometheus の説明形式 (EBNF 構文) は、取得したメトリクスを解析するときに課題を提示しますHTTP GET 経由。この記事では、Prometheus の作成者自身が開発した expfmt パッケージを使用して Prometheus データを解析するプロセスについて説明します。

expfmt の活用

expfmt パッケージは、Prometheus のデコードおよびエンコードを行うための信頼性が高く効率的な方法を提供します。展示形式。これを使用すると、解析プロセスが大幅に簡素化されます。

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
}
ログイン後にコピー

使用例

# 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
ログイン後にコピー

サンプル出力

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 >
ログイン後にコピー

アドレスの書式設定問題

Prometheus データが正しくフォーマットされていることを確認することが重要です。プロトコル エラーが発生した場合は、テキスト プロトコルの要求に従って、各行が改行文字 (n) で終わっているかどうかを確認してください。

以上がGo の `expfmt` パッケージを使用して Prometheus Exposition 形式のデータを効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート