应用程序监控与可观测性
监控:时刻关注您的应用程序
监控是您了解应用程序运行状况的方式。当一切正常时,监控会告诉您。当出现问题时,监控会告诉您发生了什么、何时发生以及为什么发生。没有监控,您就像在盲目飞行——只有在用户投诉时才会发现问题。
可观测性的三大支柱
可观测性建立在三种数据类型之上。指标是随时间变化的数值测量——每秒请求数、错误率、内存使用量。日志是事件的记录——每个请求、每个错误、每个重要操作。追踪跟踪单个请求在多个服务中的路径,显示时间花费在哪里。
每种数据类型回答不同的问题。指标告诉您出了问题。日志告诉您发生了什么。追踪告诉您问题发生在哪里。它们共同为您提供系统健康状况的完整图景。
指标:健康仪表盘
最重要的跟踪指标是四个黄金信号:延迟(请求耗时)、流量(处理的请求数)、错误(失败的请求数)和饱和度(资源接近容量的程度)。这些让您快速了解系统健康状况。
Prometheus 是收集指标最流行的工具,Grafana 是可视化指标的标准。您设置导出器从服务器、数据库和应用程序收集指标,Prometheus 定期抓取它们。Grafana 将这些数据转化为仪表盘和告警。
日志:一切记录
日志是出现问题时的查看位置。应用程序中的每个重要事件都应生成一个日志条目,包含时间戳、严重级别和足够的上下文以理解发生了什么。结构化日志——日志是带有明确定义字段的 JSON 对象——使其可搜索和可分析。
ELK 栈(Elasticsearch、Logstash、Kibana)是最常见的日志管理系统。Logstash 收集和处理日志,Elasticsearch 为快速搜索建立索引,Kibana 提供用于探索的 UI。一个更简单的替代方案是 Loki,它与 Grafana 配合使用,设置更简单。
告警:知道何时醒来
监控的目的是在需要关注时向您发出告警。但并非每个异常都需要在凌晨 3 点叫醒某人。仔细定义告警规则:高错误率、高延迟、磁盘空间不足、证书即将过期。每个告警都应清楚描述问题所在以及如何修复。告警过多会导致告警疲劳,人们会忽略它们。
真实用户监控
服务器指标告诉您基础设施的情况,但无法告诉您用户的真实体验。真实用户监控(RUM)从用户浏览器收集数据——页面加载时间、交互延迟、JavaScript 错误。Google 的 Chrome 用户体验报告和 Datadog RUM 等商业工具让您能够实时了解用户体验。
