基于Elastic Stack 6.0.2处理不定期生成文件的方案咨询
Elastic Stack 6.0.2工具选择建议:Filebeat优先,Logstash按需补充
针对你的两个需求——Python生成的JSON文件实时存入Elasticsearch,以及自定义.klm文件创建时记录文件名,我来拆解分析最适合的工具方案:
优先选Filebeat:轻量入门,满足基础需求
Filebeat是Beats家族里专门做文件收集的轻量工具,资源占用极低,配置简单,完全能覆盖你当前的需求,非常适合入门。
处理JSON文件的配置示例
你可以直接让Filebeat监控JSON文件目录,自动解析JSON内容并写入ES,不需要经过Logstash:
filebeat.inputs: - type: log paths: - /path/to/your/json/output/*.json # 替换成你的JSON文件路径 json.keys_under_root: true # 把JSON字段直接作为ES文档的顶级字段 json.add_error_key: true # 解析失败时记录错误信息 output.elasticsearch: hosts: ["your-es-server:9200"] # 替换成你的ES地址 index: "json-generated-files-%{+yyyy.MM.dd}" # 按日期分索引,方便管理
记录.klm文件名的配置示例
对于.klm文件,我们只需要捕获文件的元数据(文件名、路径、创建时间等),不需要读取文件内容,用Filebeat的处理器就能实现:
filebeat.inputs: - type: log paths: - /path/to/your/klm/output/*.klm # 替换成你的.klm文件路径 close_removed: true # 文件被移除后自动关闭监控,避免资源浪费 processors: - drop_fields: fields: ["message"] # 丢弃文件内容,只保留元数据 - add_fields: fields: file_category: "klm-custom" # 给这类文件加个标记,方便后续筛选 output.elasticsearch: hosts: ["your-es-server:9200"] index: "klm-file-records-%{+yyyy.MM.dd}"
这样ES里就会存储每个.klm文件的文件名、存储路径、创建时间等关键信息,完全满足你“记录文件名”的需求。
什么时候用Logstash?
如果之后你需要做更复杂的处理——比如对JSON字段做重命名、过滤无效数据,或者对.klm文件有内容解析需求,再引入Logstash就好。Logstash功能更强大,有丰富的过滤器插件,但它是Java开发的,资源占用比Filebeat高,没必要在基础需求阶段就用上。
如果要搭配使用,架构是Filebeat -> Logstash -> Elasticsearch:Filebeat负责收集文件,Logstash做处理,最后输出到ES。这里给个简单的Logstash配置示例:
input { beats { port => 5044 # 监听Filebeat发送的数据 } } filter { # 处理JSON文件 if [file][extension] == "json" { json { source => "message" remove_field => "message" } # 这里可以加更多自定义处理,比如字段重命名 mutate { rename => { "old_field_name" => "new_field_name" } } } # 处理.klm文件 else if [file][extension] == "klm" { mutate { remove_field => "message" add_field => { "file_category" => "klm-custom" } } } } output { elasticsearch { hosts => ["your-es-server:9200"] index => "%{[file][extension]}-files-%{+yyyy.MM.dd}" # 按文件类型分索引 } }
然后修改Filebeat的输出配置,指向Logstash即可。
入门必注意的点
- 版本严格匹配:你用的是Elastic Stack 6.0.2,所以Filebeat、Logstash必须和ES版本完全一致,否则会出现兼容性问题。
- 权限配置:确保Filebeat/Logstash进程有读取文件目录的权限,以及连接ES的权限。
- 小范围测试:先拿单个测试文件验证配置是否生效,没问题再扩大到整个目录。
- 状态监控:用Kibana的Monitoring模块可以查看Filebeat/Logstash的运行状态,方便排查问题。
总结:就你当前的需求而言,Filebeat是最适合的选择——轻量、易配置,完全能满足需求,是入门Elastic Stack文件收集的最优解。
内容的提问来源于stack exchange,提问作者m.alsioufi
相关产品推荐
相关产品推荐

