16

我正在使用 Prometheus 来监控我的 Kubernetes 集群。我已经在一个单独的命名空间中设置了 Prometheus。我有多个命名空间,并且多个 pod 正在运行。每个 pod 容器在此端点公开一个自定义指标,:80/data/metrics. 我正在获取 Pods CPU、内存指标等,但是如何配置 Prometheus 以从:80/data/metrics每个可用 pod 中提取数据?我已经使用本教程设置了 Prometheus,链接

4

2 回答 2

25

您必须将这三个注释添加到您的 pod:

prometheus.io/scrape: 'true'
prometheus.io/path: '/data/metrics'
prometheus.io/port: '80'

它将如何运作?

看看你用来配置prometheus的kubernetes-pods工作,config-map.yaml

- job_name: 'kubernetes-pods'

        kubernetes_sd_configs:
        - role: pod

        relabel_configs:
        - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
          action: keep
          regex: true
        - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
          action: replace
          target_label: __metrics_path__
          regex: (.+)
        - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
          action: replace
          regex: ([^:]+)(?::\d+)?;(\d+)
          replacement: $1:$2
          target_label: __address__
        - action: labelmap
          regex: __meta_kubernetes_pod_label_(.+)
        - source_labels: [__meta_kubernetes_namespace]
          action: replace
          target_label: kubernetes_namespace
        - source_labels: [__meta_kubernetes_pod_name]
          action: replace
          target_label: kubernetes_pod_name

检查这三个 relabel 配置

- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
    action: keep
    regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
    action: replace
    target_label: __metrics_path__
    regex: (.+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
    action: replace
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: $1:$2
    target_label: __address__

在这里,__metrics_path__以及port是否从该 pod 中废弃指标正在从 pod 注释中读取。

有关如何配置 Prometheus 的更多详细信息,请参见此处

于 2018-11-19T03:42:30.053 回答
8

问题中提供的链接是指用于 prometheus 配置的此 ConfigMap 。如果使用了 ConfigMap,那么 prometheus 已经配置为抓取 pod

要使该配置(请参阅relabel_configs参考资料)让 prometheus 抓取 pod 暴露的自定义指标:80/data/metrics,请将这些注释添加到 pod 部署配置中:

metadata:
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/path: '/data/metrics'
    prometheus.io/port: '80'

请参阅prometheus 文档(向下滚动)中 Kubernetes 发现的配置选项https,了解与刮擦等相关的设置。

编辑:我在发布我的帖子后才看到 Emruz Hossain 的回答。他的答案目前缺少prometheus.io/scrape: 'true'注释并指定为注释的名称/值分隔符,这在 yaml 或 json 中无效=:

于 2018-11-19T04:22:03.693 回答