【博客662】prometheus对rule规则和alert规则作单元测试

这篇具有很好参考价值的文章主要介绍了【博客662】prometheus对rule规则和alert规则作单元测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

prometheus对rule规则和alert规则作单元测试

1、场景

在实际生产中,对于rules和alerts的配置有时候出于某些特殊原因,无法进行模拟,这时候就需要我们对采集规则和告警规则进行单元测试,以确保正确性

2、Unit testing rules with Prometheus

example:

cat >rules.yml <<EOF
groups:
 - name: example
   rules:
    - record: job:up:sum
      expr: sum without(instance)(up)
EOF

要测试此规则,您可以使用以下内容创建 test.yml:

rule_files:
  - rules.yml
evaluation_interval: 1m
tests:
 - interval: 1m
   input_series:
    - series: 'up{job="node",instance="foo"}'
      values: '1+0x10'
    - series: 'up{job="node",instance="bar"}'
      values: '1+0x5 0+0x5'
    - series: 'up{job="prometheus",instance="foo"}'
      values: '1+0x10'
   promql_expr_test:
    - expr: job:up:sum
      eval_time: 1m
      exp_samples:
       - labels: 'job:up:sum{job="node"}'
         value: 2
       - labels: 'job:up:sum{job="prometheus"}'
         value: 1
    - expr: job:up:sum
      eval_time: 6m
      exp_samples:
       - labels: 'job:up:sum{job="node"}'
         value: 1
       - labels: 'job:up:sum{job="prometheus"}'
         value: 1

进行测试:

./promtool test rules test.yml

测试结果:

Unit Testing: test.yml
  SUCCESS

分析一下测试文件:

这表示我们要加载规则文件 rules.yml 并每分钟评估其中的规则:

rule_files:
  - rules.yml
evaluation_interval: 1m

这定义了第一组测试,并提供了输入数据。该系列每分钟都会有样品。第一个系列是 1 1 1 1 1 1 1 1 1 1,第二个系列是 1 1 1 1 1 0 0 0 0 0,第三个系列是 1 1 1 1 1 1 1 1 1 1:

   promql_expr_test:
    - expr: job:up:sum
      eval_time: 1m
      exp_samples:
       - labels: 'job:up:sum{job="node"}'
         value: 2
       - labels: 'job:up:sum{job="prometheus"}'
         value: 1
    - expr: job:up:sum
      eval_time: 6m
      exp_samples:
       - labels: 'job:up:sum{job="node"}'
         value: 1
       - labels: 'job:up:sum{job="prometheus"}'
         value: 1

最后是实际测试。第一个在一分钟评估返回 2 和 1。第二个在六分钟评估它,此时 up{job=“node”,instance=“bar”} 已变为 0,结果为现在 1 和 1。

3、Unit testing alerts with Prometheus

example:

cat >rules.yml <<'EOF'
groups:
 - name: example
   rules:
    - alert: MyAlert
      expr: avg without(instance)(up) < 0.75
      for: 2m
      labels:
        severity: page
      annotations:
        description: 'Only {{$value}} of {{$labels.job}} job is up'
EOF

为了像之前一样测试它,我们创建一个 test.yml,其中包含以下内容:

rule_files:
  - rules.yml
evaluation_interval: 1m
tests:
 - interval: 1m
   input_series:
    - series: 'up{job="node",instance="foo"}'
      values: '1+0x10'
    - series: 'up{job="node",instance="bar"}'
      values: '1+0x5 0+0x5'
    - series: 'up{job="prometheus",instance="foo"}'
      values: '1+0x10'
   alert_rule_test:
    - alertname: MyAlert
      eval_time: 7m
    - alertname: MyAlert
      eval_time: 8m
      exp_alerts:
       - exp_labels:
           severity: page
           job: node
         exp_annotations:
           description: 'Only 0.5 of node job is up'

然后您可以再次运行这些测试:

./promtool test rules test.yml

测试结果:

Unit Testing: test.yml
  SUCCESS

这里我们测试的是警报,第一个测试在 7 分钟内没有为 MyAlert 触发警报:

   alert_rule_test:
    - alertname: MyAlert
      eval_time: 7m

第二个测试单个警报在 8 分钟内触发,并且它具有所有正确的标签和注释:

    - alertname: MyAlert
      eval_time: 8m
      exp_alerts:
       - exp_labels:
           severity: page
           job: node
         exp_annotations:
           description: 'Only 0.5 of node job is up'

