本文档概述了在生产环境中部署的 Node.js 应用程序中实现监控和可观测性的最佳实践。它涵盖了关键指标跟踪、日志记录策略、监控工具以及提供应用程序健康状况和性能全面可见性的可视化方法。有关实现诊断维护端点的信息,请参阅维护端点。有关实现事务 ID 以进行日志关联的详细信息,请参阅日志事务 ID。
监控和可观测性是生产就绪的关键方面,它们使您能够检测问题、理解系统行为并做出数据驱动的应用程序决策。有效的监控需要跟踪硬件级指标和应用程序特定指标。
| 类别 | 基本指标 | 为什么很重要 |
|---|---|---|
| 硬件 | CPU 使用率、服务器 RAM | 指示资源限制 |
| Node.js 进程 | 进程 RAM(保持在 1.4GB 以下)、进程重启 | 显示 Node 特定的健康问题 |
| 应用程序 | 错误率、响应时间、吞吐量 | 指示用户体验和可靠性 |
| 商业 | 交易成功率、API 端点使用情况 | 反映业务影响 |
| 饱和度 | 队列长度、连接池利用率 | 显示系统容量限制 |
来源:sections/production/monitoring.md7-9
下面是一个高层架构图,展示了监控和可观测性组件在典型的 Node.js 应用程序中的交互方式。
来源:sections/production/monitoring.md7-9 sections/production/smartlogging.md7-13 sections/production/delegatetoproxy.md5-7
有效的日志记录是可观测性的基础。智能日志记录超越了简单的控制台语句,提供结构化、可搜索的日志,可以进行聚合和分析。
来源:sections/production/smartlogging.md7-13
来源:sections/production/smartlogging.md29-37
有几种监控 Node.js 应用程序的方法,每种方法都有不同的优势,适用于可观测性的不同方面。
| 解决方案类型 | 示例 | 优势 | 局限性 |
|---|---|---|---|
| 云服务商工具 | AWS CloudWatch、Google StackDriver | 出色的硬件指标、开箱即用的仪表板 | 有限的应用程序级洞察 |
| 基于日志的解决方案 | Elastic Stack、Graylog | 非常适合应用程序行为、全文搜索 | 需要额外的硬件指标设置 |
| APM 工具 | New Relic、Datadog、AppDynamics | 全面的可见性、预构建的仪表板 | 商业解决方案,可能成本高昂 |
| 开源监控 | Prometheus + Grafana | 高度可定制,以指标为中心 | 需要更多设置和维护 |
来源:sections/production/monitoring.md7-9
云服务商的监控解决方案通常需要应用程序级指标的补充。这是增强云监控的典型架构。
来源:sections/production/monitoring.md9
有效的监控不仅需要收集数据,还需要以清晰的方式可视化数据,使模式和异常显而易见。
Grafana 或 Kibana 等可视化工具可用于创建综合仪表板,这些仪表板可以整合来自多个来源的数据。
来源:sections/production/monitoring.md25-27
监控应与您的基础设施组件集成,以提供应用程序健康状况的完整图景。
Nginx 等反向代理可以配置为记录访问数据并提供一线监控。
来源:sections/production/delegatetoproxy.md5-7
来源:sections/production/monitoring.md7-9 sections/production/smartlogging.md7-13 sections/production/delegatetoproxy.md5-7
来源:sections/production/monitoring.md7-9 sections/production/delegatetoproxy.md5-7
有效的监控和可观测性对于维护生产环境中可靠的 Node.js 应用程序至关重要。通过实施结构化日志记录、跟踪所有系统级别的关键指标以及有效可视化数据,您可以全面了解应用程序的行为,快速识别问题,并做出数据驱动的优化决策。