Ubuntu 上部署与配置 Filebeat 监控日志
一 安装与准备
- 导入 Elastic GPG 并添加 APT 源(以 8.x 为例,按需替换为 7.x):
- sudo apt update
- sudo apt install -y apt-transport-https wget
- wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor | sudo tee /usr/share/keyrings/elastic-keyring.gpg >/dev/null
- echo “deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main” | sudo tee /etc/apt/sources.list.d/elastic-8.x.list >/dev/null
- sudo apt update && sudo apt install -y filebeat
- 配置文件默认路径:/etc/filebeat/filebeat.yml。修改前建议备份:sudo cp /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.bak。
二 配置输入与输出
- 编辑配置文件:sudo nano /etc/filebeat/filebeat.yml。常用两种输入方式(二选一或混用):
- 经典 log 输入(适合简单场景与旧版本):
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog
- /var/log/auth.log
- /var/log/**/*.log
- filestream 输入(Filebeat 7.14+ 推荐,支持多行、状态恢复等):
- filebeat.inputs:
- type: filestream
id: syslog
enabled: true
paths:
- /var/log/syslog
- /var/log/auth.log
- 常用处理与过滤(可选):
- processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- drop_fields:
fields: [“agent.ephemeral_id”, “agent.id”, “ecs.version”]
- 输出到 Elasticsearch(开发/单机测试):
- output.elasticsearch:
hosts: [“localhost:9200”]
index: “filebeat-%{[agent.version]}-%{+yyyy.MM.dd}”
- 输出到 Logstash(生产常用,便于解析与丰富):
- output.logstash:
hosts: [“logstash.example.com:5044”]
- 安全传输(如启用 TLS,示例):
- output.elasticsearch:
hosts: [“es.example.com:9200”]
ssl.certificate_authorities: [“/etc/filebeat/certs/ca.crt”]
ssl.verification_mode: “certificate”
- 验证配置并启动:
- sudo filebeat test config -e
- sudo systemctl enable --now filebeat
- sudo journalctl -u filebeat -f
三 常见输出目标示例
- 输出到 Logstash(供后续解析与入库):
- output.logstash:
hosts: [“logstash.example.com:5044”]
- 在 Logstash 侧创建管道(示例)接收 Beats 并写入 ES:
- input { beats { port => 5044 } }
- filter { mutate { remove_field => [“host”] } } # 可按需增减
- output { elasticsearch { hosts => [“es.example.com:9200”] index => “app-logs-%{+YYYY.MM.dd}” } }
- 输出到 Redis(作为缓冲队列):
- output.redis:
hosts: [“redis.example.com:6379”]
key: “filebeat”
db: 0
timeout: 5
- 输出到 Kafka(高吞吐场景):
- output.kafka:
hosts: [“kafka1:9092”,“kafka2:9092”]
topic: “filebeat-logs-%{+yyyy.MM.dd}”
codec.json:
pretty: false
escape_html: false
四 模块与多行日志
- 使用内置模块快速采集常见服务日志(自动加载仪表盘与管道):
- 启用模块:sudo filebeat modules enable system nginx mysql
- 生成/应用模板与仪表盘(对接 ES 时):sudo filebeat setup -e
- 模块配置目录:/etc/filebeat/modules.d/,可按需编辑(如 nginx、mysql 日志路径与解析规则)。
- 多行日志(如 Java 堆栈):
- 在对应 input 下增加:
- multiline.type: pattern
multiline.pattern: ‘^[[:space:]]’
multiline.negate: true
multiline.match: after
- 权限与路径注意事项:
- 确保 Filebeat 对日志目录有读取权限(如 /var/log/、/home/Logs/ 等挂载目录)。
- 容器/挂载场景需保证宿主机路径与容器内路径正确映射,且权限一致。
五 验证与运维
- 自检与运行态查看:
- 配置语法:sudo filebeat test config
- 输出连通:sudo filebeat test output
- 服务状态与日志:sudo systemctl status filebeat;sudo journalctl -u filebeat -f
- 索引与生命周期管理:
- Filebeat 不负责“归档”,建议配合 Elasticsearch ILM 做滚动与保留(示例策略可按大小/时间滚动,30 天后删除)。
- 在 Kibana 的 Discover/Stack Management 中查看索引与仪表盘是否正常写入。