使用Prometheus监控自定义kubernetes pod指标

时间:2018-11-18 20:36:48

标签: kubernetes containers prometheus prometheus-node-exporter

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

2 个答案:

答案 0 :(得分:1)

您必须将这三个注释添加到您的广告连播中:

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

它将如何工作?

查看您用于配置Prometheus的kubernetes-pods的{​​{1}}作业,

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

正在从容器注释中读取- 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__,以及是否从该容器中删除指标。

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

答案 1 :(得分:0)

问题中提供的link指的是this ConfigMap的Prometheus配置。如果使用了ConfigMap,则prometheus已配置为scrape pods

对于该配置(请参见relabel_configs),以使Prometheus抓取Pod在:80/data/metrics处公开的自定义指标,请将这些注释添加到Pod部署配置中:

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

有关在https上抓取更多内容的设置,请参见Prometheus文档(向下滚动)中的configuration options for Kubernetes发现。

编辑: 我张贴我的消息后才看到Emruz Hossain的回答。他的答案目前缺少prometheus.io/scrape: 'true'批注,并指定了=而不是:作为批注的名称/值分隔符,这在yaml或json中无效。