Logstash指定文件路径输出到Elasticsearch自定义索引配置问题
配置问题排查
- 字段引用错误:Filebeat 7.x+版本默认上报的文件路径字段为
[log][file][path],而非你写的[@file][path],你可以先通过stdout输出打印全量事件确认你环境中的路径字段名。 - 匹配逻辑错误:你的需求是路径精确等于
/file/path,但用了in运算符(用于判断子串存在),需改为==实现精确匹配。 - 配置项缺失:自定义索引的elasticsearch输出段漏加
manage_template => false,和原有逻辑保持一致可避免索引模板冲突。 - 语法格式不规范:
if关键字和后续字段引用的中括号之间需加空格,避免Logstash解析配置时报错。
正确配置示例(适配Filebeat 7.x+标准字段)
output { # 精确匹配日志文件路径 if [log][file][path] == "/file/path" { elasticsearch { hosts => ["localhost:9200"] manage_template => false index => "test_file_index-%{+YYYY.MM.dd}" user => some_user password => pass_4_some_user } } else { # 原有逻辑保持不变 if [@metadata][pipeline] { elasticsearch { hosts => ["localhost:9200"] manage_template => false index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" pipeline => "%{[@metadata][pipeline]}" user => some_user password => pass_4_some_user } } else { elasticsearch { hosts => ["localhost:9200"] manage_template => false index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" user => some_user password => pass_4_some_user } } } }
注:如果你环境中的文件路径字段不是
[log][file][path],将上述配置中的对应字段替换为你实际的路径字段即可。
内容的提问来源于stack exchange,提问作者Alik Balm
相关产品推荐
相关产品推荐

