ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

system-design-101 中的可观测性三支柱:日志(Logging)、追踪(Tracing)与指标(Metrics)实战指南

system-design-101 中的可观测性三支柱:日志(Logging)、追踪(Tracing)与指标(Metrics)实战指南 后端文档教程【免费下载链接】system-design-101Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.项目地址https://gitcode.com/GitHub_Trending/sy/system-design-101点击查看免费下载可观测性Observability是分布式系统进入生产环境后的第一刚需当服务从单体拆成微服务一次用户请求会横跨 API 网关、负载均衡器、多个服务和数据库问题定位与性能瓶颈分析都依赖系统能否被看清。本文基于仓库中的 logging-tracing-metrics.md 讲解可观测性的三大支柱——日志、追踪、指标——并结合仓库内 ELK Stack、Prometheus 采集模型等相关文档帮助你掌握用什么工具、按什么架构、解决什么问题的完整落地思路读完即可为面试或实际系统搭建一条可复用的可观测性技术栈。为什么说日志、追踪、指标是可观测性的三大支柱在分布式系统中单一组件无法被外部探测时就处于不可观测状态而日志、追踪、指标正是从三个不同维度让系统内部状态变得可感知的三类数据。它们各有分工、互为补充日志Logging记录系统中发生的离散事件回答发生了什么追踪Tracing是请求级别的回答一次请求到底走了哪条链路、在哪一步慢了指标Metrics是系统状态的可聚合量化信息回答系统的 QPS、延迟、容量趋势如何。仓库中的 must-know-system-design-building-blocks.md 在Observability and Resiliency一节明确把「metrics、logging、tracing」列为一组核心构建块说明这三大支柱是任何规模化系统设计都绕不开的基础组件。而在生产级应用里日志与监控同样被列为必备要素可参考 10-essential-components-of-a-production-web-application.md 与 9-essential-components-of-a-production-microservice-application.md 中的对应条目。三者并不是同一件事的三种叫法而是互补关系日志给出事件细节追踪串起请求链路指标给出全局量化视图。成熟的实践通常用一套统一的框架如 OpenTelemetry把三者收拢到一起这也是下文要展开的内容。日志Logging记录离散事件量最大、最基础日志的本质与形态日志记录系统中的离散事件例如一条 HTTP 请求的到达请求行、来源 IP、User-Agent、状态码一次数据库访问的执行SQL 语句、耗时、命中索引与否一次第三方 API 调用的成功或失败一次定时任务的启停与异常堆栈。日志是三大支柱中数据量最大的一类尤其在流量高峰期海量日志会持续写入存储系统。因此日志平台的架构设计核心是如何低成本地收集、索引、检索海量文本。用 ELK Stack 搭建日志分析平台原文明确指出ELKElasticsearch-Logstash-KibanaStack 常用于构建日志分析平台。仓库中另有一篇专题文档 what-is-elk-stack-and-why-is-it-so-popular-for-log-management.md 详细拆解了 ELK 的组成与工作流可与之对照阅读Elasticsearch全文搜索与分析引擎底层核心是 Apache Lucene负责日志的索引与存储Logstash从各类边缘采集器收集数据做转换后发送到目标端如 Elasticsearch进行进一步处理或可视化Beats为解决边缘数据接入的规模化问题而推出的轻量级代理安装在边缘主机上采集并运送日志。例如 Filebeat/Winlogbeat 处理日志文件Packetbeat 处理网络流量Kibana可视化层用户基于 Elasticsearch 中的数据做搜索、分析与仪表盘展示。其典型工作流为Beats 采集数据 → 发送给 Logstash 做聚合与转换数据量极大时可引入 Kafka 消息队列解耦生产与消费→ Logstash 写入 Elasticsearch 完成索引与存储 → Kibana 基于 Elasticsearch 提供搜索工具与仪表盘。关于 Elasticsearch 在日志与事件数据分析上的更多能力如近实时查询、异常检测、SIEM 安全事件分析可参考 top-6-elasticsearch-use-cases.md。标准化的日志格式是海量检索的前提日志量越大检索就越依赖格式规范。原文强调我们通常为不同团队定义标准化的日志格式以便在海量日志中利用关键词检索。实践中标准化日志格式通常包含以下公共字段字段含义示例时间戳事件发生时间建议统一为 ISO 8601并带时区日志级别DEBUG / INFO / WARN / ERROR服务名 / 实例 ID明确日志来源便于按服务过滤请求 ID / Trace ID关联单次请求链路串起上下游日志事件类型 / 业务动作如request.in、db.query、payment.created结构化载荷JSON 形式的上下文信息参数、耗时、错误码等统一格式带来两个直接收益一是搜索引擎可以做字段级索引与精确过滤二是跨团队排查时同一套检索语法如service_name:payment AND level:ERROR可以复用。强烈建议输出结构化 JSON 日志而非自由文本这样在 Elasticsearch / Loki 等系统中即可按字段聚合分析。追踪Tracing请求级别的链路可视化定位瓶颈的关键为什么需要追踪单体时代一次请求的处理路径在代码里一目了然微服务化之后用户请求会依次经过 API 网关、负载均衡器、服务 A、服务 B、数据库任何一个环节变慢都会拉高整体响应时间。追踪系统的价值就在于把一次跨服务的请求在时间轴与调用链上完整还原从而快速定位瓶颈到底在哪一个服务、哪一次调用上。原文给出的链路示例即用户请求 → API 网关 → 负载均衡器 → 服务 A → 服务 B → 数据库。这条链路上的每一跳都会记录下开始时间、结束时间、父子关系最终在追踪系统中以瀑布图waterfall形式可视化一眼看出耗时主要花在哪一段。统一框架OpenTelemetry原文特别提到我们使用 OpenTelemetry 来展示典型架构它在单一框架内统一了三大支柱。这是 2024 年前后可观测性领域最重要的演进趋势OpenTelemetry 提供统一的 SDK 与 API让应用代码以相同方式产生 traces、metrics 与 logs通过统一的采集器Collector接收三类信号再转发给后端如 Jaeger、Zipkin 用于追踪Prometheus 用于指标Elasticsearch/Loki 用于日志引入 Trace ID 贯穿请求全链路使日志、指标、追踪可以按同一请求关联查询形成三大支柱归一的实践。在系统设计中OpenTelemetry 的引入方式通常是各服务通过 SDK 自动或手动埋点 → 导出到 Collector → Collector 根据规则路由到对应后端存储与展示系统。追踪要解决的关键指标追踪不仅能还原链路还提供了一组可直接用于定位瓶颈的指标Span 耗时分布每一跳的耗时数据库查询、外部调用、内部处理分别占多少错误率分布哪些服务的哪些 Span 频繁报错依赖拓扑服务之间的调用关系与强弱依赖识别出关键路径上的慢邻居。结合仓库中的 which-latency-numbers-should-you-know.md 可以建立对一次内存访问、一次磁盘读、一次网络往返、一次数据库查询等延迟量级的直觉从而在追踪瀑布图中判断哪一跳的耗时属于异常。指标Metrics可聚合的量化信息驱动告警与可视化指标的类型指标是可聚合的系统量化信息常见类型包括服务 QPS每秒请求数反映负载与容量水位API 响应性 / 服务延迟如 P50 / P99 分位延迟反映性能与体验资源使用率CPU、内存、磁盘、网络业务指标订单量、转化率、支付成功率等。与日志的离散事件不同指标通常是数值序列 时间维度的数据天然适合写入时序数据库Time Series DatabaseTSDB。指标采集的典型架构原文描述的指标链路是原始数据记录在 InfluxDB 等时序数据库中 → Prometheus 拉取数据并根据预定义告警规则做转换 → 数据送往 Grafana 展示或送往 Alertmanager 发出邮件、短信、Slack 通知告警。这条链路清晰划分了四层职责存储层InfluxDB、Prometheus 自带的 TSDB 等时序数据库承载原始指标采集层Prometheus 通过拉取pull模式周期性抓取各服务暴露的指标端点规则层基于预定义的告警规则如QPS 阈值、P99 200ms对指标做转换与判定展示与通知层Grafana 提供仪表盘可视化Alertmanager 负责将触发规则发送到邮件、短信或 Slack。关于采集层的两种模型push 与 pull仓库中的 push-vs-pull-in-metrics-collecting-systems.md 给出了详细对比Prometheus 采用的 pull 模型中采集器需要知道全部服务端点清单通常借助 Kubernetes、Zookeeper 等服务发现机制动态获取端点包括拉取间隔、IP、超时与重试参数等元数据服务侧则通过引入客户端库暴露/metrics端点供采集器周期性拉取。这套机制保证了在大规模、频繁增删节点的环境下采集器不会漏掉任何新服务。告警链路从指标到通知完整告警链路的落地要点定义规则在 Prometheus 规则文件中写明触发条件表达式、持续时间如持续 5 分钟与严重级别路由分发Alertmanager 按标签路由到不同接收者邮箱、短信、Slack 等可视化辅助Grafana 仪表盘帮助值班人员理解告警背后的趋势避免只看瞬时值误判。仓库中的 cloud-monitoring-cheat-sheet.md 对监控体系做了系统梳理覆盖数据采集、存储、分析、告警、可视化、报告与合规、自动化、集成与反馈闭环等环节可作为搭建指标平台时的查漏清单三大云厂商与开源/第三方工具各有对应组件设计时应先明确每个环节的归属。三支柱的协同一次故障排查的完整视角将三者放在一起才能真正发挥可观测性的价值。以用户反馈支付变慢为例指标层先暴露问题Grafana 上支付服务的 P99 延迟突然升高Prometheus 告警触发Alertmanager 通知到 Slack追踪层定位范围在 OpenTelemetry / Jaeger 中按 Trace ID 查看该时段请求的链路瀑布图发现耗时集中在支付服务 → 数据库这一段日志层确认根因按服务名 时间窗口 Trace ID 在 ELK 中检索日志看到数据库慢查询与锁等待的具体语句从而确认根因。这个协同过程正体现了 OpenTelemetry 统一框架的意义同一个 Trace ID 贯穿指标、追踪与日志三个视图可以相互跳转。对于分布式系统的设计与排障建议把日志、追踪、指标作为一套整体方案规划而不是各自独立选型——这也是本仓库将 logging-tracing-metrics.md 归入 devops-cicd 分类、并与 must-know-system-design-building-blocks.md 的 Observability 构建块呼应的原因。小结可观测性技术栈速查支柱回答的问题数据特征典型工具日志 Logging发生了什么离散事件、海量文本ELK StackElasticsearch Logstash Beats Kibana追踪 Tracing请求走了哪条链路、瓶颈在哪请求级 Span、调用关系OpenTelemetry、Jaeger、Zipkin指标 Metrics系统状态趋势如何可聚合数值序列、时间维度InfluxDB / Prometheus、Grafana、Alertmanager设计建议归纳如下日志必须标准化格式、结构化输出为关键词检索和字段聚合打好基础追踪要在所有入口统一注入 Trace ID让链路贯穿网关、负载均衡器、服务与数据库指标要明确采集模型pull/push、存储选型TSDB与告警规则并把可视化与通知纳入同一体系最终以 OpenTelemetry 等统一框架收敛三类信号实现按请求关联三视图的完整可观测性。本文围绕的原始文档为 logging-tracing-metrics.md相关的 ELK 详解、指标采集模型、监控体系清单与延迟基准均可继续在仓库 guides 目录中查阅。赞分享后端文档教程【免费下载链接】system-design-101Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.项目地址https://gitcode.com/GitHub_Trending/sy/system-design-101点击查看免费下载相关推荐InVesalius革命性3D医学影像重建软件轻松实现从2D切片到立体模型的完整指南InVesalius革命性3D医学影像重建软件轻松实现从2D切片到立体模型的完整指南 InVesalius是一款功能强大的开源3D医学影像重建软件能够将C医疗健康图像处理图形学桌面应用Apache APISIX 可观测性实战日志、指标与链路追踪三大支柱配置全解Apache APISIX 可观测性实战日志、指标与链路追踪三大支柱配置全解 导读 本指南围绕 API 网关 Apache APISIX 的 可观测性ObsAPI网关后端云原生微服务CActor监控与可观测性实战Metrics指标与Tracing全链路追踪指南CActor监控与可观测性实战Metrics指标与Tracing全链路追踪指南 CActor 是仓语言生态中的高性能 Actor 框架本指南带你快速上手它的后端并发编程分布式上一篇如何在5分钟内快速上手无名杀新手必看的开源卡牌游戏配置指南下一篇精通SketchUp STL插件5步实现3D打印模型完美导出的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表