ElastAlert查询返回0 hits无法触发邮件告警问题求助
0 hits 问题排查点
- term查询匹配逻辑问题:Elasticsearch中
term是精确匹配,若你的log字段为text类型,写入时会被分词为独立词汇,直接用term查询"Performed Task"整串无法命中分词后的结果。建议将filter替换为match_phrase查询:
filter: - match_phrase: log: "Performed Task"
若log字段是keyword类型,请确认日志中该字段的取值和你填写的"Performed Task"大小写、空格完全一致,没有字符出入。
- 时区不匹配问题:测试日志显示ElastAlert查询的是UTC时区的时间范围,若你的日志
@timestamp字段使用的是东八区(北京时间)等非UTC时区,会出现查询时间范围和日志实际时间不匹配的情况。请检查ElastAlert配置中的timezone参数,确保和日志写入的时区对齐。 - 索引与数据验证问题:先在Kibana开发工具中执行以下查询,确认对应索引下确实存在符合条件的日志:
GET index-*/_search { "query": { "match_phrase": {"log": "Performed Task"}, "range": { "@timestamp": { "gte": "now-1m", "lte": "now" } } } }
若该查询返回结果为空,说明对应时间范围内无匹配日志,和ElastAlert配置无关。
- 查询时间范围过小问题:当前规则配置的
timeframe为1分钟,若测试时最近1分钟内没有生成对应日志,自然无法命中。你可以临时把timeframe调整为hours: 1,再运行测试命令验证规则逻辑是否正常。 - ES访问权限问题:确认你配置的
es_username账号拥有index-*索引的读权限,权限不足时ES也会返回空结果而不抛出权限错误。
内容的提问来源于stack exchange,提问作者Akanksha Pandey
相关产品推荐
相关产品推荐

