Go日志分析系统-ELK实时日志监控
1: 概述与适用范围
- 本文搭建一套可在单台开发机运行的日志采集与检索环境,完整链路为:
Go 应用 -> JSON 日志文件 -> Filebeat -> Logstash -> Elasticsearch -> Kibana; - Go 应用负责逐行写入结构化 JSON,Filebeat 负责增量读取文件,Logstash 负责接收和转发,Elasticsearch 负责存储与检索,Kibana 负责可视化查询;
- 教程面向 Go 开发者和初级 DevOps 工程师,重点是先跑通一个可观察、可排障的最小闭环;
- 本文的 Compose 配置关闭了 Elastic 安全认证,仅允许用于本机学习,禁止直接暴露到公网或照搬到生产环境;
- 原文参考:Go日志分析系统-ELK实时日志监控。
2: ELK/Filebeat 组件职责
| 组件 | 职责 | 本文端口 |
|---|---|---|
| Go 应用 | 生成逐行 JSON 业务日志 | 无 |
| Filebeat | 追踪文件读取位置,将新增日志发送给 Logstash | 无 |
| Logstash | 通过 Beats input 接收事件,并写入指定索引 | 5044,监控 API 9600 |
| Elasticsearch | 存储、索引和查询日志 | 9200 |
| Kibana | 创建 Data View,使用 KQL 检索日志 | 5601 |
- Filebeat 比直接让 Go 应用调用 Elasticsearch 更容易处理断线重试、读取进度和日志轮转;
- Logstash 在这个入门示例中只做轻量转发。后续需要字段清洗、脱敏或路由时,可以在 pipeline 中增加 filter;
- Elasticsearch 和 Kibana 比较消耗内存,启动前应确认 Docker 可用资源充足。
3: 数据流与示例目录
数据流如下: