建设目标
-
提高系统稳定性
-
提升发现&分析问题的能力
-
提高系统可理解程度
-
降低成本
-
助力决策
理论体系
理论体系
监控场景
业务监控
数字体验监控DEM+前端监控
APM
基础监控
其他
云原生监控
LLM/AI
可观测数据支柱
Mertric
Logs
Trace
应用场景
应用场景
异常检测
专家规则
AI
关联分析
指标
调用
事件
根因定位
下钻分析
全链路根因分析
影响面分析
服务治理
架构合理性
调用合理性
资源合理性
熔断降级
运营评估
容量评估
运营报告
用户行为分析
变更分析
变更异常检测
变更诊断
性能优化
性能指标分析
指定并实施优化策略
持续分析
技术架构
技术架构
存储层
数据缓冲
数据丢失
多数据源
分析层
实时流处理
实时批处理
输出层
错误告警(通知、聚合、抑制)
统计报告(邮件报表、质量分析、数据统计)
可视化
多模态
多端
技术指引
技术指引
基础知识
微服务框架
配置中心
name-server
rpc
无侵入采集
日志
SNMP
eBPF
技术选型
Metric
Prometheus
InfluxDB/VM
Thanos
OpenTelemetry
Trace
skywalking
Jaeger
Zipkin
OpenTelemetry
Log
ELK
loki
filebeta
Storage
ES
Prome/VM
OLAP
ClickHouse
Apache Doris
HBase
NoSQL
LGTM
loki
grafana
Tempo
Mimir
Profiling
目标对齐
SLO
SLA
健康评分
小结
希望本文对你有所帮助,如果喜欢,欢迎点赞收藏转发一波。
我是老马,期待与你的下次相遇。
chat
详细介绍一下分布式系统的可观测如何做?
分布式系统的可观测性是一个复杂但非常重要的主题,因为分布式系统往往由多个独立的服务和组件组成,系统的状态和行为变得难以直接观察和理解。
可观测性可以帮助开发者和运维人员更高效地监控、调试和优化分布式系统。
以下是分布式系统中实现可观测性的关键方面:
1. 核心三大支柱
1.1 日志 (Logs)
日志是系统行为的记录,提供详细的事件和上下文。
- 特性:
- 可追溯性:帮助重现系统状态。
- 结构化日志:推荐使用 JSON 或其他结构化格式,方便解析和检索。
- 关键字段:应包含时间戳、服务名称、上下文信息(如请求 ID)。
- 工具:
- 日志收集:
Logstash
、Fluentd
。 - 存储与分析:
Elasticsearch
、Splunk
、Loki
。 - 可视化:
Kibana
、Grafana
。
- 日志收集:
1.2 指标 (Metrics)
指标是系统的关键性能和健康状态的数值化表示。
- 特性:
- 聚合性:实时捕获并可被聚合。
- 粒度:可以是系统级别(CPU、内存)或业务级别(订单成功率)。
- 维度化:支持根据标签(如服务名称、版本)进行分组和过滤。
- 工具:
- 数据收集:
Prometheus
、StatsD
。 - 存储与分析:
InfluxDB
、Graphite
。 - 可视化:
Grafana
。
- 数据收集:
1.3 分布式追踪 (Tracing)
追踪展示了分布式系统中单个请求的流动路径和性能数据。
- 特性:
- 全链路:追踪请求从入口到各服务的调用路径。
- 延迟分析:识别慢路径和性能瓶颈。
- 唯一标识:使用
Trace ID
和Span ID
。
- 工具:
- 分布式追踪:
Jaeger
、Zipkin
、OpenTelemetry
。 - 集成:与日志和指标结合(如基于 Trace ID 关联)。
- 分布式追踪:
2. 数据采集与处理
为了实现日志、指标和追踪的有效收集和处理,分布式系统需要采集代理和中间层:
- 采集代理:
如Fluent Bit
、Telegraf
、Vector
,用于轻量级数据采集和转发。 - 中间层:
消息队列如Kafka
或RabbitMQ
,用于缓冲和分发数据流。
3. 实现步骤与最佳实践
3.1 设计阶段的考虑
- 定义关键指标:明确哪些指标最能反映系统健康(如 QPS、延迟、错误率)。
- 标准化日志格式:确保所有服务生成一致的日志格式。
- 在代码中嵌入追踪:使用如 OpenTelemetry 的 SDK,在服务中嵌入追踪逻辑。
3.2 监控与告警
- 配置告警:基于 SLAs 和 SLOs 设定告警阈值。
- 动态阈值:结合历史数据,使用机器学习工具(如
Prometheus
的Alertmanager
)动态调整。
3.3 问题诊断与调试
- 关联性分析:
使用 Trace ID 将日志、追踪和指标关联起来。 - 根因分析:
通过时间对齐和拓扑图工具快速定位故障点。 - 历史回溯:
日志和追踪存储时间足够长,支持重现。
4. 常见工具与生态系统
以下工具和生态组合构成了可观测性实现的主流方案:
- 日志系统:
ELK Stack
(Elasticsearch、Logstash、Kibana),Loki
。 - 监控指标:
Prometheus
+Grafana
,Datadog
。 - 分布式追踪:
Jaeger
,Zipkin
,Honeycomb
。 - 统一框架:
OpenTelemetry
提供日志、指标和追踪的整合解决方案。
5. 架构图示例
分布式系统可观测性的典型架构可以表示如下:
[ 应用服务 ] --> [ 数据采集代理 ] --> [ 消息队列 (Kafka) ] --> [ 存储与分析平台 ]
--> 日志系统 (如 ELK)
--> 指标系统 (如 Prometheus)
--> 追踪系统 (如 Jaeger)
6. 扩展与趋势
- 服务网格 (Service Mesh): 使用如
Istio
和Linkerd
提供透明的追踪和指标采集。 - AIOps: 基于 AI 的自动化问题检测和分析。
- eBPF 技术: 提供更低成本的高性能数据采集。
通过整合日志、指标和追踪,分布式系统的可观测性能够帮助实现系统的透明化管理,提高问题诊断效率,并支持持续优化。