【博客655】prometheus如何应对告警目标消失带来的评估缺失问题

这篇具有很好参考价值的文章主要介绍了【博客655】prometheus如何应对告警目标消失带来的评估缺失问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

prometheus如何应对告警目标消失带来的评估缺失问题

1、up指标剖析

基于拉取的监控(例如 Prometheus)的优势之一是,您可以在抓取过程中判断目标是否健康。

关于 Prometheus 的一个常见问题是如何判断服务器是否没有响应或检测样本是否不再从目标中摄取。简单黑盒监控的首选工具是黑盒导出器,您可以使用 unless 和 offset 进行边缘检测,以检测时间序列是否未更新。然而,有一种更简单的方法可以涵盖大多数用例。

当 Prometheus 抓取目标时,它不只是摄取返回的样本。它还添加了一些关于抓取本身的额外示例。主要的是 up指标,如果抓取失败则为 0,如果抓取成功则为 1。

关于 up 有几件事你应该知道:

  • 1、它不是来自 scrape 本身,所以 metric_relabel_configs 不适用。也就是说,up 总是有目标的标签,每个服务发现和 relabel_configs。

  • 2、只要目标从服务发现中返回,up 就会获得新值。这意味着如果自动缩放删除了一个实例,您将不会收到它已关闭的警报,这正是您想要的。但是,这也意味着如果自动缩放删除了所有实例,您也不会收到警报。为了防止这种情况,明智的做法是为所有工作消失的情况创建一个带有表达式 absent(up{job=“myjob”}) 的警报。

  • 3、有额外的时间序列表现得像up,都是以scrape_为前缀的。这些对于调试很有用

    • scrape_duration_seconds{job=“”, instance=“”}: duration of the scrape.
    • scrape_samples_post_metric_relabeling{job=“”, instance=“”}: the number of samples remaining after metric relabeling was applied.
    • scrape_samples_scraped{job=“”, instance=“”}: the number of samples the target exposed.
    • scrape_series_added{job=“”, instance=“”}: the approximate number of new series in this scrape.
  • 4、即使他们遇到的实例失败,一些exporter也会成功,通常是因为在这种情况下他们仍然可以提供一些有用的信息。因此,up 为 0 的警报是必要的,但还不够。在这种情况下,您可能还需要关于 haproxy_up、mysqld_up、consul_up、probe_success(由black box exporter使用)等的警报。

2、Alerting on Down Instances(探测目标down)

假设已经设置了监控并正在抓取实例,无论是用于机器监控的节点导出器还是其他导出器。要为已关闭 10 分钟的每个实例生成警报:

groups:
- name: node.rules
  rules:
  - alert: InstanceDown
    expr: up{job="node"} == 0
    for: 10m

标签的强大功能意味着您只需定义一次此警报,它就会自动应用于您所有带有节点标签的实例!

单个实例发生故障不值得叫醒某人。只在 25% 的实例停机时发出警报怎么样?

groups:
- name: node.rules  
  rules:
  - alert: InstancesDown
    expr: avg(up{job="node"}) BY (job) 

3、Absent Alerting for Jobs(探测目标缺失)

使用 Prometheus 可以轻松地对数字过大或过小发出警报。但是,如果数字丢失了怎么办?

在正常操作中,您的 Prometheus 会发现您的目标,抓取它们,并将运行您针对它们定义的任何警报规则。但这可能会出错。例如,您的实例可能会从服务发现中消失,这将导致任何警报(例如 avg by (job)(up) < 0.5 不返回任何内容而不是发出警报)。如前所述,当没有输入时,聚合器不产生输出。

因此,建议对作业消失的所有目标发出警报,例如:

groups:
- name: example
  rules:
  - alert: MyJobMissing
    expr: absent(up{job="myjob"})
    for: 10m

这使用了 absent 函数。如果给定的选择器不匹配任何内容,则返回值为 1 的单个时间序列和任何相等匹配器的标签。例如,在这种情况下,警报的标签为 job=“myjob”。如果有匹配的系列,则不返回任何内容。

Prometheus 不知道应该存在哪些标签集,因此您需要为每个作业设置一个这样的警报。这仅适用于不存在和其他时间序列缺失的情况,如果您只想检测目标是否已关闭,您可以像往常一样使用一个警报规则来完成。

4、Absent Alerting for Scraped Metrics(探测metrics缺失)

如果想针对一个目标消失的特定指标发出警报怎么办?

注意:最好避免出现和消失的指标,但是目标的某些子系统并不总是返回它们应该返回的所有指标。可以通过注意到 up 指标存在但所讨论的指标不存在来检测这种情况。此外,您需要检查 up 是否为 1,以便在目标关闭时不会误触发警报。如果您已经收到有关该工作的警报,则无需再向自己发送有关缺少指标的垃圾邮件。

警报看起来像:

groups:
- name: example
  rules:
  - alert: MyJobMissingMyMetric
    expr: up{job="myjob"} == 1 unless my_metric
    for: 10m

5、对于使用可能不存在的指标的规则如何处理

如果您正在对多个指标进行数学运算,而其中一些指标并不总是存在,那么处理起来可能会很困难,并会导致警报不触发。这方面的一个例子是:

