【发布时间】:2017-10-09 12:55:00
【问题描述】:
我目前正在开发一个由 Prometheus 监控的用Go (golang) 编写的程序。
现在程序应该服务于两个端点/metrics 和/service。
当 Prometheus 在/metrics 上抓取时,它应该公开它自己的指标(例如发出的请求、请求延迟……),当在/service 上抓取时,它应该查询 API,从那里获取指标并将它们公开给 Prometheus .
对于我创建的第一部分,例如通过
的计数器requestCount := kitprometheus.NewCounterFrom(stdprometheus.CounterOpts{
Namespace: "SERVICE",
Subsystem: "service_metrics",
Name: "request_count",
Help: "Number of requests received.",
}, fieldKeys)
并通过以下方式提供服务:
http.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":8090", nil)
对于/service 部分,我查询API,提取值并通过Gauge.Set(value) 更新不同的仪表
- 如何在不同的端点上公开最后一个仪表而不 启动另一台服务器(不同的端口)?
- 我是否必须创建自己的收集器(我没有自定义指标,所以 不,对吧?)?
【问题讨论】:
-
是的,您应该为 /service 端点实现一个收集器(您的程序承担 API 导出器的角色)。首先,检查prometheus.io/docs/instrumenting/exporters 是否已有可用的。然后阅读prometheus.io/docs/instrumenting/writing_exporters。
-
谢谢@Peter,这就是我想知道的一切......尽管我希望在不编写额外代码的情况下有不同的可能性......:D
标签: go microservices prometheus exporter