27|可观测性:Metrics、Logging、Tracing,让你的Go服务不再是黑盒(中)

Go 应用的 Metrics:量化系统状态与趋势
- 深入了解
- 翻译
- 解释
- 总结

1. Prometheus是一个开源的监控和告警工具包,基于Pull模型,通过HTTP从目标的`/metrics`端点拉取数据,而在Go应用中,开发者可以通过使用官方的`prometheus/client_golang`库来暴露Prometheus格式的Metrics。 2. VictoriaMetrics是一款开源的高性能、高性价比的时间序列数据库和监控解决方案,与Prometheus生态系统高度兼容,具备优异的数据摄入和查询性能,低资源消耗,易于部署和水平扩展,支持Push和Pull模型,成为一个灵活且高效的监控解决方案。 3. Grafana是一个开源监控数据可视化和分析平台,以其强大的图表能力、灵活的仪表盘定制、丰富的数据源支持以及美观的界面而著称,可以连接多种数据源,包括Prometheus、VictoriaMetrics等。 4. 高质量的日志是故障排查、行为审计和深入理解系统行为不可或缺的“证据”,应具备结构化格式、多种日志级别、丰富的上下文信息、可配置的输出目标与收集策略、性能考量等核心要素。 5. 在Go应用中使用`log/slog`输出结构化、富含上下文的JSON日志到标准输出,以及如何使用Filebeat作为日志收集代理,从Go应用容器的stdout收集这些日志,并配置Filebeat将日志直接发送到VictoriaLogs的Elasticsearch兼容API。 6. 选择哪种日志收集、存储和分析方案,是一个需要根据团队规模、数据量、查询需求、运维能力、成本预算以及与现有监控体系的集成偏好等多种因素综合权衡的决策。 7. 日志系统应服务于整体可观测性目标,具备可配置的输出目标与收集策略,以确保高效的日志管理,同时不应成为应用的性能瓶颈。 8. 在可观测性的“黄金三角”中,日志扮演着记录离散事件、提供详细上下文的关键角色,为了让Go应用的日志能够被高效地收集、存储、索引,并能与其他遥测数据(如TraceID)轻松关联,需要在应用层面遵循一系列最佳实践。 9. Go应用输出高质量的、结构化的、富含上下文的日志,是决定整个日志体系能否发挥最大价值的源头。
《TonyBai · Go 语言进阶课》,新⼈⾸单¥59