gpt4 book ai didi

kubernetes - 普罗米修斯中覆盖标签的问题

转载 作者:行者123 更新时间:2023-12-02 00:11:09 30 4
gpt4 key购买 nike

我从 helm 安装了 stable/prometheus。默认情况下,job_name kubernetes-service-endpoints 包含 node-exporterkube-state-metrics 作为组件标签。我在 prometheus.yml 中添加了以下配置以包含命名空间、pod 和节点标签。

      - source_labels: [__meta_kubernetes_namespace]
separator: ;
regex: (.*)
target_label: namespace
replacement: $1
action: replace
- source_labels: [__meta_kubernetes_pod_name]
separator: ;
regex: (.*)
target_label: pod
replacement: $1
action: replace
- source_labels: [__meta_kubernetes_pod_node_name]
separator: ;
regex: (.*)
target_label: node
replacement: $1
action: replace

kube_pod_info{component="kube-state-metrics"} 已经有了命名空间、pod 和节点标签,因此生成了 exported_labels。指标 node_cpu_seconds_total{component="node-exporter"} 现在正确地具有标签 namespace 、pod 和节点。

要正确使用这些标签,我需要在上述两个指标名称中都出现这 3 个标签。为此,我可以覆盖 exported_labels 的值。我尝试添加以下配置但无济于事。

      - source_labels: [__name__, exported_pod]
regex: "kube_pod_info;(.+)"
target_label: pod
- source_labels: [__name__, exported_namespace]
regex: "kube_pod_info;(.+)"
target_label: namespace
- source_labels: [__name__, exported_node]
regex: "kube_pod_info;(.+)"
target_label: node

提到了类似的方法here .我看不出我的代码有问题。任何解决问题的指示都会非常有帮助。

已更新 -(添加完整作业)

    - job_name: kubernetes-service-endpoints
kubernetes_sd_configs:
- role: endpoints

metric_relabel_configs:
- source_labels: [__name__, exported_pod]
regex: "kube_pod_info;(.+)"
target_label: pod
- source_labels: [__name__, exported_namespace]
regex: "kube_pod_info;(.+)"
target_label: namespace
- source_labels: [__name__, exported_node]
regex: "kube_pod_info;(.+)"
target_label: node

relabel_configs:
- action: keep
regex: true
source_labels:
- __meta_kubernetes_service_annotation_prometheus_io_scrape
- action: replace
regex: (https?)
source_labels:
- __meta_kubernetes_service_annotation_prometheus_io_scheme
target_label: __scheme__
- action: replace
regex: (.+)
source_labels:
- __meta_kubernetes_service_annotation_prometheus_io_path
target_label: __metrics_path__
- action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
source_labels:
- __address__
- __meta_kubernetes_service_annotation_prometheus_io_port
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- action: replace
source_labels:
- __meta_kubernetes_namespace
target_label: namespace
- action: replace
regex: (.*)
replacement: $1
separator: ;
source_labels:
- __meta_kubernetes_pod_name
target_label: pod
- action: replace
source_labels:
- __meta_kubernetes_pod_node_name
target_label: node

以及来自 promql 的结果

kube_pod_info results

最佳答案

所以您的目标是将指标标签 exported_pod 重命名为 pod 等,以用于 kube_pod_info 指标?

在这种情况下,您需要 metric relabelling这是在从目标获取指标时完成的:

- job_name: 'kubernetes-service-endpoints'

kubernetes_sd_configs:
- role: endpoints

metric_relabel_configs:
- source_labels: [__name__, exported_pod]
regex: "kube_pod_info;(.+)"
target_label: pod
- source_labels: [__name__, exported_namespace]
regex: "kube_pod_info;(.+)"
target_label: namespace
- source_labels: [__name__, exported_node]
regex: "kube_pod_info;(.+)"
target_label: node
relabel_configs:
# Insert the same what you have so far

背景:

Normal relabelling (relabel_configs) 在服务发现时应用于服务发现过程自动发现的目标标签。它定义了明确的目标标签。在抓取时,目标标签将添加到目标中所有指标的指标标签中。正常的重新标记只能用于服务发现后目标的标签,这些标签通常是以 __ 开头的元标签。

Metric relabelling (metric_relabel_configs) 在抓取时应用于指标标签。因此,这可用于重命名由公开指标本身的应用程序定义的标签。

关于kubernetes - 普罗米修斯中覆盖标签的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59036927/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com