如果您有一个失败指标和一个成功指标(忽略建议改为使用失败指标和总指标)。如果标记了这些但没有成功,则将失败率计算为: rate(failure[1m]) / (rate(failure[1m]) + rate(success[1m]))
由于缺少成功指标中的匹配标签集。因此,100% 的故障率会导致高级别故障警报永远不会触发!

对于您正在使用可能不存在的指标的情况,例如成功/失败示例,方法是根据我们知道存在的某些指标(通常是 up)或在缺失的标签集中。因此,例如,上面的故障率将变为:文章来源地址https://www.toymoban.com/news/detail-488078.html

(rate(failure[1m]) or up * 0)
  /
((rate(failure[1m]) or up * 0) + (rate(success[1m] or up * 0))

到了这里,关于【博客655】prometheus如何应对告警目标消失带来的评估缺失问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【博客685】prometheus 出现NaN场景以及如何去除干扰(Not a Number)

    场景: 一些监控系统使用 NaN 作为空值或缺失值,但在 Prometheus 中 NaN 只是另一个浮点值。Prometheus 表示缺失数据的方式是让数据缺失。Prometheus 支持所有 64 位浮点值,包括正无穷大、负无穷大和 NaN。 出现NaN的情况示例: 除以分母0 用作过时处理一部分的标记。 然而,这是一

    2024年02月14日
    浏览(40)
  • 玩转prometheus告警 alertmanger(一)之prometheus告警规则

    目录 1. 告警系统原理概述 2.  配置prometheus规则 2.1 配置告警规则目录 2.2 告警规则 3. 查看效果 在开始之前,需要了解下prometheus和altermanger之间的关系是什么?从prometheus的架构及生态系统组件来看   Prometheus从targets中抓取指标(metric)并存储,通过对指标进行分析生成告警

    2024年02月13日
    浏览(41)
  • 供应链安全和第三方风险管理:讨论如何应对供应链中的安全风险,以及评估和管理第三方合作伙伴可能带来的威胁

      在当今数字化时代,供应链的安全性越来越受到重视。企业的成功不仅仅依赖于产品和服务的质量,还取决于供应链中的安全性。然而,随着供应链越来越复杂,第三方合作伙伴的参与也带来了一系列安全风险。本文将探讨供应链安全和第三方风险管理的关键问题,并通过

    2024年02月12日
    浏览(44)
  • 容器云平台监控告警体系(五)—— Prometheus发送告警机制

    在Prometheus的架构中告警被划分为两个部分,在Prometheus Server中定义告警规则以及产生告警,Alertmanager组件则用于处理这些由Prometheus产生的告警。本文主要讲解Prometheus发送告警机制也就是在Prometheus Server中定义告警规则和产生告警部分,不过多介绍Alertmanager组件。 在Prometheus中

    2023年04月23日
    浏览(48)
  • Prometheus 告警规则配置

    alert.rule即告警规则,在Prometheus中,通过用户自定义的条件进行告警,自定义条件可以由 PromQL 表达式定义,当满足告警条件后,Prometheus会通过web界面进行告警,如果同时有部署Alertmanager,则可利用Alertmanager进行更为复杂的通知,如钉钉、微信、飞书等个性化渠道进行通知。

    2023年04月25日
    浏览(39)
  • prometheus告警处理

    一.告警简介 1.工作流程 prometheus收集监测的信息 prometheus.yml 文件中定义 rules 文件,rules 里包含告警信息 prometheus 把告警信息 push 给 altermanager,alertmanager 里定义收件人和发件人 altermanager 发送文件到邮箱或微信 2.告警生命周期 定期采集监控数据 定期扫描告警规则,发现告警

    2023年04月08日
    浏览(36)
  • prometheus实战之三:告警规则

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《prometheus实战》系列的第三篇,一起来学习prometheus的告警功能,如下图所示,整个告警功能分为规则和通知两部分,本篇是有关规则的详细介绍,至于命中规则后

    2024年02月02日
    浏览(38)
  • 汽车智能化带来的安全新挑战及其应对思路

    智能汽车的安全挑战 挑战1:域控架构/集成式EE架构的复杂度 功能安全开发所有的开发活动中,都要求尽最大可能降低功能和系统的复杂度,复杂度的上升,对于安全实现的难度而言,是指数级上升的。然而域控架构和集中式EE架构的复杂度是天然的。原来一个功能相对简单

    2024年02月05日
    浏览(66)
  • Edge浏览器版本更新后Copilot按钮消失的解决应对方式

    今天突然发现Edge浏览器右上角的Copilot按钮不见了,排查了一下,发现可能是浏览器自动升级到120版本后,关闭了右上角的Copilot按钮。案发现场如下: 原因如下: 说实话,人家这个插件还是很好用的,之前说是测试版,那这次消失,我猜想是在进行正式版发布吧,抱着这个

    2024年02月05日
    浏览(44)
  • 云原生监控系统Prometheus:基于Prometheus构建智能化监控告警系统

    目录 一、理论 1.Promethues简介 2.监控告警系统设计思路 3.Prometheus监控体系 4.Prometheus时间序列数据 5.Prometheus的生态组件 6.Prometheus工作原理 7.Prometheus监控内容 8.部署Prometheus 9.部署Exporters 10.部署Grafana进行展示 二、实验 1.部署Prometheus 2.部署Exporters 2.监控远程MySQL 3.部署Grafana进行

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包