expfmt を使用して Prometheus データを効果的に解析する
Prometheus データの解析は難しい作業になる場合がありますが、適切なツールを使用すると簡単に行うことができます。この記事では、expfmt パッケージを使用して Prometheus データを効果的に解析する方法を検討します。
Prometheus は、メトリクスを表すための Exposition Format (EBNF 構文) を提供します。この形式をデコードおよびエンコードするために、Prometheus の作成者は expfmt パッケージを作成しました。これは、Go で Prometheus データを操作する便利な方法を提供します。
サンプル入力
みましょう次の Prometheus データを次のように考えてください。例:
# 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
expfmt の使用
expfmt を使用して上記のデータを解析するには、次の手順に従います。
import "github.com/prometheus/common/expfmt"
func parseMF(path string) (map[string]*dto.MetricFamily, error) { reader, err := os.Open(path) if err != nil { return nil, err } var parser expfmt.TextParser mf, err := parser.TextToMetricFamilies(reader) if err != nil { return nil, err } return mf, nil }
mf, err := parseMF("/path/to/prometheus_data") if err != nil { log.Fatal(err) }
for k, v := range mf { fmt.Println("KEY:", k) fmt.Println("VAL:", v) }
サンプル出力
上記のコードを実行すると、次の出力が生成されます。
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 >
結論
expfmt パッケージを使用すると、Prometheus データを効果的に解析し、各情報を制御してデータをフォーマットすることができます。あなたのニーズに合った方法で。したがって、次回 Go で Prometheus データを操作する必要がある場合は、開発タスクを楽にするために expfmt を使用してください。
以上がGo で expfmt パッケージを使用して Prometheus データを効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。