5

我正在尝试使用 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
  • 如果我使用以下方式连接到我的 pod:

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

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

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

感谢您提供的任何帮助!

4

3 回答 3

2

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 将自动发现您想要的 pod 并开始从您的应用程序中抓取指标。

希望有帮助。您可以在此处关注博客文章以获取更多详细信息。

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

于 2017-09-04T07:50:18.897 回答
0

你能分享你用来抓取指标的普罗米修斯配置吗?配置将控制从哪些来源中抓取指标。以下是一些您可以参考的链接:https : //groups.google.com/forum/#!searchin/prometheus-users/Application $20metrics$20monitoring$20of$20Kubernetes$20Pods%7Csort:relevance/prometheus-users /uNPl4nJX9yk/cSKEBqJlBwAJ

于 2017-08-26T21:35:44.980 回答
0

你需要两件事:

  • Prometheus Operator 的 ServiceMonitor,它指定将抓取哪些服务以获取指标
  • 与 ServiceMonitor 匹配并指向您的 pod 的服务

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

于 2017-08-27T08:30:44.863 回答