在 CentOS 上让 Filebeat 与 Logstash 协同工作

一 架构与端口约定
二 安装与目录
sudo yum install filebeatsudo yum install logstashsudo systemctl start|enable filebeat、sudo systemctl start|enable logstashsudo journalctl -u filebeat -f、sudo journalctl -u logstash -f。三 最小可用配置示例
filebeat.inputs:- type: logenabled: truepaths:- /var/log/*.logoutput.logstash:hosts: ["localhost:5044"]input {beats {port => 5044}}filter {# 示例:解析 Apache 访问日志;其他日志请替换为合适的 grok 模式grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}date {match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]}}output {elasticsearch {hosts => ["localhost:9200"]index => "filebeat-%{+YYYY.MM.dd}"}}四 验证与常见问题
sudo systemctl status filebeat、sudo systemctl status logstashsudo journalctl -u filebeat -f、sudo journalctl -u logstash -fnc -vz <logstash_ip> 5044curl -X GET "localhost:9200/_cat/indices?v"curl -X GET "localhost:9200/filebeat-*/_search?pretty"stdout { codec => rubydebug } 观察事件结构。filebeat test config、filebeat test output(可快速发现配置与输出连通性问题)。五 进阶用法
filebeat.inputs:- type: logenabled: truepaths:- /opt/logs/app1/*.logfields:project: "app1"- type: logenabled: truepaths:- /opt/logs/app2/*.logfields:project: "app2"fields_under_root: trueoutput.logstash:hosts: ["logstash:5044"]input { beats { port => 5044 } }filter {if [project] == "app1" {mutate { add_field => { "index_prefix" => "filebeat-app1" } }} else if [project] == "app2" {mutate { add_field => { "index_prefix" => "filebeat-app2" } }} else {mutate { add_field => { "index_prefix" => "filebeat-default" } }}}output {elasticsearch {hosts => ["elasticsearch:9200"]index => "%{[index_prefix]}-%{+YYYY.MM.dd}"}}- type: logenabled: truepaths:- /apps/usr/appdata/logs/*.logmultiline.pattern: '^[[:space:]]+(at|.{3})[[:space:]]'multiline.negate: falsemultiline.match: after