活跃告警 & 历史告警
关于告警事件,夜莺分成了两个菜单,一个是活跃告警,用于展示所有当前未恢复的告警事件(一旦告警恢复,就会自动从这里删除),另一个是历史告警,用于展示所有历史事件,包括告警事件和恢复事件。
活跃告警
活跃告警有两个展示方式,一个是聚合卡片,一个是告警列表。如下图,是一个卡片聚合视图页面:
红框中的两个按钮用于切换展示方式。
社区问题比较多的是活跃告警如何配置聚合规则。首先说一下聚合规则的设计初衷:告警事件很多,想要分门别类的查看,这就需要聚合呈现,基于哪些维度来对事件分类呢?一个是事件的属性,比如所属业务组的名称、规则名称、事件级别,另一个是事件标签,比如根据 ident 标签做聚合,则每个机器的告警就会分别聚合为一张卡片。默认安装了之后,会内置两个聚合规则:
- 根据业务组+事件级别做聚合:
field:group_name::field:severity
- 根据告警规则的名称做聚合:
field:rule_name
如果想配置基于某个标签做聚合,就使用 tagkey 做前缀即可(根据属性聚合的话,其前缀是 field,内置的两个规则都是根据属性聚合,多个聚合条件之间用双冒号分隔),举例:根据机器标签 ident 做聚合:tagkey:ident
历史告警
历史告警就是展示所有历史事件,包括告警事件和恢复事件,每个告警事件前面有个色块,绿色表示恢复事件,其他颜色表示告警事件,颜色越深,表示事件级别越高。
活跃告警存储在数据库的 alert_cur_event 表中,历史告警存放在 alert_his_event 表中,alert_his_event 随着时间推移可能会积累越来越多的条目,所以需要定期手工清理,一般来讲,超过 1000 万行就需要清理一下,清理的时候写个小脚本,每次清理 1000 行,保证小事务操作,别不加 limit 一次性删除太多,会锁表。