帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. 告警
  6. 设置查询统计语句

设置查询统计语句

  • 告警
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

日志服务支持联合监控与无数据告警,本文将指导如何配置。

监控时效性说明

  1. 告警监控原理

    基于告警的查询时间范围,根据检查频率定时执行配置的查询语句,并将查询结果作为告警条件的参数进行计算,如果计算结果为true,则触发告警。

  2. 监控时效性问题分析

    1. 数据索引延迟:数据从写入日志服务到被查询之间存在延时,即便延时很低,也存在数据漏查的风险。

      例如:告警执行时间为12:03:30,查询范围为相对一分钟时,检查频率为固定间隔1分钟。则查询时间范围为[12:02:30,12:03:30),对于12:03:29秒写入的日志,无法保证在12:03:30这个时间点查询到。

    2. 查询准确性:写入包含同一分钟不同时间的日志时,由于日志服务的索引构建方式,可能会存在较晚的日志的索引写入较早的日志时间点。

      例如:告警执行时间为12:03:30,查询范围为相对一分钟则为[12:02:30,12:03:30),如果在12:02:50秒写入多条日志,这些日志的时间有12:02:20,12:02:50等,那么这一批日志的索引可能会落入12:02:20这个时间点,导致使用时间范围[12:02:30,12:03:30)查询不到日志。

  3. 时效性优化建议

    • 追求准确性:如果您对告警的准确性要求高(不重复报警,不漏报)。

      • 数据索引延迟问题:建议在查询统计时,查询区间的相对起始时间和相对结束时间设置早一点,如70秒前~10s前(相对),通过设置10秒的缓冲时间来避免因为索引速度过低导致漏查。

      • 查询不准确的问题:建议在查询统计时,查询区间选择整点时间,如整点1分钟、整点5分钟和整点1小时等,并且将检查频率设置成一样的时间,如1分钟、5分钟和1小时等。

    • 追求实时性:如果对告警的实时性要求高(第一时间收到告警,能够容忍重复报警)。

      • 数据索引延迟问题:建议在查询统计时,查询区间的相对起始时间往前推移,如70秒(相对)。

      • 查询不准确的问题:建议在查询统计时,查询区间至少需要包含前一分钟,如90秒(相对),同时设置检查频率为1分钟。

关联多个查询分析结果

日志服务告警监控系统将一个查询和分析结果当作一个集合,并支持多个集合关联监控,如下图所示。

多集合操作

重要
  • 日志服务最多支持3个集合关联监控。

  • 默认只选取查询和统计结果中的前1000条数据用于集合操作。当存在三个查询和分析操作且集合操作不存在不合并选项时,只选取查询和统计结果中的前100条数据。

  • 当存在三个集合时,先对前两个集合进行操作,该操作结果再与第三个集合进行集合操作。例如:

    • 集合A左联集合B左联集合C:集合A和集合B先完成左联操作,该结果再左联集合C。

    • 集合A拼接集合B内联集合C:集合A和集合B完成拼接操作,该结果再内联集合C。

    • 集合A左斥集合B不合并集合C:集合A和集合B完成左斥操作,忽略集合C。

集合操作支持9种配置,具体如下所示:

集合操作

图示

说明

不合并

不合并

两个集合之间无关联。

集合A为查询和分析结果,集合B仅在告警信息中作为内容模板的变量被引用。

笛卡尔积

无

集合A与集合B任意数据互相交叉组合,一般用于过滤评估。

笛卡尔积

拼接

集合B中的数据添加到集合A中,根据字段对齐。

内联

内联

集合A中仅保留在集合B中存在的数据,即集合B是集合A的白名单。

左联

左联

在集合A中补充部分来自集合B的信息,即集合B是A的维表。

右联

右联

在集合B中补充部分来自集合A的信息,即集合A是集合B的维表。

全联

全联

集合A和集合B互相补充信息。

左斥

左斥

在集合A中删除集合B中存在的数据,即集合B是集合A的黑名单。

右斥

右斥

在集合B中删除集合A中存在的数据,即集合A是集合B的黑名单。