如果您希望使用相同的警报名称触发更多警报,您可以在 exp_alerts 下列出所有警报。文章来源地址https://www.toymoban.com/news/detail-485550.html

到了这里,关于【博客662】prometheus对rule规则和alert规则作单元测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • vue中的rules表单校验规则使用方法 :rules=“rules“

    :ref=\\\"dataForm\\\"        // 提交表单时进行校验 :rules=\\\"rules\\\"            // return 下的校验规则 :model=\\\"userForm\\\"  // 绑定表单的值 点击提交时,会先对表单的值进行校验判断,校验通过后,再进行后续操作。 el-form-item 里面使用 prop 属性绑定规则 el-form-item label=\\\"充值金额\\\"  prop=\\\"amo

    2024年02月05日
    浏览(34)
  • Avue组件或Element-UI动态修改rules验证规则或根据条件修改rules验证规则

    根据条件修改验证规则:el-form中若A为空,则B可为空,若A有值,则B必填,动态改变B的验证规则 在watch监听事件中,使用auve-form自带的:defaults.sync=\\\"defaults\\\"属性,来操作B的rules验证规则,此写法的效果好于el-form原生,因为设置为必填后会有必填标志* 使用watch监听A值的变化,若

    2024年02月12日
    浏览(36)
  • ElementUI 表单 rules 规则

    ElementUI组件库中表单校验默认使用的是async-validator,所以要了解ElementUI表单验证的rules规则,先了解async-validator type :验证数据类型 支持的类型如下,默认类型为string string 值必须是 String 类型,这是默认值 number 值必须是 String 类型,包含整数和小数 integer 值必须是 Number 和整

    2024年02月10日
    浏览(25)
  • 二、写规则(Rules)

    规则没有先后顺序 一般来说规则的顺序是没有先后的,除了默认target的规则。make会将第一个makefile里面的第一条规则的第一个target作为默认的target。所以,默认target的规则应该放在最前面,一般使用all作为默认target的名称。 规则的声明 第一种格式,将recipe从新行开始写,如

    2024年02月03日
    浏览(23)
  • 规则引擎----easy rules

    将复杂的if else判断剥离出来 2.1、引入POM 2.2、编写规则 2.2.1、注解 2.2.2、表达式 2.2.3 yml配置文件 2.2.4 组合规则 2.2.5 组合规则说明 类 说明 UnitRuleGroup 要么应用所有规则,要么不应用任何规则(AND逻辑) ActivationRuleGroup 它触发第一个适用规则,并忽略组中的其他规则(XOR逻辑

    2024年02月13日
    浏览(30)
  • Vue rules校验规则详解

    当我们在开发Vue应用时,经常需要对表单进行校验,以确保用户输入的数据符合预期。Vue提供了一个强大的校验规则机制,通过定义rules规则,可以方便地对表单进行验证,并给出相应的错误提示。 在Vue的rules中,我们可以使用预定义的校验规则,如 required 、 type 、 min 、

    2024年02月04日
    浏览(33)
  • 听GPT 讲Prometheus源代码--rules

    Prometheus的rules目录主要包含规则引擎和管理规则的文件: engine.go 该文件定义了规则引擎的接口和主要结构,包括Rule,Record,RuleGroup等。它提供了规则的加载、匹配、评估和结果记录的功能。 api.go 定义了用于管理和查询规则的RESTful API,包括获取、添加、删除规则等方法。 recordin

    2024年02月12日
    浏览(29)
  • Easy Rules规则引擎(2-细节篇)

    在 Easy Rules规则引擎(1-基础篇) 中我们已经简单介绍了 Easy Rules 规则引擎的使用示例,这节我们详解介绍一下规则引擎的相关参数配置实例还有组合规则。 Easy Rules 规则引擎支持下面参数配置: 参数名称 参数类型 必选 默认值 rulePriorityThreshold int 否 Integer.MAX_VALUE skipOnFirst

    2024年02月11日
    浏览(30)
  • Easy Rules规则引擎(1-基础篇)

    最近团队在做一些 Visa 、 Master 卡的交易风控,运营团队提供了一些交易风控的规则,比如针对卡号MCC设置单笔交易限额,24小时交易限额,72小时交易限额等等,还有触发风控规则是否拦截交易还是只发告警邮件等等等。 虽然写各种条件判断也能实现,但是随着后面规则增加

    2024年02月12日
    浏览(25)
  • Vue中常用的rules校验规则

    2024年02月03日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包