【问题标题】:ElastAlert flatline not finding resultsElastAlert flatline 未找到结果
【发布时间】:2017-10-19 22:52:54
【问题描述】:

使用 ElastAlert 框架创建 flatline 警报类型。

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

这是我的 elastalert-rule-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 似乎可以使用该语法。

有什么想法吗?

【问题讨论】:

    标签: lucene kibana elastalert


    【解决方案1】:

    我知道了...只是忘记发布答案了。

    显然,对于带有空格的字段,您需要转义反斜杠,因此相关行将如下所示:

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

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

    所以 YAML 文件中的条目看起来像这样:

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

    【讨论】:

      【解决方案2】:

      您可以通过对字段数据使用双引号来避免转义:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        • 1970-01-01
        • 2016-12-03
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多