如何使用 Prometheus 从 Kubernetes 中自动抓取所有 Docker 个实例?

How to automatically scrape all Docker instances from Kubernetes with Prometheus?

我已经在 Google Container Engine 中成功安装了 Prometheus,并且设置了这些目标:

现在我想从这个 Kubernetes 集群中的每个 Docker 容器中抓取 Nginx 统计信息(这似乎是一个明智的做法)。

但是我怎样才能让 Prometheus 自动从所有 Docker 容器中的所有 Nginx 实例 运行 中提取指标?

根据我目前的研究,答案涉及 kubernetes_sd_config,但我根本找不到足够的文档来说明如何将各个部分组合在一起。

谢谢!

编辑:这与公开 Nginx 统计信息无关。这只是关于抓取所有 Docker 容器公开的 any 统计信息。

你说得对,你需要使用 kubernetes_sd_config 指令。在继续之前,我只想说你应该问的是 "Automatically scape all pods from Kubernetes"。这是因为 Pod 被认为是 Kubernetes 中最小的规模单位。不管你想做什么都很清楚。

因此 kubernetes_sd_config 可用于发现所有具有给定标签的 pods,如下所示:

- 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' 且其值由正则表达式,在下面的行中给出(在本例中,匹配 'python-app')。

希望对您有所帮助。您可以关注博客 post here for more detail. Also for more information about kubernetes_sd_config check out docs here.

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