不合并

  • 需求

    监控Nginx访问日志,每15分钟的5xx错误超过500次则触发告警,并且在告警内容中列出具体的出错的主机信息。

  • 配置不拼接

  • 结果

    • 查询统计0的结果

      统计15分钟内发生5xx错误的次数。

      cnt

      1234

    • 查询统计1的结果

      统计15分钟内发生5xx错误最多的Top5主机及对应的错误次数。

      host

      pv

      host1

      60

      host2

      55

      host3

      47

      host4

      45

      host5

      30

    • 集合操作结果

      当选择集合操作为不合并时,集合操作结果为查询统计0的结果。

笛卡尔积

  • 示例1

    • 需求:

      同时监控OSS访问日志和SLB访问日志,每15分钟统计一次OSS的4xx错误和SLB的5xx错误,当总次数达到1000次时触发告警。

    • 配置:笛卡尔积

    • 结果:

      • 查询统计0的结果

        统计15分钟内出现OSS 4xx错误的次数。

        pv

        890

      • 查询统计1的结果

        统计15分钟内出现SLB 5xx错误的次数。

        pv

        567

      • 集合操作结果

        当选择集合操作为笛卡尔积时,集合操作结果如下:

        $0.pv

        $1.pv

        890

        567

  • 其他示例

    • 查询统计0结果

      a

      b

      a1

      b1

      a2

      b2

      a5

      b5

    • 查询统计1结果

      a

      c

      a1

      c1

      a3

      c3

    • 集合操作结果

      当选择集合操作为笛卡尔积时,集合操作结果如下:

      $0.a

      b

      $1.a

      c

      a1

      b1

      a1

      c1

      a1

      b1

      a3

      c3

      a2

      b2

      a1

      c1

      a2

      b2

      a3

      c3

      a5

      b5

      a1

      c1

      a5

      b5

      a3

      c3

拼接

  • 示例1

    • 需求

      北京和上海地域分别有2个用于存储Nginx访问日志的Logstore,每15分钟统计一次5xx错误超过30次的主机数。当两个Logstore中符合条件的主机数超过10个时,触发告警。

    • 配置拼接

    • 结果

      • 查询统计0的结果

        统计15分钟内发生5xx错误超过30次的主机及对应的错误次数。

        host

        pv

        host1

        60

        host2

        55

        host3

        47

        host4

        45

        host5

        31

      • 查询统计1的结果

        统计15分钟内发生5xx错误超过30次的主机及对应的错误次数。

        host

        pv

        hosta

        70

        hostb

        45

        hostc

        44

        hostd

        42

      • 集合操作结果

        当选择集合操作为拼接时,集合操作结果如下:

        host

        pv

        host1

        60

        host2

        55

        host3

        47

        host4

        45

        hosg5

        31

        hosta

        70

        hostb

        45

        hostc

        44

        hostd

        42

  • 其他示例

    • 当2个查询统计结果中的字段不完全一致时,进行拼接后,无匹配的字段留空。

      • 查询统计0结果

        a

        b

        a1

        b1

        a2

        b2

      • 查询统计1结果

        b

        c

        b1

        c1

        b2

        c2

      • 集合操作结果

        a

        b

        c

        a1

        b1

        无

        a2

        b2

        无

        无

        b1

        c1

        无

        b2

        c2

    • 当存在3个查询统计时,查询统计0和查询统计1的结果先完成集合操作,再与查询统计2结果拼接。

      • 查询统计0结果

        a

        b

        a1

        b1

        a2

        b2

      • 查询统计1结果

        a

        b

        a1

        b11

        a2

        b22

        a3

        b33

      • 查询统计0结果与查询统计1结果的拼接结果

        当选择集合操作为内联,$0.a == $1.a时,集合操作结果如下:

        a

        $0.b

        $1.b

        a1

        b1

        b11

        a2

        b2

        b22

      • 查询统计2结果

        a

        b

        a3

        b333

        a4

        b444

      • 集合操作结果

        当选择集合操作为拼接时,集合操作结果如下:

        说明

        查询统计2结果中字段b与字段$0.b对齐。

        a

        $0.b

        $1.b

        a1

        b1

        b11

        a2

        b2

        b22

        a3

        b333

        无

        a4

        b444

        无

