如何排查多指标规则异常问题

如果您创建的报警规则是组合指标,并且设置了多个报警规则表达式,在出现异常问题时,可以参见下列常见问题。

问题排查

  1. 检查报警规则多指标中,是否有某个指标无数据。

    如果报警规则多指标中有一个指标无数据,将导致报警规则整体无数据,建议您把无数据的指标和有数据的指标进行分开配置报警规则。

  2. 检查在监控指标的Dimensions中,是否有某个字段含义不同。

    说明

    监控指标Dimensions参数,请参见附录1 云产品监控指标

    如果在报警规则多指标中,多个指标有相同的Dimension字段,经过查询每个指标之后,会判断每一条数据的每一个指标是否齐全,但是如果Dimension中的某个字段,在不同指标中含义不一致,同一个字段的数据值不一致,将会导致指标齐全判断无法通过,则会显示报警规则无数据。

    举例:ECS产品的磁盘指标disk_readiops的dimensions是[userId, instanceId, device],Network指标networkout_rate的dimensions也是[userId,instanceId,device],但是显然磁盘指标的device指的是磁盘名称,Network指标的device指的是网络设备名称,含义不同,值不同,这两个指标对应的device都缺另一个指标对应的数据,最终导致报警规则无数据,在此情况下,建议您把磁盘指标和网卡指标进行分开配置规则。

  3. 检查多指标数据聚合后,导致报警数量增多造成的问题。

    如果在报警规则多指标中,多个指标有不同的Dimension字段,经过查询每个指标之后,会对数据根据dimension使用笛卡尔积的计算方式对多个指标数据进行join合并,这样会导致监控数据增多,报警量增多。

    说明

    笛卡尔积(Cartesian product),在数学中,特别是集合论领域,是一个基本概念,用于描述两个集合之间所有可能的有序对的集合。如果集合A和集合B是两个非空集合,那么它们的笛卡尔积A×B定义为所有形式为(a, b)的有序对的集合,其中a是集合A中的任意元素,b是集合B中的任意元素。简而言之,就是集合A中的每个元素都与集合B中的每个元素配对一次,形成一个新的元素对,并将所有这样的元素对组成一个新的集合。

    例如,如果集合A = {1, 2},集合B = {'a', 'b'},那么它们的笛卡尔积A×B为: A×B = {(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')}

    注意,这里的有序对(1, 'a')与('a', 1)不同,因为顺序 matters,(a, b)不等于(b, a),除非a等于b。在数据库查询中,不恰当的使用笛卡尔积(比如没有合适的连接条件的表连接)会导致结果集大小爆炸性增长,这是因为每个来自一个表的行都会与另一个表中的每一行进行配对,这通常不是期望的结果,且会极大地降低查询效率。

    举例:一个规则监控ECS实例的cpu使用率和磁盘iops,其中ECS实例指标cpu_total的dimensions是[userId, instanceId],磁盘指标disk_readiops的dimensions是[userId, instanceId, device],所以如果磁盘指标正常,cpu使用率异常,用户一个实例下挂了多个盘,每一个磁盘都会报一条信息。这种情况下,建议用户分开设置报警。