首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prometheus Labeldrop Action背后的基本原理

Prometheus Labeldrop Action背后的基本原理
EN

Stack Overflow用户
提问于 2019-07-19 02:01:54
回答 2查看 1.7K关注 0票数 0

我知道为了限制向存储系统发送不必要的指标,我们可以使用metrics_relabel_configs和"labeldrop“操作来丢弃某些标签。

我看到的所有例子中,人们都在丢弃标签,就好像他们已经知道了与指标相关的所有标签。

在为kubernetes使用node_exporters、process_exporter和kubestatemetrics等导出器时,存在太多的指标。你如何决定保留或放弃哪一个?

EN

回答 2

Stack Overflow用户

发布于 2019-07-20 03:43:52

labeldrop操作以cAdvisor的形式存在,用于向每个pod指标添加大量变化的和不需要的标签,并允许您删除它们。当目标公开指标上的标签时,这就是labeldrop和labelkeep的用例,而这些指标实际上应该在信息指标上。

票数 3
EN

Stack Overflow用户

发布于 2019-09-21 00:37:58

labeldrop只删除附加在指标上的标签,正如布莱恩所说,这对于删除不必要的信息标签是很好的。一旦该操作完成,指标名称和标签集必须是唯一的,这样才不会与另一个指标混淆。

为了删除整个指标,需要使用drop操作,该操作使用正则表达式来确定指标的一个特征--包括__name__标签--以决定是否应该删除整个指标。

从任何一个目标中查看可用标签的最快方法是在目标部分中查看Prometheus UI,例如prometheus:9090/targets。在该页面上,您可以看到抓取作业的每个目标,以及附加到存储的指标的标签。如果将鼠标悬停在这些标签上,还可以看到在对其应用任何重写之前标签是什么。

某些重新标记操作是自动的,例如,将__address__重命名为instance,并且在应用了所有重新标记规则后,labeldrop操作将自动应用于名称开头具有__double_underscore__的所有标签。这意味着不需要删除任何以双下划线开头的规则。

至于选择完全删除哪些指标,这取决于您的需求,您是否有适当的recording rules,以及您在什么时候删除它们。

  • 如果您有一个对应用程序收到的请求进行计数的指标,并且您在多个容器中运行该应用程序,则使用记录规则将所有这些指标汇总到一个总计数中并删除所有原始指标可能是有意义的。
  • 将所有这些指标保留在短期本地存储中也是有意义的,但在将它们发送到长期容器之前使用write_relabel_configs删除它们

同样值得注意的是,还有一个名为keep的操作,它与drop相反,它删除除匹配的指标之外的所有指标。此操作的一个很好的用途是使用应用于pods的注释,以确保Prometheus仅获得特定作业的正确指标。在my blog post and video中有一个这样的示例,其中要为特定作业的指标抓取的pod被标注为prometheus.io/scrape: "true"。该注释作为一个名为__meta_prometheus_pod_annotation_prometheus_io_scrape的标签传递给服务发现,keep规则基于该标签的值是否为true

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57100303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档