内联

  • 示例1

    • 需求

      监控指定Bucket中发生5xx错误的次数,当每15分钟内出现1000次5xx错误时触发告警。此需求中,需添加资源数据,用于维护Bucket白名单。

    • 配置内联

    • 结果

      • 查询统计0的结果

        统计15分钟内发生5xx错误次数超过1000次的Bucket。

        bucket

        pv

        bucket_01

        1600

        bucket_02

        1550

        bucket_03

        1470

        bucket_04

        1450

      • 查询统计1的结果

        Bucket的资源数据。

        bucket

        desc

        bucket_03

        for dev team

        bucket_04

        for test team

        bucket_05

        for service team

        bucket_06

        for support team

      • 集合操作结果

        当选择集合操作为内联,$0.bucket == $1.bucket时,集合操作结果如下:

        bucket

        pv

        desc

        bucket_03

        1470

        for dev team

        bucket_04

        1450

        for test team

  • 示例2

    • 需求

      北京和上海地域分别有2个用于存储Nginx访问日志的Logstore,每15分钟统计一次发生5xx错误超过30次的客户端。北京和上海同时发生5xx错误,且北京的错误次数大于上海时触发告警。

    • 配置内联

    • 结果

      • 查询统计0结果

        统计15分钟内北京地域发生5xx错误超过30次的客户端及对应的错误数。

        client_ip

        pv

        192.0.2.4

        60

        192.0.2.5

        55

        192.0.2.6

        47

        192.0.2.7

        45

        192.0.2.8

        31

      • 查询统计1结果

        统计15分钟内上海地域发生5xx错误超过30次的客户端及对应的错误数。

        client_ip

        pv

        192.0.2.5

        70

        192.0.2.6

        45

        192.0.2.7

        44

        192.0.2.8

        42

        192.0.2.9

        42

      • 集合操作结果

        当选择集合操作为内联,$0.client_ip == $1.client_ip,$0.pv > $1.pv时,集合操作结果如下:

        client_ip

        pv

        192.0.2.6

        47

        192.0.2.7

        45

  • 其他示例

    当2个查询统计结果中的非关联字段存在同名时,集合操作的结果集合自动为字段添加$0、$1前缀。

    • 查询统计0结果

      a

      b

      c

      d

      a1

      b1

      c1

      d1

      a2

      b2

      c2

      d2

      a3

      b3

      c3

      d3

    • 查询统计1结果

      a

      b

      c

      a1

      b11

      c11

      a2

      b22

      c22

    • 集合操作结果

      当选择集合操作为内联,$0.a == $1.a时,集合操作结果如下:

      a

      $0.b

      $0.c

      d

      $1.b

      $1.c

      a1

      b1

      c1

      d1

      b11

      c11

      a2

      b2

      c2

      d2

      b22

      c22

左联

  • 查询统计0结果

    a

    b

    a1

    b1

    a2

    b2

    a3

    b3

  • 查询统计1结果

    a

    b

    c

    a1

    b11

    c1

    a2

    b22

    c2

  • 集合操作结果

    当选择集合操作为左联,$0.a == $1.a时,集合操作结果如下:

    a

    $0.b

    $1.b

    c

    a1

    b1

    b11

    c1

    a2

    b2

    b22

    c2

    a3

    b3

    无

    无

右联

  • 查询统计0结果

    a

    b

    c

    a1

    b11

    c1

    a2

    b22

    c2

  • 查询统计1结果

    a

    b

    a1

    b1

    a2

    b2

    a3

    b3

  • 集合操作结果

    当选择集合操作为右联,$0.a == $1.a时,集合操作结果如下:

    a

    $0.b

    c

    $1.b

    a1

    b11

    c1

    b1

    a2

    b22

    c2

    b2

    a3

    无

    无

    b3

