Ubuntu 上 Filebeat 日志丢失的定位与处理
一 快速自检清单
sudo systemctl status filebeat、filebeat test config -c /etc/filebeat/filebeat.yml。sudo chmod o+r /path/to/file.log。sudo journalctl -u filebeat -f 观察启动、扫描、读取、发送阶段是否有报错或异常。二 常见根因与对应处理
三 关键配置示例
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/java-app/*.log
scan_frequency: 1s
ignore_older: 24h
close_inactive: 5m
close_older: 1h
tail_files: false
harvester_buffer_size: 32768
max_bytes: 10485760
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
# 输出示例(按需选择其一或串联 Logstash/Kafka)
# output.elasticsearch:
# hosts: ["http://es:9200"]
# index: "filebeat-java-%{+yyyy.MM.dd}"
# output.logstash:
# hosts: ["logstash:5044"]
# output.kafka:
# hosts: ["kafka:9092"]
# topic: "filebeat-java"
# required_acks: 1
# compression: gzip
# max_message_bytes: 1000000
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- drop_fields:
fields: ["agent.ephemeral_id", "agent.id", "agent.type", "agent.version", "ecs.version"]
ignore_missing: true
# 稳定性与可观测性
queue.spool:
file:
path: "/var/lib/filebeat/queue"
size: 100GB
age: 48h
disk_limit: 85%
logging.level: info
logging.to_files: true
logging.files:
path: /var/log/filebeat
name: filebeat
keepfiles: 7
permissions: 0644
四 丢失期间的恢复与兜底
sudo systemctl stop filebeat → sudo cp -a /var/lib/filebeat/registry /var/lib/filebeat/registry.bak → sudo rm -rf /var/lib/filebeat/registry → sudo systemctl start filebeat。五 监控与验证
sudo journalctl -u filebeat -f 与 filebeat test config 结果,确保无启动与运行期报错。