首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Prometheus监控自定义kubernetes pod指标

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

Stack Overflow用户
提问于 2018-11-19 04:36:48
回答 2查看 12.9K关注 0票数 11

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-19 11:42:30

您必须将以下三个注释添加到pods中:

代码语言:javascript
复制
prometheus.io/scrape: 'true'
prometheus.io/path: '/data/metrics'
prometheus.io/port: '80'

它将如何工作?

查看用于配置普罗米修斯的config-map.yamlkubernetes-pods作业,

代码语言:javascript
复制
- 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

检查这三个重新标记配置

代码语言:javascript
复制
- 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的更多详细信息,请参阅here

票数 17
EN

Stack Overflow用户

发布于 2018-11-19 12:22:04

问题中提供的link指的是普罗米修斯配置的this ConfigMap。如果使用了ConfigMap,则已经将普罗米修斯配置为scrape pods

对于让prometheus抓取:80/data/metrics上的pods公开的自定义指标的配置(参见relabel_configs),请将以下注释添加到pods部署配置中:

代码语言:javascript
复制
metadata:
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/path: '/data/metrics'
    prometheus.io/port: '80'

请参阅普罗米修斯文档(向下滚动)中关于Kubernetes发现的configuration options,了解与https抓取相关的设置以及更多内容。

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53365191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档