全联

  • 查询统计0

    a

    b

    c

    a1

    b1

    c1

    a2

    b2

    c2

    a5

    b5

    c3

  • 查询统计1结果

    a

    b

    d

    a1

    b11

    d1

    a2

    b22

    d2

    a3

    b33

    d3

  • 集合操作结果

    当选择集合操作为全联,$0.a == $1.a时,集合操作结果如下:

    a

    $0.b

    c

    $1.b

    d

    a1

    b1

    c1

    b11

    d1

    a2

    b2

    c2

    b22

    d2

    a5

    b5

    c3

    无

    无

    a3

    无

    无

    b33

    d3

左斥

  • 需求

    监控除指定Bucket外的其他Bucket发生5xx错误的次数,当每15分钟内出现1000次5xx错误时触发告警。此需求中,需添加资源数据,用于维护Bucket黑名单。

  • 配置左斥

  • 结果

    • 查询统计0的结果

      统计15分钟内出现5xx错误超过1000次的Bucket。

      bucket

      pv

      bucket_01

      60

      bucket_02

      55

      bucket_03

      47

      bucket_04

      45

    • 查询统计1的结果

      Bucket的资源数据。

      bucket

      desc

      bucket_03

      for dev team

      bucket_04

      for test team

    • 集合操作结果

      当选择集合操作为左斥,$0.bucket == $1.bucket时,集合操作结果如下:

      bucket

      pv

      bucket_01

      60

      bucket_02

      55

右斥

  • 需求

    监控除指定Bucket外的其他Bucket发生5xx错误的次数,当每15分钟内出现1000次5xx错误时触发告警。此需求中,需添加资源数据,用于维护Bucket黑名单。

  • 配置右斥

  • 结果

    • 查询统计0的结果

      Bucket的资源数据。

      bucket

      desc

      bucket_03

      for dev team

      bucket_04

      for test team

    • 查询统计1的结果

      统计15分钟内出现5xx错误超过1000次的Bucket。

      bucket

      pv

      bucket_01

      60

      bucket_02

      55

      bucket_03

      47

      bucket_04

      45

    • 集合操作结果

      当选择集合操作为右斥,$0.bucket == $1.bucket时,集合操作结果如下:

      bucket

      pv

      bucket_01

      60

      bucket_02

      55

无数据告警

您可以使用无数据告警功能,避免采集过程中数据丢失无感知问题。例如您创建了一个告警监控规则用于监控各个主机的CPU指标,并希望发生如下情况时,收到告警通知。

  • CPU使用率超过95%。

  • 查询和分析结果中无数据。

具体配置如下所示:

  • 查询统计:例如统计CPU的使用率。

    * | select promql_query_range('cpu_util') from metrics limit 1000
  • 触发条件:有数据匹配,value>95,严重度:中

    当查询和分析结果中存在value的值大于95时,触发中级别的告警。

  • 连续触发阈值:当累计触发的告警次数达到该值时,产生一条告警。

  • 无数据告警:打开无数据告警开关,并设置严重度和标注信息。

    开启无数据告警功能后,如果查询和分析结果中无数据的次数超过连续触发阈值,将触发告警。

    无数据告警具备独立的告警严重度和标注信息。

页面配置展示如下图:

无数据告警

相关文章

功能简介 2025-04-22 10:53

本文介绍日志服务告警的主要功能。

应用场景 2025-04-22 10:53

本文介绍日志服务告警功能的应用场景。 开发运维(DevOps) 开发人员通过日志服务告警功能监控产品开发生命周期的各个阶段,及时识别代码

基本概念 2025-04-22 10:52

本文介绍日志服务告警功能的基本概念。

使用限制 2025-04-22 10:52

本文介绍日志服务告警功能的使用限制。

授权 2025-04-22 10:52

本文介绍您在创建告警任务时,涉及到的操作权限和数据访问权限。 告警操作权限 告警操作包括创建、删除、修改、查看告警任务。

授权RAM用户操作告警 2025-04-22 10:52

本文介绍如何为RAM用户授予操作告警权限,并介绍在配置跨Project、地域和阿里云账号监控日志时,如何配置授权。 前提条件 已创建RAM用户。具体操作,请参见创建RAM用户。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1