如何将不同应用的日志拆分至各自Elasticsearch索引?
问题:无法将不同应用日志拆分到对应Elasticsearch索引
我正尝试将不同应用的日志拆分至各自对应的索引,以下是我的配置:
filebeat.yml
filebeat.inputs: - type: log enabled: true paths: - "/opt/logs/filebeat_test_1.log" fields: application: "APP_TEST_1" type: "logs1" - type: log enabled: true paths: - "/opt/logs/filebeat_test_2.log" fields: application: "APP_TEST_2" type: "logs2" output.logstash: hosts: ["logstash:5044"]
logstash.conf
input { beats { port => 5044 } } output { elasticsearch { hosts => "es-ingest:9200" index => "%{[fields.application]}-%{[beat.version]}-%{+yyyy.MM.dd}" } }
但我并未得到预期的索引,请问这是将不同应用日志拆分至各自索引的正确方式吗?恳请帮助。
解答
你的整体思路是完全正确的——通过Filebeat给不同日志源打自定义字段标记,再在Logstash中根据这个字段动态生成Elasticsearch索引名,这是日志按应用拆分索引的标准实践之一。没得到预期结果,大概率是几个细节没处理到位,你可以按下面的步骤排查:
1. 先确认自定义字段是否被正确传递到Logstash
默认情况下,Filebeat的fields会被放在fields嵌套字段下(也就是[fields][application]),你在Logstash里用%{[fields.application]}的语法是没问题的,但可以先验证字段是否真的存在:
- 在Logstash配置里临时添加一个stdout输出,查看完整事件结构:
output { stdout { codec => rubydebug } # 临时添加,用来打印事件详情 elasticsearch { hosts => "es-ingest:9200" index => "%{[fields.application]}-%{[beat.version]}-%{+yyyy.MM.dd}" } }
运行Logstash后,观察控制台输出,确认是否存在fields字段,以及application的值是否和你配置的一致。
2. 可选优化:开启fields_under_root简化字段路径
如果你想避免嵌套字段的麻烦,可以在Filebeat的每个input块里添加fields_under_root: true,这样自定义字段会直接放在事件顶层:
filebeat.inputs: - type: log enabled: true paths: - "/opt/logs/filebeat_test_1.log" fields: application: "APP_TEST_1" type: "logs1" fields_under_root: true # 新增此行 - type: log enabled: true paths: - "/opt/logs/filebeat_test_2.log" fields: application: "APP_TEST_2" type: "logs2" fields_under_root: true # 新增此行
对应的Logstash索引配置可以改成更简洁的写法:
index => "%{application}-%{[beat.version]}-%{+yyyy.MM.dd}"
3. 检查Elasticsearch的权限与索引命名规则
- 确保Logstash使用的账号拥有创建索引的权限(比如Elasticsearch的
create_index权限),如果权限不足,日志会无法写入新索引。 - 确认索引名符合Elasticsearch的命名规范:不能包含
\、/、?、"、<、>、|、空格等特殊字符,你的APP_TEST_1这类命名是合法的,但如果实际应用名有特殊字符需要提前处理。
4. 验证Filebeat是否正常采集日志
查看Filebeat的日志(默认路径比如/var/log/filebeat/filebeat.log),确认它已经成功读取到目标日志文件的内容,并且没有出现连接Logstash失败的报错信息。
按上面的步骤排查后,应该就能解决索引拆分的问题了。
内容的提问来源于stack exchange,提问作者Alan C
相关产品推荐
相关产品推荐

