我知道为了限制向存储系统发送不必要的指标,我们可以使用metrics_relabel_configs和"labeldrop“操作来丢弃某些标签。
我看到的所有例子中,人们都在丢弃标签,就好像他们已经知道了与指标相关的所有标签。
在为kubernetes使用node_exporters、process_exporter和kubestatemetrics等导出器时,存在太多的指标。你如何决定保留或放弃哪一个?
发布于 2019-07-20 03:43:52
labeldrop操作以cAdvisor的形式存在,用于向每个pod指标添加大量变化的和不需要的标签,并允许您删除它们。当目标公开指标上的标签时,这就是labeldrop和labelkeep的用例,而这些指标实际上应该在信息指标上。
发布于 2019-09-21 00:37:58
labeldrop只删除附加在指标上的标签,正如布莱恩所说,这对于删除不必要的信息标签是很好的。一旦该操作完成,指标名称和标签集必须是唯一的,这样才不会与另一个指标混淆。
为了删除整个指标,需要使用drop操作,该操作使用正则表达式来确定指标的一个特征--包括__name__标签--以决定是否应该删除整个指标。
从任何一个目标中查看可用标签的最快方法是在目标部分中查看Prometheus UI,例如prometheus:9090/targets。在该页面上,您可以看到抓取作业的每个目标,以及附加到存储的指标的标签。如果将鼠标悬停在这些标签上,还可以看到在对其应用任何重写之前标签是什么。
某些重新标记操作是自动的,例如,将__address__重命名为instance,并且在应用了所有重新标记规则后,labeldrop操作将自动应用于名称开头具有__double_underscore__的所有标签。这意味着不需要删除任何以双下划线开头的规则。
至于选择完全删除哪些指标,这取决于您的需求,您是否有适当的recording rules,以及您在什么时候删除它们。
同样值得注意的是,还有一个名为keep的操作,它与drop相反,它删除除匹配的指标之外的所有指标。此操作的一个很好的用途是使用应用于pods的注释,以确保Prometheus仅获得特定作业的正确指标。在my blog post and video中有一个这样的示例,其中要为特定作业的指标抓取的pod被标注为prometheus.io/scrape: "true"。该注释作为一个名为__meta_prometheus_pod_annotation_prometheus_io_scrape的标签传递给服务发现,keep规则基于该标签的值是否为true。
https://stackoverflow.com/questions/57100303
复制相似问题