使用 Prometheus 监控自定义 kubernetes pod 指标
Monitor custom kubernetes pod metrics using Prometheus
我正在使用 Prometheus 监控我的 Kubernetes 集群。我在单独的命名空间中设置了 Prometheus。我有多个命名空间,多个 pods 是 运行。每个 pod 容器在此端点公开一个自定义指标 :80/data/metrics
。我正在获取 Pods CPU、内存指标等,但是如何配置 Prometheus 以从每个可用 pod 中的 :80/data/metrics
中提取数据?我已经使用本教程设置了 Prometheus,Link
您必须将这三个注释添加到您的 pods:
prometheus.io/scrape: 'true'
prometheus.io/path: '/data/metrics'
prometheus.io/port: '80'
它将如何运作?
查看您用来配置 prometheus 的 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: :
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: :
target_label: __address__
此处,__metrics_path__
和 port
以及是否从该 pod 废弃指标正在从 pod 注释中读取。
有关如何配置 Prometheus 的更多详细信息,请参阅 here。
link provided in the question refers to this ConfigMap for the prometheus configuration. It that ConfigMap is used then prometheus is already configured to scrape pods.
对于该配置(请参阅 relabel_configs
)让 prometheus 抓取 pods 在 :80/data/metrics
公开的自定义指标,将这些注释添加到 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'
注释并指定 =
而不是 :
作为注释的 name/value 分隔符,这在 yaml 或 json.[=19= 中无效]
我正在使用 Prometheus 监控我的 Kubernetes 集群。我在单独的命名空间中设置了 Prometheus。我有多个命名空间,多个 pods 是 运行。每个 pod 容器在此端点公开一个自定义指标 :80/data/metrics
。我正在获取 Pods CPU、内存指标等,但是如何配置 Prometheus 以从每个可用 pod 中的 :80/data/metrics
中提取数据?我已经使用本教程设置了 Prometheus,Link
您必须将这三个注释添加到您的 pods:
prometheus.io/scrape: 'true'
prometheus.io/path: '/data/metrics'
prometheus.io/port: '80'
它将如何运作?
查看您用来配置 prometheus 的 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: :
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: :
target_label: __address__
此处,__metrics_path__
和 port
以及是否从该 pod 废弃指标正在从 pod 注释中读取。
有关如何配置 Prometheus 的更多详细信息,请参阅 here。
link provided in the question refers to this ConfigMap for the prometheus configuration. It that ConfigMap is used then prometheus is already configured to scrape pods.
对于该配置(请参阅 relabel_configs
)让 prometheus 抓取 pods 在 :80/data/metrics
公开的自定义指标,将这些注释添加到 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'
注释并指定 =
而不是 :
作为注释的 name/value 分隔符,这在 yaml 或 json.[=19= 中无效]