- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板

何飞-喜马拉雅监控报警以及日志收集之道-ShardingSphere Meetup 上海站
展开查看详情
1 .「Apache ShardingSphere - 喜马拉雅 2023 Meetup」 喜马拉雅监控报警以及 日志收集之道 基础架构 何飞
2 . 内容大纲 Ø背景 Ø云原生监控可观察性能力建设 Ø可靠性告警能力闭环 ØL3级故障归因分析 Ø可观察性未来 2
3 . 背景 云原生带来的不仅仅是应用部署能够部署云上而已,其整个的定义是一套新的 IT 系统架构升级, 包括开发模式、系统架构、部署模式、基础设施全套的演进和迭代。 效率要求更高 • 随着业务迭代、开发、测试、交付.. 的效率要求越来越高,服务出现了什么问题,问题在哪里,如何快速去解决。 系统更加复杂 • 架构从一体化发展到分层模式,到现在的云原生微服务模式,带来系统开发效率、发布效率、系统灵活性等优势, 但随之而来系统的复杂度将更高,问题的定位将更加难。 环境动态性增强 • 微服务和容器化的部署模式,最大特性是环境的动态性增强,大家都越来越希望依赖无状态,每个实例的生命周期 会更短,出现问题后往往现场已经被破坏,登录机器排查问题的方式已经不复存在。 上下游依赖更多 • 问题的定位最终都会从上下游来排查,在微服务、云、K8s 的环境中,上下游将更加多,包括各类其他业务应用、 云上使用的各类产品、各种中间件、K8s 自身、容器运行时、虚拟机等等。 3
4 .可观察性 – 架构 ü 服务解耦 业务不需要自己埋点 上报解偶不影响业务 ü 架构回溯 VM时序存储 ü 架构分层 自上而下 服务->组件 自下而上 组件->服务 4
5 .可观察性 -稳定的计算和存储 背景 Ø Http55万/s RPC430万/s 7300万条关系/分钟 Ø 经常性计算超时 和 查询超时 Ø 带来计算和存储成本指数增长 5
6 .可观察性 -稳定的计算和存储 稳定的计算 集中式到 ü 提升全链路稳定性150G 分布式 ü 计算步长 10S ü 10000关系纬度统计30 M HdrHistogram 直方图分桶算法 内存资源消耗 单 个统计维度 3k + LRU淘汰 6
7 .可观察性 -稳定的计算和存储 时序数据存储 TSDB 写入数据 10万/s 每天写入在8T数据左右 hbase 1. compaction 小文件的合并 2. Memstore 批量flush到磁盘 3. openTsdb key设计和存储存在热点数据 VictoriaMetrics 1. 分层架构 vmstorage、vminsert、vmselect 一致性hash插入 2. 兼容Prometheus和openTsdb的语法,改动小 3. 压缩比是hbase的10倍: 30T -> 4.5 T -> 1020G 4. 动态无状态扩容 查询 4个9 表现结果在500ms以内,实时插入 7
8 .可观察性 - 组件/服务 架构可视化 为什么要做架构可视化 Ø 系统架构复杂度越来越高,架构变化日益频繁,微服务改造后的实际架构模型 可能与预期已经产生了巨大差异,靠架构师或系统运维人员很难准确记忆所有资 源实例的构成和交互情况。 Ø 系统架构在动态演化过程中可能引入了一些不可靠的因素 8
9 .可观察性 - 组件/服务 架构可视化 优点 ü 确定系统边界 明确了业务系统和组件的关系,以 及组件和组件之前的关系 ü 架构问题识别 可视化架构图可以,帮助评估架构 存在风险 ü 提高系统可用性 有服务上下游,服务故障,可以通过依赖 数据定位分析问题 9
10 .可观察性 -统一视图 统一视图,可以快速,辅助我们进行问题检查和定位问题 打破单一数据孤岛 多维度数据分析 功能收敛 降低监控使用成本 10
11 .可观察性 -统一视图 服务与服务间依赖联系:哪个依赖响应时间高? 没有对比就没有伤害:哪个 Pod 出了问题? 11
12 .可观察性 – 日志搜集方案 Ø 日志查询:跳板机登录机器查询、跨多机器日志查询、上云容器日志 Ø 日志权限:Tomcat日志无权限查看,Gc日志难分析 Ø 个性化:简单关键字全局匹配搜索、简化查询语法、日志时段区间统计、多个维度的日志过滤 Ø 日志分析:海量日志中找出问题 12
13 .可观察性 – 云原生容器的日志查询 1. Es日志搜索 2. WebConsle 实时日志 3. logProxy liveTail 日志 4. 日志hdfs 存储 日志: ü 方便查询 ü 方便回溯 13
14 .可观察性 – 日志分析 Ø 错误日志分析 识别日志,进行日志归类 应用日志 70w/s 错误日志 2500/s 短时间 去识别100万条日志, 并对日志进行归类,说的是一 件事情。 14
15 .可观察性 – 日志分析 Ø 错误日志分析 ü 生成logId ü 采样与采样补偿 ü 关键字提取与匹配 ü 超量日志非S级链路服务降级 ü 人工修正 15
16 .可观察性 – 日志分析 Ø Gc日志分析 Gc日志可视化 Gc效果/gc时间 ,方便我们调优 JVM参数,提 升服务性能。 16
17 .可靠性告警建设 - 平台化 • 丰富数据采集 • 一体化监控指标 • 统一告警规则 • 集中告警分发 17
18 .可靠性告警 - 告警风暴 告警压制 异构数据 业务系统 告警收敛 架构划分 监控维度 越细 错误日志告警 与 接口可靠性 告警 18
19 .可靠性告警 - 告警风暴 错误日志告警 与 接口可靠性告警 告警收敛 告警压制 19
20 .可靠性告警 - 告警可达性 准确送达告警给到开发,保证开发介入解决告警。 - 公司唯一24H值班“人员” • 梳理全站核心业务线 故障识 • 大范围核心中间件类故障 别 • 基础服务类故障 • 告警分级 • 每个业务线只关 多租户 告警 准确 解决告 警疲劳 • 分时告警 心自己的服务 服务告 警问题 左移 • 无监控数据服务发现 • 打通人事管理项目离职转岗交接人员 20
21 .L3级故障归因分析 - 背景 微服务,流量业务打散 全站报警,是发生在哪一层 报警 是哪个应用导致的 报警风暴,是什么组件 机器 线索在哪里? 报警 是否由网络导致的 什么时候恢复 ? 报警 什么事件引起 21
22 .L3级故障归因分析 – 设计思想 分析 数据支撑 网站故障 超时异常递归分析 告警类型分析 上游流量 服务调用流量 服务外因 事件变更 RPC调用超时日志 组件依赖 错误异常和GC日志 机器资源 服务内因 异常日志栈分析 容器资源 内部JVM资源 根因 根因对应恢复Action 22
23 .L3级故障归因分析 – 网站服务根因定位 Ø 错误日志中剥离出超时日志 和 组件日志 Ø 横向RPC错误调用权重打标 Ø 内/外因分析 Ø 全站事件中心构建 23
24 .L3级故障归因分析 – 网站服务根因定位 发现服务 ü 异常链路权重打标 ü 任意调用链路,最终到达异常服务 ü 根据权重找出的异常服务,进行服务归因模型 24
25 .L3级故障归因分析 – 网站服务根因定位 故障服务建模 ü 流量检查 ü 依赖检查 ü 资源检查 ü 事件检查 25
26 .L3级故障归因分析 – 故障半自动化恢复 故障和归因结果构建知识库恢复策略 故障 实时归因,根据根因结果,匹配恢复策略 根据恢复策略,快速恢复故障 指导 知识 恢复 库 26
27 .L3级故障归因分析 – 归因案例 27
28 .可观察性未来 IT系统的可观察性发展 归因问题 手工分析 统一视图 故障预测 变更影响 自愈 28
29 .扫描下载