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

时间:2017-03-17 07:09:38

标签: json http go prometheus

我正在尝试使用client_golang

在GoLang中编写JSON导出器

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

基本上你需要做的是:

  1. 定义您自己的Exporter类型
  2. 实施接口prometheus.Collector,您可以从服务中轮询json数据并根据它构建指标
  3. 通过prometheus.MustRegister
  4. 注册您自己的Exporter到普罗米修斯
  5. 启动HTTP服务器并公开prometheus的指标端点以轮询指标