本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除
系统的可观察性是系统设计的重要一环。不可观察的系统无法度量、无法监控、无法改进。
日志、追踪和度量是系统可观测性的三大支柱。
下图显示了它们的定义和典型架构。
日志记录系统中的离散事件。例如,我们可以将收到的请求或对数据库的访问记录为事件。它的工作量最大。通常使用 ELK(Elastic-Logstash-Kibana)栈来构建日志分析平台。我们通常会定义一种标准化的日志格式,供不同的团队实施,以便在搜索海量日志时利用关键字。
追踪通常以请求为范围。例如,用户请求会经过 API 网关、负载均衡、服务 A、服务 B 和数据库,这些都可以在追踪系统中可视化。这在我们试图找出系统瓶颈时非常有用。我们使用 OpenTelemetry 展示典型的架构,它将 3 个支柱统一在一个框架中。
度量指标通常是系统中可汇总的信息。例如,服务 QPS、API 响应速度、服务延迟等。原始数据记录在 InfluxDB 等时间序列数据库中。Prometheus 根据预定义的警报规则提取数据并转换数据,然后将数据发送到 Grafana 以供显示,或发送到报警管理服务,由其发送电子邮件、短信或 Slack 通知或警报。