提问者:小点点

普罗米修斯库伯内特斯指标来自错误的刮擦工作


我使用图表的默认值(包括图表的默认scrape_configs)通过prometheus helm图表部署了prometheus服务器(库贝状态指标节点导出器警报管理器)。问题是我期望某些指标来自特定的工作,但却来自不同的工作。

例如,node_cpu_seconds_total是由kubernetes-service-endpoint作业提供的,但我希望它来自kubernetes-node作业,即node-exter。返回的度量值是准确的,但问题是我没有通常来自kubernetes-node的标签(因为kubernetes-node作业具有角色:nodevs角色: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指标,例如upstorage_operation_errors_total,所以node-exter正在被刮掉。

我还手动验证了node-extor有这个特定的指标,node_cpu_seconds_total,带有curl

作业顺序定义重要吗?如果一个作业具有相同的名称,它们会覆盖另一个作业的指标吗?我应该删除kubernetes-service-endpoint作业的指标吗?我是普罗米修斯的新手,因此感谢任何详细的帮助。


共2个答案

匿名用户

我能够弄清楚如何通过导航到prometheus服务发现状态UI页面来添加“缺失”标签。这个页面显示了所有可以通过relabel_configs处理和保留的“发现的标签”。被处理/保留的内容显示在“目标标签”下的“发现的标签”旁边。所以这只是修改scrape_configs中的kubernetes-service-endpoint作业配置的问题,所以我添加了更多的标签标签。下面正是我在图表的scrape_configs中更改的内容。使用这个新配置,我将命名空间servicepodnode添加到所有指标中,如果指标还没有它们的话(请参阅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作业。