运维与后端工程师离不开日志系统,我曾构建过一套完整的日志链路:
APP → Filebeat → Kafka → Logstash → ES → Kibana
秒级可查,成本不高。
一、为什么要独立日志系统?
- Docker 日志丢失风险
- 容器自动重启导致日志被覆盖
- 多实例下无法查看全量日志
- grep 查日志效率低
二、Filebeat 超好用
配置示例:
lua
filebeat.inputs:
- type: log
paths:
- /var/log/service/*.log
output.kafka:
hosts: ["kafka01:9092"]
topic: "service-log"
自动收集日志 → 推到 Kafka。
三、Logstash 处理与过滤
ini
filter {
json {
source => "message"
}
date {
match => ["timestamp", "ISO8601"]
}
}
把日志转成结构化 JSON。
四、ES 查询灵活强大
常见查询:
json
{ "query": { "match": { "level": "error" } } }
可以基于:
- traceId
- userId
- serviceName
- level
- message
实现高级搜索。
五、最终效果
- 日均日志 50GB
- 秒级查询
- 可视化搜索报错
- 结合告警系统非常高效
六、总结
日志系统是后端系统稳定性的基石:
- Filebeat 轻量
- Kafka 解耦
- ES 高性能查询
- Kibana 可视化强大
如果你要搭可观测性系统,从日志开始最简单、收益最大。