所以我在(Yelp的)Elastalert中运行了某个查询,我试图过滤掉包含多个关键字之一的日志。如果我使用docker run -d --name webapp -p 7007:7007 -p 7003:7003 -p 5556:5556 -v /c/webapp:/webapp 1213-domain
规则类型,我会得到一组与我所拥有的特定查询相匹配的30个匹配项。当我将ruletype更改为白名单时:
any
即使我知道消息字段包含列出的字符串,我仍然会得到相同的30个匹配项。我也尝试使用与整个字段完全匹配的字符串来更改比较键或字符串,我已将格式更改为
type: whitelist
compare_key: message
ignore_null: true
whitelist: ["exclude_strings"...]
并没有什么有所作为。黑名单类型也会发生同样的情况。
我错过了什么?
答案 0 :(得分:1)
经过进一步测试,结果表明上述任何一种格式都能正常工作。我认为它不起作用的原因是我正在查看Elastalert状态中的hits
术语。相反,我应该看看matches
一词。搜索返回了相同数量的hits
,因为查询每次都相同,但似乎matches
项来自ElasticSearch,而不是来自Elastalert本身。
即,Elastalert将完整查询发送到ElasticSearch,然后根据白名单术语对返回的数据进行过滤。 hits
每次都会相同,但匹配取决于白名单。如果将realert设置为零,您将看到生成的警报数与matches
的数量相同。