2017-10-19 121 views
1

使用ElastAlert框架创建一个flatline警报类型。ElastAlert flatline找不到结果

当我用完全相同的语法在Kibana UI中使用查询时,它返回结果,但ElastAlert没有返回任何结果。

这里是我的elastalert规则-file.xml

name: Test Flatline 
type: flatline 
run_every: 
    seconds: 15 
relalert: 
    minutes: 0 
es_host: localhost 
es_port: 9200 
threshold: 1 
timeframe: 
    minutes: 5 
index: my-index-* 
filter: 
- query: 
    query_string: 
     query: "_type:metric" # this returns results in both kibana and elastalert 
     #query: "_type:metric AND _exists_:My\ Field\ With\ Spaces.value" # this returns results in kibana but not in elastalert 

timestamp_type: unix_ms 
alert: 
    - command 
command: ["my-bash-script.sh"] 

于是,我就玩的查询,如果我只需指定_type:metric然后在Kibana搜索结果似乎以匹配ElastAlert。

但是,当我尝试在第二个查询中使用带有_exists_ lucene语法的查询时,ElastAlert不会返回任何内容,而Kibana似乎对语法没有问题。

任何想法?

回答

0

我明白了......只是忘了发表一个答案。

显然为现场与大家需要逃避反斜杠所以在这个行应该是这样的空间:

query: "_type:metric AND _exists_:My\\ Field\\ With\\ Spaces.value" 

此外,在特殊情况下使用的是你需要Ansible(YAML)配置添加反斜杠以转义每个反斜杠。

所以在YAML文件中的条目将是这个样子:

query: "My\\\\ field\\\\ With\\\\ Spaces.value"