Prometheus 添加自定义指标

Posted

技术标签:

【中文标题】Prometheus 添加自定义指标【英文标题】:Prometheus add custom metrics 【发布时间】:2020-02-20 01:51:26 【问题描述】:

我们有一个 Prometheus 在我们的集群中运行,我们可以使用 grafana 来查看我们的集群/pods 指标,现在我想添加一些自定义指标,有没有办法做到这一点?如果是这样,我应该如何将代码连接到 Prometheus,我的意思是如果我使用 Prometheus API 编写 golang 程序,并将其作为 docker 部署到 k8s,现在程序是否知道与 Prometheus 连接? 例如该程序将数据暴露给 /metrics 端点,但我还应该做些什么来使舞会能够读取这些数据?

https://gist.github.com/sysdig-blog/3640f39a7bb1172f986d0e2080c64a75#file-prometheus-metrics-golang-go

【问题讨论】:

如果您将自定义指标添加到您的程序中,给它们起您可以识别的名称,然后像在该示例中所做的那样通过 http 处理程序公开它们,这就足够了。您的程序不会将数据推送到 Prometheus,它会从您的 http 指标端点抓取数据,如果您在那里发布指标,它们应该会在下次抓取您的应用程序时显示在 Prometheus 中。 @bserdar - 只是为了验证,所以我可以将程序按原样部署到 k8s 并且我可以通过 prom ui 查询它?谢谢! 如果您的 Prometheus 实例正在抓取 pod,是的。您只需查看应用的指标端点即可验证您是否正在发布指标。它是文本,你应该在那里看到你的指标。 @bserdar - 好的,我会将我的应用程序部署到 k8s 并检查它,谢谢! 为了让 prometheus 收集(报废)你的 pod,你可能想看看 k8sClusterRoles 在这里看到:supergiant.io/blog/… 【参考方案1】:

您可能希望 Prometheus 自动发现要从中抓取的目标,如果是这样,您应该在 Prometheus 中配置 K8s service discovery 以从集群中发现 pod、节点和服务(也许您已经做过类似的事情,因为您已经在监控 k8s指标)。

要监控您的 Go 应用程序,您可以向您的 pod 或您的服务添加注释,以启用从该目标中抓取并定义指标可用的位置(路径、端口)。但是,这取决于您的抓取配置和重新标记。很好的例子可以找到here

如果您使用的是Prometheus Operator,则需要定义一个 servicemonitor 资源。

【讨论】:

以上是关于Prometheus 添加自定义指标的主要内容,如果未能解决你的问题,请参考以下文章

升级到 Spring Boot 2 后,如何向 prometheus 公开缓存指标?

prometheus-postgres-exporter 向 bitnami/kube-prometheus 添加指标

Actuator Prometheus 的自定义指标

使用 Prometheus Operator 监控自定义 kubernetes pod 指标

指标未显示在 /prometheus 端点上

将 prometheus 静态标签添加到公共交通指标