Go 日志收集与聚合Loki Promtail Grafana 全攻略日志和 metrics 同等重要。本文讲 Go 项目中如何采集日志并接入 Loki Grafana。一、Go slog 输出importlog/slogimportoslogger:slog.New(slog.NewJSONHandler(os.Stdout,nil))slog.SetDefault(logger)slog.Info(user login,user_id,42)输出{time:2026-07-30T08:00:00Z,level:INFO,msg:user login,user_id:42}二、容器内 Promtail 采集Pod specspec:containers:-name:appimage:myapp-name:promtailimage:grafana/promtailargs:--config.file/etc/promtail/promtail.yamlvolumeMounts:-name:logsmountPath:/var/log-name:promtail-configmountPath:/etc/promtailpromtail.yamlserver:http_listen_port:9080positions:filename:/tmp/positions.yamlclients:-url:http://loki:3100/loki/api/v1/pushscrape_configs:-job_name:appstatic_configs:-targets:[localhost]labels:job:myapp__path__:/var/log/messages三、JSON 解析Promtail 用pipeline_stages解析 JSONscrape_configs:-job_name:appstatic_configs:-targets:[localhost]labels:job:myapp__path__:/var/log/*.logpipeline_stages:-json:expressions:level:levelmsg:msgtrace_id:trace_id四、Loki 查询curl-Ghttp://loki:3100/loki/api/v1/query\--data-urlencodequery{jobmyapp}\--data-urlencodetime2026-07-30T08:00:00Z五、Grafana 关联 Trace IDdashboard 添加 Loki 面板用{trace_idxxx}直接跳转 Tempo。六、企业实战高吞吐量日志单 Pod print 直接打 stdout/stderrPromtail sidecar 收集不持久保存非生产日志七、Fluent Bit 替代方案-input:type:tailpath:/var/log/app.log-output:type:lokihost:lokiport:3100八、ELK 仍是参考重型方案logstash 收集 → ES 存储 → Kibana 看板轻量方案Promtail → Loki → Grafana九、企业实战日志收集架构app stdout → docker driver → node agent → Kafka → Logstash → ES → Kibana适合复杂监控。十、SLF 在 Go 中的应用importgithub.com/sirupsen/logruslog.SetFormatter(log.JSONFormatter{})log.SetOutput(os.Stdout)log.Info(user login)十一、踩坑清单大块 JSON查询变慢敏感数据打印密码 / token 屏蔽日志时间与系统时间用 UTC十二、未来AI 异常日志自动归类关联 RCA 流程十三、总结与展望日志体系是 SRE 的第一手材料。Go Promtail Loki Grafana 是当下一套标准工具链。未来可观测性平台统一 OpenTelemetryAI 自动异常检测。十四、参考文献Promtail 文档Loki 文档Grafana 文档