Prometheus 采集 Kubernetes 中的 pod 的 metrics 的方法

Tags: prometheus 

本篇目录

说明

在 servcie 中配置 annotation,通过 endpoints 发现是一种比较好的方式。

设置方法

为 service 配置 annotation:

annotations:
 prometheus.io/scrape: "true"
 prometheus.io/scheme: "http"
 prometheus.io/path: "/metrics"
 prometheus.io/port: "8888"

在 prometheus 中配置 endpoints 发现,通过 endpoints 发现的 target 会把对应 service、pod 的 annotation 一同带过来,所以下面的配置中可以使用 __meta_kubernetes_service_annotation...

- job_name: 'kubernetes-service-endpoints'
  kubernetes_sd_configs:
    - role: endpoints
  relabel_configs:
    # kubernetes 服务单独在 kubernetes-apiservers 中采集
    - action: labelmap
      regex: __meta_kubernetes_service_label_(.+)
    - action: labelmap
      regex: __meta_kubernetes_pod_label_(.+)
    - source_labels: [__meta_kubernetes_namespace]
      action: replace
      target_label: kubernetes_namespace
    - source_labels: [__meta_kubernetes_service_name]
      action: replace
      target_label: kubernetes_service_name
    - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] # 如果 prometheus.io/scrape: "true" 则采集
      action: keep
      regex: true
    - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
      action: replace
      target_label: __scheme__
      regex: (https?)
    - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]  # metrics 路径
      action: replace
      target_label: __metrics_path__
      regex: (.+)
    - source_labels: [__address__,__meta_kubernetes_service_annotation_prometheus_io_port] # 采集地址
      action: replace
      target_label: __address__
      regex: (.+)(?::\d+);(\d+)
      replacement: $1:$2

然后在 prometheus 的 Service Discovery 和 Targets 中可以发现对应的 pod。

参考

  1. 李佶澳的博客
  2. Prometheus: kubernetes_sd_config
  3. Prometheus: kubernetes_sd_config: endpoints

推荐阅读

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作

友情链接:  系统软件  程序语言  运营经验  水库文集  网络课程  微信网文  发现知识星球