Bosun Logstash集成 - 如何获取完整的消息字段

时间:2015-10-15 20:03:53

标签: logstash bosun

我想在bosun中发出警报,该警报将检查logstash中的“level:fatal”消息,并在每次发生唯一消息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”,“component”,“failed”,“reason”,“300”。

主持人的分组也不像预期的那样,尽管这是在第一个时期分裂。例如,我们的主机名可能是core2.abc.xyz.net,但上面的lscount结果会在host=core2host=abc.xyz.net上分开。

是否有任何方法可以通过全部或部分消息字段对警报进行分组,然后获取完整的消息字段以在模板中进行报告?

1 个答案:

答案 0 :(得分:0)

我相信这种情况正在发生,因为中的字段分析了字段的弹性(参见https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping-intro.html)。因此,该字段中的文本被弹性标记(分成单词)。

因此,您需要在弹性映射中将字段设置为not_analyzed,或者创建not_analyzed字段的另一个副本。