我们有一个 Kubernetes Pod,它提供多个指标端点(:3093/metrics
and :9113/metrics
),但它还有一个不提供任何指标的端口(:80
).
TL;DR:是否可以只刮掉端口3093
and 9113
?
我们正在使用示例配置 https://github.com/prometheus/prometheus/blob/70f3d1e/documentation/examples/prometheus-kubernetes.yml对于抓取配置:
- job_name: 'kubernetes-pods'
tls_config:
insecure_skip_verify: true
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
当使用此注释启用抓取时,这些端点会被正确抓取:
annotations:
prometheus.io/scrape: "true"
但这有一个问题,它也会刮擦端口:80
,这是不应该的。
该建议概述here https://github.com/prometheus/prometheus/issues/3756#issuecomment-767147462允许抓取每个 Pod 的多个端点。这个想法是为容器端口提供自定义名称,这些名称必须被删除,以便稍后在发现的目标的重新标记阶段使用这些名称。例如,以下配置添加prom-metrics
端口 3093 和 9113 的名称,必须由 Prometheus 抓取。注意80端口没有prom-metrics
名称,这样就不会被刮掉。
containers:
- name: custom-app
image: github.com/user/app:latest
ports:
- containerPort: 80
- containerPort: 3093
name: prom-metrics
- containerPort: 9113
name: prom-metrics
稍后,以下抓取配置可用于抓取容器端口:prom-metrics
name:
- job_name: 'pods-with-prom-metrics'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_container_port_name]
regex: prom-metrics
action: keep
- source_labels: [__address__, __meta_kubernetes_pod_container_port_number]
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- source_labels: [__meta_kubernetes_pod_container_name]
target_label: container
- source_labels: [__meta_kubernetes_pod_name]
target_label: pod
- source_labels: [__meta_kubernetes_namespace]
target_label: namespace
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)