监控系统建设(2)- 三剑客 metrics,logging,tracing

监控系统建设(2)- 三剑客 metrics,logging,tracing
最新回答
ヾ下落不明

2023-07-03 09:02:51

监控系统的“三剑客”——Metrics(指标)Logging(日志)Tracing(链路追踪),是构建可观测性的三大核心维度,三者相辅相成,共同支撑起高效的监控与故障排查体系。

一、Metrics(指标):量化系统的“体温计”
  • 核心特性可聚合性。Metrics是时间序列上的原子型数据,支持求和、平均、百分位等聚合计算,反映系统或服务的宏观状态。

    典型指标:CPU占用率、内存使用量、接口响应时间(P99/P95)、QPS(每秒查询数)、服务GC次数、订单量等。

    存储形式:通常存储在TSDB(时间序列数据库)中,如Prometheus、InfluxDB。

    指标类型(以Prometheus为例):

    Counter:单调递增的计数器(如请求总数)。

    Gauge:瞬时值(如当前内存占用)。

    Histogram/Summary:分布统计(如请求延迟的百分位)。

  • 作用:通过同比、环比分析,快速定位性能瓶颈或异常趋势(如突然升高的错误率)。
二、Logging(日志):记录事件的“黑匣子”
  • 核心特性离散事件。Logging是系统运行过程中发生的具体事件的记录,提供详细的上下文信息。

    典型内容:错误堆栈、请求入参/出参、业务关键事件(如订单创建)。

    存储形式:通常以文件形式存储,通过日志系统(如ELK、Graylog)集中管理。

    关键配置:日志滚动策略(按时间/大小分割)、日志模板(结构化日志)。

  • 作用:在故障排查时提供“最后一公里”的细节(如具体错误原因),但需与Metrics/Tracing关联使用以避免信息过载。
三、Tracing(链路追踪):梳理调用的“地图”
  • 核心特性请求范围。Tracing记录单个请求从发起到完成的完整路径,包括跨服务调用、数据库访问等。

    典型场景:微服务架构中,追踪一个请求如何从网关流向服务A、服务B,最终到达数据库。

    主流体系

    OpenTracing:如Jaeger、Zipkin,基于Google Dapper论文。

    侵入式埋点:如点评的CAT,需修改代码插入追踪点。

  • 作用

    定位慢请求(如某个服务调用耗时过长)。

    排查异常传播路径(如错误如何从服务A传递到服务B)。

四、三者的协同效应
  • Metrics + Logging:通过指标统计错误日志数量(如每分钟500错误),快速定位问题范围。
  • Tracing + Logging:在链路中查看具体请求的日志(如入参、出参、中间方法日志),精准定位故障点。
  • Metrics + Tracing:通过指标发现慢请求,再通过链路追踪分析调用链(如数据库查询过慢)。

五、典型故障排查流程
  1. 告警触发:Metrics指标异常(如错误率突增)。
  2. 指标分析:定位问题时间范围、受影响服务。
  3. 日志查询:查看对应时间段的错误日志,获取具体错误信息。
  4. 链路追踪:复现请求路径,定位慢调用或异常传播点。
  5. 修复验证:根据链路和日志信息修复问题,并通过指标确认恢复。

总结:Metrics提供宏观视角,Logging补充细节,Tracing梳理关系。三者结合,才能构建起“既见森林,又见树木”的可观测性体系。