Files
cs-note/hhs/MS/04-可观测性/README.md
T
2026-05-24 11:42:38 +08:00

79 lines
2.5 KiB
Markdown

---
tags: [microservice, observability]
create time: 2026-04-29 12:04
---
# 可观测性
## 概述
微服务架构下,一个请求可能穿越十几个甚至上百个服务。**排查问题就像在大海捞针**。可观测性通过三大支柱(Metrics、Logging、Tracing)让系统行为变得"可见"。
## 知识体系
```mermaid
graph LR
A["Metrics 监控"] --> C["日志系统"]
B["链路追踪"] --> C
C --> D["告警管理"]
style A fill:#e3f2fd
style B fill:#fff3e0
style C fill:#fce4ec
style D fill:#e8f5e9
```
| # | 主题 | 核心问题 |
|---|------|----------|
| 1 | [[04-可观测性/01-Metrics监控]] | 怎么量化系统的健康度?RED/USE 方法怎么用? |
| 2 | [[04-可观测性/02-日志系统]] | 日志怎么集中收集?结构化日志的最佳实践是什么? |
| 3 | [[04-可观测性/03-链路追踪]] | trace_id 如何贯穿跨服务调用链?OpenTelemetry 怎么用? |
| 4 | [[04-可观测性/04-告警管理]] | 如何设计告警避免疲劳?SLO/Error Budget 怎么做? |
### 为什么需要独立的"可观测性"体系?
```mermaid
flowchart LR
subgraph MONO["单体系统"]
S[Service] --> DB[(DB)]
LOG["同一份日志<br/>一目了然"]
S --> LOG
end
subgraph MICRO["微服务系统"]
REQ("Request") --> GW["Gateway"]
GW --> O1["Order Svc"]
GW --> U1["User Svc"]
O1 --> PAY["Payment Svc"]
O1 --> INV["Inventory Svc"]
PAY --> DB1[(DB)]
INV --> DB2[(DB)]
style O1 fill:#faa
style U1 fill:#faa
style PAY fill:#faa
style INV fill:#faa
end
NOTE["问题:日志分散、链路断裂<br/>传统监控无法回答'这个请求经历了什么'"]
MICRO --> NOTE
```
> [!keypoint] 可观测性与监控的本质区别
>
> **监控系统**告诉你"出事了"(已知未知),**可观测性系统**让你去探究"为什么会出事"(未知未知)。
### 三大支柱
| 支柱 | 回答的问题 | 典型工具 |
|------|-----------|---------|
| **Metrics** | 系统现在健康吗?— 趋势、告警 | Prometheus + Grafana |
| **Logging** | 具体发生了什么?— 历史回溯 | ELK / Loki |
| **Tracing** | 请求在哪一步慢了/失败了?— 链路追踪 | Jaeger / Zipkin |
### 关联笔记
- [[02-服务治理]] — 熔断器可以触发告警,与监控系统联动
- [[05-部署运维/02-Kubernetes]] — K8s Liveness/Readiness Probe 是可观测性的基础
- [[hzh/MS/README.md]] — 完整微服务知识索引