如何使用client_golang在prometheus中提取指标

问题描述 投票:0回答:2

我正在尝试使用client_golang在GoLang中编写JSON导出器

我找不到任何有用的例子。我有一个服务ABC,通过HTTP生成JSON输出。我想使用client-golang将此度量标准导出到prometheus。

json http go prometheus
2个回答
1
投票

看看Go客户端的godoc,它非常详细,包含大量示例。 Collector接口的那个可能是最相关的:

https://godoc.org/github.com/prometheus/client_golang/prometheus#example-Collector

基本上,您将实现Collector接口,该接口包含两个方法:describecollect

describe只是通过给定的频道发送收集器可能的度量标准的描述。这包括他们的名字,可能的标签值和帮助字符串。

collect创建与describe描述匹配的实际指标,并用数据填充它们。因此,在您的情况下,它将从您的服务获取JSON,解组它,并将值写入相关指标。

在你的main函数中,你必须注册你的收集器,并启动HTTP服务器,如下所示:

prometheus.MustRegister(NewCustomCollector())
http.Handle("/metrics", promhttp.Handler())
log.Fatal(http.ListenAndServe(":8080", nil))

1
投票

你的意思是你想用golang为自己的服务编写一个导出器?在prometheus exporter page上列出的出口商都是很好的例子,其中许多是用golang编写的,你可以选择一个像redis exporter这样的简单例子来看看它是如何实现的。

基本上你需要做的是:

  1. 定义自己的Exporter类型
  2. 实现接口prometheus.Collector,您可以从服务中轮询json数据并基于它构建指标
  3. 通过Exporter将自己的prometheus.MustRegister注册到prometheus
  4. 启动HTTP服务器并公开prometheus的度量标准终结点以轮询度量标准
© www.soinside.com 2019 - 2024. All rights reserved.