1

我想在 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=core2host=abc.xyz.net

有没有办法通过消息字段的全部或部分分组警报,然后获取完整的消息字段以在模板中报告?

4

1 回答 1

0

我相信这是因为弹性分析字段中的字段(请参阅https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping-intro.html)。因此,该字段中的文本被弹性标记(拆分为单词)。

因此,您需要将弹性映射中的字段设置为not_analyzed,或制作该字段的另一个副本not_analyzed

于 2015-11-22T13:22:33.113 回答