如何在使用Kubernetes中运行的所有pod中的golang客户端库捕获的Prometheus中显示自定义应用程序指标

时间:2017-08-25 22:06:15

标签: go kubernetes prometheus kubernetes-go-client prometheus-operator

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

我有以下工作:

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
  labels:
    zone: prod
    version: v1
  annotations:
   prometheus.io/scrape: 'true'
   prometheus.io/port: '8080'

spec:
   containers:
    - name: my-container
      image: name/my-app:latest
      imagePullPolicy: IfNotPresent
      ports:
      - containerPort: 8080
  • 如果我使用以下方式连接到我的广告连播:
  

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

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

到目前为止一直很好,这里是我撞墙的地方。我可以有多个pod运行相同的图像。我想将所有图像暴露给prometheus作为目标。如何配置我的pod以便它们显示在prometheus中,以便我可以报告我的自定义指标?

感谢您提供的任何帮助!

3 个答案:

答案 0 :(得分:1)

kubernetes_sd_config指令可用于发现具有给定标记的所有pod。你的Prometheus.yml配置文件应该是这样的: - job_name: 'some-app' kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_label_app] regex: python-app action: keep

源标签[__meta_kubernetes_pod_label_app]基本上使用Kubernetes api来查看标签为'app'并且其值由正则表达式捕获的pod,在下面的行中给出(在这种情况下,匹配'python -app')。

完成此操作后,Prometheus会自动发现您想要的广告连播,并开始从您的应用中抓取指标。

希望有所帮助。您可以关注博文here了解更多详情。

注意:值得一提的是,在撰写本文时,kubernetes_sd_config仍处于测试阶段。因此,在将来的版本中可能会发生对配置的更改。

答案 1 :(得分:0)

您可以分享您用来削减指标的prometheus配置吗?配置将控制从中获取指标的所有源。以下是您可以参考的一些链接:https://groups.google.com/forum/#!searchin/prometheus-users/Application $ 20metrics $ 20监控$ 20of $ 20Kubernetes $ 20Pods%7Csort:相关性/ prometheus-users / uNPl4nJX9yk / cSKEBqJlBwAJ

答案 2 :(得分:0)

你需要两件事:

  • Prometheus运营商的ServiceMonitor,用于指定将为指标抓取哪些服务
  • 与ServiceMonitor匹配并指向您的广告连播的服务

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