我正在使用Prometheus来监控我的Kubernetes集群。我已经在一个单独的名称空间中设置了Prometheus。我有多个命名空间,并且正在运行多个pod。每个pod容器在此端点:80/data/metrics处公开一个自定义指标。我正在获取pod CPU、内存指标等,但是如何配置Prometheus以从每个可用pod中的:80/data/metrics中提取数据?我已经使用本教程设置了Prometheus、Link
发布于 2018-11-19 11:42:30
您必须将以下三个注释添加到pods中:
prometheus.io/scrape: 'true'
prometheus.io/path: '/data/metrics'
prometheus.io/port: '80'它将如何工作?
查看用于配置普罗米修斯的config-map.yaml的kubernetes-pods作业,
- 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__和port以及是否从此pod中删除指标都是从pod注释中读取的。
有关如何配置Prometheus的更多详细信息,请参阅here。
发布于 2018-11-19 12:22:04
问题中提供的link指的是普罗米修斯配置的this ConfigMap。如果使用了ConfigMap,则已经将普罗米修斯配置为scrape pods。
对于让prometheus抓取:80/data/metrics上的pods公开的自定义指标的配置(参见relabel_configs),请将以下注释添加到pods部署配置中:
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中是无效的。
https://stackoverflow.com/questions/53365191
复制相似问题