You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash配置双Filebeat输入分文件输出是否正确?求指导

你的配置核心逻辑是正确的,但需要注意几个关键细节

一、配置正确性确认

  1. Filebeat 配置
    你为两个filestream输入分别设置了唯一ID、启用状态、对应标签tag1/tag2以及目标日志路径,这部分配置合规,标签会被正确携带并传递给Logstash。

  2. Logstash 配置

    • Input模块监听5044端口接收Beats数据,符合标准配置;
    • Filter模块的grok匹配、日期解析和字段类型转换逻辑合理,只要你的日志格式完全匹配%{COMBINEDAPACHELOG}模式,这部分就能正常工作;
    • Output模块通过if "tag1" in [tags]的条件判断实现日志分流,核心逻辑完全正确。

二、需要补充/检查的关键点

  • Filebeat 输出配置:你未提供Filebeat的output部分,必须确保已配置Logstash输出,否则日志无法传递到Logstash,示例配置如下:
output.logstash:
  hosts: ["<你的Logstash服务器IP>:5044"]
  • 目录权限检查:确认Logstash进程对/var/central-log目录有读写权限,否则会出现无法写入日志文件的错误。

  • Grok匹配容错:如果日志格式和%{COMBINEDAPACHELOG}不完全匹配,会导致grok解析失败,这类日志会被标记为_grokparsefailure。建议在output里添加else分支处理失败日志,避免丢失:

output {
    if "tag1" in [tags]{
        stdout { codec => rubydebug }
        file { path => "/var/central-log/Output1.log" }
    }
    else if "tag2" in [tags]{ 
        stdout { codec => rubydebug }
        file { path => "/var/central-log/Output2.log" }
    }
    else {
        file { path => "/var/central-log/failed-parsing.log" }
    }
}
  • 标签传递验证:如果遇到分流不生效的情况,可在Logstash的filter模块添加调试字段,确认tags是否正确传递:
filter {
    # 保留原有过滤逻辑
    mutate {
        add_field => { "current_tags" => "%{tags}" }
    }
}

通过stdout的rubydebug输出查看current_tags字段,确认标签是否存在。


内容的提问来源于stack exchange,提问作者Vrops

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:55:17