【问题标题】:Prometheus kubelet metrics with pod labels带有 pod 标签的 Prometheus kubelet 指标
【发布时间】:2022-01-02 14:40:29
【问题描述】:

我正在尝试弄清楚如何使用 prometheus-stack 将 pod 标签从 kubelet 指标中获取到指标标签中。在我们的环境中,我们需要对 pod 名称进行哈希处理(由于长度限制),因此我们的应用名称、环境和单元名称都保存在 pod 标签中。

我们正在使用 prometheus-stack(helm 安装)从 kubelet(/metrics/metrics/cadvisor)收集指标,由于指标标签中缺少 pod 标签,很难知道哪个指标属于哪个应用程序。

Prometheus-stack 正在使用 sd_kubernetes_config 和端点规则来收集 kubelet 指标,其中不能使用 __meta 标签作为 pod 标签。还有其他方法如何在指标标签中获取该标签?

我还尝试使用kubeStateMetrics 收集 pod_labels 指标,我可以在其中获取包含 pod 标签的指标,但我无法弄清楚如何以 cadvisor 的指标将显示其值和来自 @ 的指标的方式显示这两个指标987654327@ 将用于显示其标签(在 Prometheus 图中)。

感谢您的建议。

【问题讨论】:

  • 您是否尝试过滤指标based on pod labels
  • 是的,你是对的,看起来它正在工作。我们使用 influxdb 作为后端存储,那里的查询我很讨厌,所以我试图在显示指标时不使用连接来实现这一点。
  • 是否可以让您的查询更漂亮?据我所知,这种过滤是解决您问题的关键。
  • 你好@JiříPeták。有更新吗?

标签: kubernetes prometheus metrics kubelet kube-prometheus-stack


【解决方案1】:

据我所知,您确实可以使用过滤指标based on pod labels。看原答案:

您可以使用+ 运算符加入指标。在这里,group_left() 将包含额外的标签:label_source 来自正确的度量标准kube_pod_labels。您加入的指标被强制为零(即0 * kube_pod_labels),这样它就不会影响第一个指标的结果。

(
kube_pod_info{namespace="test"}
)
   + on(namespace) group_left(label_source)
(
   0 * kube_pod_labels
)

事实上,指标可能会很长而且很糟糕。但是,在 prometheus 中创建您期望的内容是一种有效的方法,即带有 pod 标签的 kubelet 指标。

另请参阅 this guide - 它描述了如何使用 PromQL 和 this another guide 按标签加入 Prometheus 指标 - 如何使用 PromQL 连接更有效地大规模查询 Prometheus 指标。

【讨论】:

  • 是的,这就是我发现的唯一解决方案。没有选项如何在 kubelet 指标标签中添加 pod 标签。
猜你喜欢
  • 2020-09-25
  • 2023-01-25
  • 1970-01-01
  • 2020-02-12
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
相关资源
最近更新 更多