《构建微服务体系下的全链路监控系统》

微风

2019/03/24 发布于 技术 分类

文字内容
1. 构建微服务体系下的全链路监控体系 姚捷@唯品会 唯品会
2. 讨论⼀一下微服务吧 唯品会
3. 微服务监控玩的怎样 ? 。。。。。。 唯品会
4. 微服务⻓长什么样? 唯品会 • ⼩小⽽而⾃自治 • 独⽴立实体 • 协同⼯工作
5. 微服务(对⽐比单体应⽤用)的优势 技术异构 弹性 可扩展性 简化部署 可复⽤用性 可替代性 唯品会
6. 微服务的技术特性 基础组件众多 部署模式多样 治理功能强⼤大 RPC框架(Client,Server) 单⼀一服务,单⼀一服务器 服务路由(上线/下线,临近机房) 治理组件 Local&Remote Proxy 单⼀一服务,多个服务器 负载均衡(Round Robin,权重) 服务注册中⼼心,配置中⼼心 安全组件,服务⺴⽹网关 多个服务,多个服务器 跨机房部署,容器化部署 异步消息系统 唯品会 ⾃自我保护(过载保护,服务降级)
7. 全链路监控系统遇到微服务,怎么玩? 当 唯品会
8. 我们要监控什么? 服务画像 唯品会
9. 我们要监控什么? ① 服务概览信息 ② 服务性能指标 ③ 服务拓扑关系 ④ 服务调⽤用链 服务画像 ⑤ 版本信息 ⑥ 服务治理状态 ⑦ 组件内部状态 唯品会
10. 服务概览信息 服务名称 服务部署在哪些机房 服务部署在哪些主机 服务包含哪些API 服务的相关配置信息 服务的负责⼈人,开发⼈人员,运维⼈人员是谁 唯品会
11. 服务性能指标 流量(qps) 响应时间(ms) 100 9000 75 6750 50 4500 25 2250 0 10:00 10:01 AVG 10:02 10:03 85% 95% 10:04 0 10:00 10:05 10:01 99% 100 37.5 75 25 50 12.5 25 4XX 10:02 5XX 10:03 10:04 10:05 异常⽇日志数 50 10:01 10:03 每秒请求数 失败数 0 10:00 10:02 10:04 10:05 BizErrorCode_3001 唯品会 0 10:00 10:01 10:02 10:03 ⽇日志数量 10:04 10:05
12. 服务性能指标 精度 维度 秒级 or 分钟级 唯品会 ✓ App ✓ IDC ✓ Host ✓ API
13. 服务拓扑关系 A call B服务调⽤用关系上的性能指标 服务之间的调⽤用关系 [100 qps, 50 ms] 体现服务强弱依赖 ⾃自动化 ⼿手⼯工维护 唯品会
14. 服务调⽤用链 查询订单号是XXX的 调⽤用链 查询耗时超过N毫秒的 慢调⽤用 附加业务字段 调⽤用结果 返回码 查询返回码是500的 调⽤用链 调⽤用耗时 异常⽇日志 出⼊入参数 唯品会
15. 版本信息 “RPC客户端v2.5.1版本发现bug, 需要⽴立即发布v2.5.2修复并升级” 哪些服务正在使⽤用RPC客户端v2.5.1 ? 组件版本 “好不容易把RPC客户端升级到 v2.5.1并发布到⽣生产环境了” 怎么知道⽣生产环境RPC客户端已经升级到v2.5.1 ? 组件版本 “服务v1.0.1版本灰度发布到了 GD6-OSP-CATE-API这台主机” 怎么知道这台主机的服务已升级到v1.0.1 ? 服务版本 唯品会
16. 服务治理状态 熔断 client • • • Proxy Service A ServiceA Instance1 ServiceA Instance2 ServiceA Instance3 Instance 1 Instance 2 Instance 3 Proxy • • • ServiceB Instance1 ServiceB Instance2 ServiceB Instance3 Service B Instance 1 Instance 2 Instance 3 唯品会
17. 组件内部状态 Proxy 活动线程数 Proxy 处理请求数 50 400 37.5 300 25 200 12.5 100 0 10:00 10:01 10:02 bossgroup 10:03 10:04 0 10:00 10:05 10:01 workgroup 15 22.5 11.25 15 7.5 7.5 3.75 10:02 10:03 10:04 10:05 Proxy 处理服务数 30 10:01 10:03 请求数 Proxy 错误重试次数 0 10:00 10:02 10:04 10:05 0 10:00 10:01 10:02 10:03 处理服务数 错误重试次数 唯品会 10:04 10:05
18. 唯品会
19. 核⼼心⽇日志数据模型 Trace Model Event Model 唯品会 Log Model Metric Model
20. Trace Model 属性名 描述 ⽰示例 Trace ID 调⽤用链唯⼀一标识,通常采⽤用UUID的算法⽣生成,并且需要端到端透传到下游 4748460080547467237 Span ID 调⽤用链Span唯⼀一标识,通常采⽤用UUID算法⽣生成,并且需要透传下游 6283422850509101259 Parent Span ID 当前Span的⽗父Span ID,⽤用来维护Span的⽗父⼦子关系 9748460010547467231 Span Type 表⽰示当前Span的属于那种服务类型,例如Dubbo Server,OSP Server等 OSP_Server Service Name 调⽤用的服务名称 com.vip.categoryService API Name 调⽤用的服务的API的名称 getCategories APP 服务所在业务域名称 osp-category.vip.com Host 主机名 GD6-OSP-CATE-API Server Received Time 服务端接收请求的时间戳 1437835095689 Server Send Time 服务端响应请求的时间戳 1437835097405 Duration 服务端处理耗时 1716 Sample Rate 采样率,由顶层服务设定,透传到下游服务 0.1 Server Result 服务调⽤用结果 success Response Code 服务调⽤用返回响应码 200 Custom Fields 附加业务字段,⽤用来做调⽤用链检索 orderId=0001&userId=2001 唯品会
21. Event Model 属性名 描述 ⽰示例 Type 事件类型 CircuitBreaker.Open Name 事件名称 CircuitBreaker.Open Service Name 事件发⽣生所在服务 com.vip.categoryService App 事件发⽣生所在业务域 osp-category.vip.com Level 事件等级 critical Timestamp 事件发⽣生时间 1452735137965 Title 事件标题 Message 事件详细描述 com.vip.infrastructure.qa.te stmercury.service.NormalTe com.vip.infrastructure.qa.te Host 事件发⽣生所在主机 stmercury.service.NormalTe GD6-OSP-CART-API16 Instance 事件发⽣生所在应⽤用实例名 osp-proxy16857 Module 事件发⽣生所在的应⽤用模块 osp-proxy Tags 服务端处理耗时 蓝调blue, ⼤大众喜爱,微博达⼈人 ttl 采样率,由顶层服务设定,透传到下游服务 3600 Custom Fields ⾃自定义字段列表,k/v键值对,k的名字可任意 orderId: '12345' 唯品会
22. ⽇日志采集⽅方式 API主动埋点采集动态织⼊入埋点采集 & Event Log 唯品会 Metric LogTrace Log Error Log
23. 客户端(Java)监控数据采集架构 Web Console Health-Check Host 治理 中⼼心 访问MBean JVM 服务容器 服务A 配置下发 代理MBean JMX HTTP Agent 发送 Log Packet AOP织⼊入 动态采集 服务B 状态上报 探针 主动采集 API 唯品会 状态探测 发送 Log Packet 发送 Log Packet Agent Kafka
24. AVRO / PB JSON 序列化协议 易读 vs 冗⻓长 ⾼高压缩⽐比 解析性能差 ⾼高性能 Logging to file 本地⽇日志传输 ⼆二进制消息 UDP Send-and-Forget 磁盘⾼高性能 语⾔言⽆无关 disk io瓶颈 绑定log框架 唯品会 vs 协议格式简单 ⽆无本地磁盘IO 脱离Log框架
25. Bottleneck 峰值流量下,设置合理的采样率 合理设计⽇日志格式,尽量降低⽇日志冗余 ⽇日志采集粒度可降级 异常⽇日志收敛 采⽤用⽇日志队列模式,避免阻塞业务主线程 合理设置⽇日志队列⼤大⼩小,允许⽇日志丢弃 单线程消费⽇日志队列,批量获取⽇日志 监控⽇日志丢弃率,定期上报 ⺴⽹网络传输采⽤用⼆二进制序列化格式 唯品会
26. Pipeline Real-Time Alarm Dashboard Elastic Search Kafka Spark HBase(TSDB) Flume 唯品会 Alarm
27. 海量数据 100,000,000 5T+ 峰值⽇日志量/分钟 ⽇日均⽇日志存储量 500+ 20,000+ 接⼊入业务域 主机 唯品会 1T+ ⽇日均索引量 1,5000,000,000 ⽇日志量/每天
28. 海纳百川 流式计算 海量存储 ⾼高速查询 按需设计Kafka message header 基于OpenTSDB,保存全量指标数据 设置合理的查询时间范围 ⼆二阶段计算模型 控制Cardinality⼤大⼩小 先查ES,再在HBase中⼀一键定位调⽤用链 记录数据回放Checkpoint,⽀支持容错 Shift to metric 数据限流 指标数据加盐存储 内核参数/JVM参数优化 ES维护⼆二级索引,HBase存储裸⽇日志 唯品会
29. 告警引擎 响应时间(ms) 环⽐比 40 严重阈值 30 警告阈值 20 10 0 10.00 10.05 10.10 10.15 今天 定义告警模型 10.20 10.25 昨天 多维度(服务/业务域/主机) 唯品会 10.30 梯度告警
30. 三分建设,七分运营 监控系统的SLA 唯品会
31. 三分建设,七分运营 客户端监控 ⾃自监控,治理 监控系统的SLA 系统监控 组件监控 唯品会
32. Q&A 唯品会