如何获取JSON格式的Prometheus Node Exporter指标

时间:2019-12-12 10:05:07

标签: go kubernetes prometheus prometheus-node-exporter

我在k8s上部署了Prometheus Node Exporter pod。效果很好。

但是当我尝试通过在自定义Go应用程序中调用Node Exporter指标API来获取系统指标时

curl -X GET "http://[my Host]:9100/metrics"

结果格式如下

# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 1.7636e-05
go_gc_duration_seconds{quantile="0.25"} 2.466e-05
go_gc_duration_seconds{quantile="0.5"} 5.7992e-05
go_gc_duration_seconds{quantile="0.75"} 9.1109e-05
go_gc_duration_seconds{quantile="1"} 0.004852894
go_gc_duration_seconds_sum 1.291217651
go_gc_duration_seconds_count 11338
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 8
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.12.5"} 1
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes 2.577128e+06
# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.
# TYPE go_memstats_alloc_bytes_total counter
go_memstats_alloc_bytes_total 2.0073577064e+10
.
.
.
something like this

那些长文本很难解析,我想获得JSON格式的结果以轻松解析它们。

https://github.com/prometheus/node_exporter/issues/1062

我检查了Prometheus Node Exporter GitHub问题,有人推荐了prom2json。 但这不是我想要的。因为我必须运行额外的进程才能执行prom2json以获得结果。我想通过简单地在代码中调用HTTP请求或某种Go本机包来获取Node Exporter的系统指标。

如何获取JSON格式的那些Node Exporter指标?

1 个答案:

答案 0 :(得分:1)

您已经提到prom2json,可以通过导入github.com/prometheus/prom2json将包拉到Go文件中。

sample executable in the repo具有您需要的所有构建基块。 First, open the URL,然后依次use the prom2json package to read the datastore the result

不过,您还应该看看expfmt.TextParser,因为这是摄取Prometheus格式指标的本机方法。