我使用图表的默认值(包括图表的默认scrape_configs)通过prometheus helm图表部署了prometheus服务器(库贝状态指标节点导出器警报管理器)。问题是我期望某些指标来自特定的工作,但却来自不同的工作。
例如,node_cpu_seconds_total
是由kubernetes-service-endpoint
作业提供的,但我希望它来自kubernetes-node
作业,即node-exter
。返回的度量值是准确的,但问题是我没有通常来自kubernetes-node
的标签(因为kubernetes-node
作业具有角色:node
vs角色:endpoint
用于kubernetes-service-endpoint
。我需要这些丢失的标签来进行高级查询仪表板。
node_cpu_seconds_total{mode="空闲"}
的输出:
node_cpu_seconds_total{app=普罗米修斯,图表=普罗米修斯-7.0.2,组件=节点导出器,cpu=0,遗产=Tiller,实例=10.80.20.46:9100,作业=kubernetes-service-endpoint,kubernetes_name=get-prometheus-node-exter,kubernetes_namespace=默认,模式=空闲,发布=get-prometheus}|423673.44node_cpu_seconds_total{app=prometheus,图表=prometheus-7.0.2,组件=节点导出器,cpu=0,遗产=Tiller,实例=10.80.20.52:9100,作业=kubernetes-service-endpoint,kubernetes_name=get-prometheus-node-exter,kubernetes_namespace=默认,模式=空闲,发布=get-prometheus}|417097.16
日志中没有错误,我确实有其他kubernetes-node
指标,例如up
和storage_operation_errors_total
,所以node-exter
正在被刮掉。
我还手动验证了node-extor
有这个特定的指标,node_cpu_seconds_total
,带有curl
作业顺序定义重要吗?如果一个作业具有相同的名称,它们会覆盖另一个作业的指标吗?我应该删除kubernetes-service-endpoint
作业的指标吗?我是普罗米修斯的新手,因此感谢任何详细的帮助。
我能够弄清楚如何通过导航到prometheus服务发现状态UI页面来添加“缺失”标签。这个页面显示了所有可以通过relabel_configs处理和保留的“发现的标签”。被处理/保留的内容显示在“目标标签”下的“发现的标签”旁边。所以这只是修改scrape_configs
中的kubernetes-service-endpoint
作业配置的问题,所以我添加了更多的标签标签。下面正是我在图表的scrape_configs
中更改的内容。使用这个新配置,我将命名空间
、service
、pod
和node
添加到所有指标中,如果指标还没有它们的话(请参阅honor_labels
)。
- job_name: 'kubernetes-service-endpoints'
+ honor_labels: true
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
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]
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
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
- target_label: kubernetes_namespace
+ target_label: namespace
- source_labels: [__meta_kubernetes_service_name]
action: replace
- target_label: kubernetes_name
+ target_label: service
+ - source_labels: [__meta_kubernetes_pod_name]
+ action: replace
+ target_label: pod
+ - source_labels: [__meta_kubernetes_pod_node_name]
+ action: replace
+ target_label: node
从抓取配置中,kubernetes-node作业探测https://kubernetes. default.svc:443/api/v1/node/${node_name}/proxy/metrics
,而kubernetes-service-endpoint作业探测这些服务的每个endpoint,定义了prometheus.io/scrape:true
,其中包括node-exter。因此,在您的配置中,node_cpu_seconds_total指标肯定来自kuberenetes-service-endpoint作业。