京东云 郑永宽 大型监控系统设计与应用实践

CodeWarrior

2019/07/08 发布于 编程 分类

GIAC2019 

文字内容
1. 大型监控系统设计与应用 实践 郑永宽 京东云 产品研发部总监
3. CONTENT 01 需求背景 02 京东云监控实践 03 监控系统设计 04 未来展望
4. 01 需求背景
5. 需求背景 • 监控是运维的生命线 • 缩短异常生命周期MTTR – • See->know->act 期望监控系统: – 丰富的数据采集手段 – 多维度数据实时聚合计算 – 异常检测,告警准确及时 – 可定制的dashbord,定位问题 – 根因推荐定位,辅助决策 – 预案平台,快速止损 – 易用性、高可用、可扩展 核心数据采集 异常检测关 联分析 预案止损恢复
6. 02 京东云监控实践
7. 京东云监控体系---监控标准 业务监控 自定义/外网监控 京东云资源,使用/生命周期,业务流程监控 解决用户侧体验问题 方法监控 性能监控 开源软件监控 日志监控 进程/端口监控 存活监控 语义监控 基础监控 机器监控 函数方法调用耗时, JVM nginx、redis、mysql等常见开源软件监控 四大黄金指标: pv,错误,平响,容量 解决服务性能慢,初步确定问题边界 进程,端口,语义,域名访问等 解决服务存活类问题 cpu,内存,磁盘,NET,死机等 解决机器层面资源问题
8. 京东云监控体系---业务监控 用户侧使用情况 =>(监控手段:自定义、外网域名) 业务监控 • 京东云官网的页面的访问状态;流程监控(模拟创建子网流程) • 30+省市节点模拟用户访问;产生分运营商成功率
9. 京东云监控体系---应用监控 应用监控 函数方法监控,JVM性能 Lib库接入,埋点 流量,QPS,延迟,错误率,命中率… 日志/自定义接入 常见开源软件监控 组件监控
10. 京东云监控体系---存活性监控 程序在机器上是否存活=>(监控手段:进程监控、端口监控) 存活性监控 • 进程存活状态、数目、占用资源 • 端口探活,模拟http/https/tcp/udp等协议通程序交互
11. 京东云监控体系---基础设施 机器资源监控=>(监控手段:机器监控、死机监控) 基础监控 • 200+监控项自动采集、支持物理机/容器/虚拟机… • 死机支持ping、ssh探测,支持对假死判断
12. 京东云监控标准实施 —— 监控打分与配置推荐 打分& 推荐 践行监控标准 运维人员可以查漏补缺 管理者对整体稳定性有直观认识 推荐配置形成最佳实践 生成推荐配 置
13. 京东云监控标准实施—告警处理 • 报警分级:不同级别对应不同处理方式 • P0,立即处理,监控系统要保证及时发送,P0报警对应有预案,预案需要定 • 监控平台能力: • 咚咚 期演练 • • • P1,可以延迟处理,如果是固定的机械动作,通过自动化平台进行自动处理; • 预案平台:固话机械性动作 每天进行定期例行dashbord检查处理 • 报警统计:协助管理人员推进,消除隐患 P2,一般用于根因定位里面的辅助决策 • Dashbord:定期巡检 • 干预手段丰富:ACK、暂停等 • 报警合并:减少对人的打扰 处理流程: • • 告警方式多样:电话、短信、邮件、微信、 接受报警后,通过报警历史页面: • 通过看图定位出现什么问题 • 通过事件流图查看是否有上线影响 • 通过查看采集/报警配置,是否快速修改阈值 • 通过ACK/恢复,进行人工确认 每天定期进行巡检,关注未恢复的报警 • 处理类似报警优先级比较低的,比如磁盘<20%,避免升级
14. 京东云监控标准实施——故障定位 故障原因 定位边界VS定位根因à止损优先 变更 程序异常 网络&资源 中间件 其他 京东云快速迭代升级 à 变更可视化 上线操作 配置变更 初始化任务 平台全局事件 …
15. 03 监控系统设计
16. 典型监控系统架构图 数据展示 数据处理 Dashbord MetaDB 根因推荐 离线数据挖掘 关联分析 puller adaptor 数据抽象 saver CMDB 端口 进程 proxy sender 时 序 数 据 存 储 机器 语意 死机 网络 报 警 通 路 alert judge Api主动推送 外部探测点 自定义 日志 异 常 事 件 ES 预案止 损 ES+redis 采集Agent 机器 网络 Meta维护 query 实 时 聚 合 计 算 Kafka+spark 数据采集 报警展示 方法 环境 域名 业务全流 程 应用 …
17. 统一运维世界认知-CMDB • 业务/租户 – 面向业务的资源关联管理 • 业务->应用->集群->主机(网络) • 提供统一入口管理 基于CMDB的名字服务 • – 应用/集群 主机/网络 提供资源快速正查反查服务 基于CMDB监控配置服务 • 提供业务/应用/集群的配置
18. CMDB——服务与资源管理 服务树 服务树与名字服务示意图 公司 业务组织架构信息 应用从属关系 京东云 二级部门 角色管理与基于角色的权限控制 基础云 基础架构部 运维基础meta数据 资源管理 产品线 云主机 云硬盘 平台研发 基础网络 全流程机器管理 机器资源池的管理 系统 云翼 应用 Lord 机器所属信息展示搜索 架构部资源池 名字服务 实例 主机 Instance1 实例 App Instance2 基础云资源池 主机1 主机A 主机2 主机B
19. CMDB——名字服务 JD Naming Service JNS功能 用户 全量名字信息同步到lib,提供正向反向的查询 查询的数据缓存内存,提升查询效率 能够快速增量更新变更信息 消息队列 发布变更 CMDB 服务解耦合 http 维护实例-App-主机之间的对应关 系 部门 产品线 系统 应用 分组 实例 机器 订阅变更 Jns-server thrift Jns-lib Ump/log/… JNS整体架构图 record mysql
20. CMDB—— 机器与服务生命周期 生命周期管理 机器生命周期与服务生命周期解耦 自动化 高效与稳定
21. 数据采集:标准化过程 • 采集是数据标准化过程,形式A->形式B – 标准化采集的重要性 下游 计算 存储 报警 • 设计要点: – 基于名字服务的配置管理 – 插件式管理,便于扩展 – 下游三路发送,互不影响 数据发送 指令&数据 名字服 务 配置管 理 插件管 理 格式转换 采集&转换 数据源 机器采 集 网络采 集 应用采 集 日志采 集 机器 网络 程序lib 日志
22. 时序数据存储 设计 需求 • 写多读少,需要根据各种维度进行检索 • 结合查询+写入,选择ES为主存 • 最近一小时数据读取频繁,有数据热点 • 选择redis作为最新值/热点存储 • 各种时间段的读取需求,一年数据秒出 • 写入抽样,查询自适应路由 • 数据用于离线分析 • 抽象接口,便于添加各种下游 • ES/redis故障能快速恢复 • Saver/query可以进行机房调度 分机房部署 ES Redis-Fresh Hive query saver hive-client Redis-Meta Es-client redis-client Interface 抽样(10min/1h) 数据接收 Metric-meta hive-client Es-client redis-client Interface 自适应路由 查询格式转换 API
23. 时序数据存储—抽样&自适应路由 一年数据秒出: • 存储实时计算抽样,写入不同ES索引index • 根据查询的时间跨度,自动选择存储的时间粒度 tr < 10m 直接储存 Index_1s_2017-06-07 1s数据 10s Queue 10s Index_10s_2017-06-07 10m Queue 10m Index_10m_2017-06-07 统计值: avg不存 Sum/Cnt 10m < tr < 6h 6h < tr Query 时间范围
24. 报警通路 • 准确判定数据异常 • 报警及时发送,能屏蔽干预,避免报警风暴 下游 报警& 合并 短信 配 置 管 理 事件DB 邮件 短信模板生成 策略 合并 邮件模板生成 对象 合并 人员 合并 … 报警 回调 报警 屏蔽 数据接收 异常 判断 配 置 管 理 N/M判定 同比 环比 数据接收 突升 突降 异常入库 简单 数值 字符 串 定期获取 … • • 丰富异常检测算法: – 支持同环比/突升突降 – 支持数值/字符串报警 丰富报警合并策略: – 按人员/策略/对象合并 – 报警分级&报警方式
25. 报警通路—边沿报警不丢失 • 边沿报警:正常à异常,异常à正常 • 模块重启导致消息丢失,收不到恢复报警 关键报警信息存储 边沿报 警产生 定期check 监控数据 异常判断 网关送达回馈 报警发送 短信网关 用户
26. 总结 • 京东云体系监控涵盖 – • 基础设施/应用/服务 典型监控体系设计 – 数据抽象(CMDB先行) – 数据采集(标准化过程+资源控制) – 聚合计算(圈定范围/算子+重复数据) – 时序存储(读写正交/抽样+自适应) – 报警通路(异常判断/报警发送+不丢报警+场景算法)
27. 04 未来展望
28. 未来展望 • • • • 问题发现 – 采集标准化、无配置化 – 报警阈值离线分析,自动设置 – 报警事件自动升级 问题定位 – 异常同原始日志关联 – 事件关联推荐算法 问题解决 – 预案平台(预案的应用商店) – 分场景进行自动处理 ……
29. Q&A 关注京东云开发者社区,获取分享PPT