回答问题

我正在尝试使用 prometheus 客户端库在 golang 中捕获一些自定义应用程序指标,以显示在 Prometheus 中。

我有以下工作:

  • 我有一个 go 应用程序,它在 localhost:8080/metrics 上公开指标,如本文所述:

https://godoc.org/github.com/prometheus/client_golang/prometheus

  • 我有一个 kubernates minikube 正在运行,它使用本文中的运算符运行 Prometheus、Grafana 和 AlertManager:

https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus

  • 我为我的 go 应用程序创建了一个 docker 映像,当我运行它并转到 localhost:8080/metrics 时,我可以看到 prometheus 指标显示在浏览器中。

  • 我使用以下 pod.yaml 将我的 docker 镜像部署到 k8s 中的 pod

api版本:v1

种类:豆荚

元数据:

名称:我的应用程序荚

标签:

区域:产品

版本:v1

注释:

prometheus.io/scrape:“真”

prometheus.io/端口:“8080”

规格:

容器:

  • 名称:我的容器

图片:名称/我的应用程序:最新

imagePullPolicy: IfNotPresent

端口:

  • 容器端口:8080
  • 如果我使用以下方式连接到我的 pod:

kubectl exec -it my-app-pod -- /bin/bash

然后在“localhost:8080/metrics”上执行 wget,我可以看到我的指标

到目前为止一切顺利,这是我碰壁的地方。我可以让多个 pod 运行同一个图像。我想将所有图像作为目标公开给普罗米修斯。如何配置我的 pod 以便它们显示在 prometheus 中,以便我可以报告我的自定义指标?

感谢您提供的任何帮助!

Answers

你需要两件事:

  • Prometheus Operator 的 ServiceMonitor,它指定将抓取哪些服务以获取指标

  • 与 ServiceMonitor 匹配并指向您的 pod 的服务

此处的文档中有一个示例:https://coreos.com/operators/prometheus/docs/latest/user-guides/running-exporters.html