我想在 bosun 中发出警报,它将检查 logstash 中是否出现“级别:致命”消息,并在每次出现唯一消息 x 主机组合时发出警报。为了使它有用,它应该按“消息”和“主机”标签对警报进行分组,并在模板中报告这些标签的值。我的 lscount 查询如下所示:
$fatal_log_rate = lscount("logstash","message,host","level:fatal", "5m", "5m", "")
我的问题是,当在 bosun 中运行此警报时,而不是像我想要的那样按整个消息字段进行分组,而是将单个消息的消息字段分解为多个组。看起来它在空格、冒号、换行符、方括号和等号上进行拆分。例如,如果我的消息是:
message: There was an error at: org.abc.Class:42.
ABC Component failed (reason=300)
从上面的 lscount 得到的 bosun 输出会给我 12 个组,其中包含消息“there”、“was”、“an”、“error”、“at”、“org.abc.Class”、“42”、“abc” 、“组件”、“失败”、“原因”、“300”。
按主机进行的分组也不如预期,尽管这是在第一个时期分裂。例如,我们的主机名可能是core2.abc.xyz.net
,但上面 lscount 的结果被拆分为host=core2
和host=abc.xyz.net
。
有没有办法通过消息字段的全部或部分分组警报,然后获取完整的消息字段以在模板中报告?