从发现到定位,去哪儿网一站式可观测平台 姓名:肖双 GOPS全球运维大会暨研运数智化技术峰会2024·上海站 个人简介 肖双 基础架构-基础平台技术负责人 2018年加入去哪儿网,目前负责去哪儿网CI/CD、监控平台和云原生相关平台建设。期间负责落地了去哪儿网容器化平台建设,协助业务线大规模应用迁移至容器平台,完成监控系统Watcher2.0的改造升级和根因分析系统落地。对监控告警、CI/CD、DevOps有深入的理解和实践经验。 打造更便捷的观测平台 如何更快的发现故障 目录 微服务架构下,如何辅助开发快速定位 01 打造更便捷的观测平台 /foo APP2 APP1 场景 app1_api_foo_qps[status=200]app2_api_foo_qps[status=200] Prometheus app1.api.foo.qps;status=200app2.api.foo.qps;status=200 Graphite 需要尽可能多的记忆指标名 打造更便捷的观测平台-去哪儿网资源管理 人员 共同语言 主机/容器存储计算 Appcode 中间件 数据互通 代码CI/CD GOPS全球运维大会暨研运数智化技术峰会2024·上海站 主机/容器 监控 业务自定 义指标 Appcode 中间件监 控 域名监控 单以击模此版处形编式辑提标供题 单无击需此做处任编何辑配标置题 •打通环境管理 •正则匹配搜索 •指标数浏览 •单机指标下钻 •聚合排序 •打通CMDB •动态模版 •支持下钻单主机 •打通DB元数据 •实例下钻 •动态模版 •统一管理报警 •报警实时追踪统计 •批量处理 02 如何更快的发现故障 故障平均发现时间订单类故障1分钟发现率 4分钟 20% 分钟级设计 当前监控系统,无论数据采集还是报警都是分钟级设计,采集使用Pull模式,定时每分钟拉取。 采集使用Graphite协议 指标的采集和格式都是遵循Graphite协议,而建设秒级指标时必须考虑其兼容性 存储IO高,占空间大 之前TSDB采用的Graphite的Carbon+Whisper,Whipser因为空间预分配策略和写放大问题,会导致磁盘IO高以及磁盘空间占用过多。 Counter.Incr() Timer.Timing() Server LocalMetricRepository Scheduler Snaphost 问题: 1.调度器固定的每分钟调度生成数据快照 2.指标仓库只支持分钟级数据的存储 如何更快发现故障-采集器Client端改造 指标仓库方案1: 配置管理 Counter.Incr() Timer.Timing() Server 计算层/Tdigest-数据采样 判断此指标是否要进行秒级采集 LocalMetricR 数据区/秒级 数据区/分钟 Scheduler Snaphost1 Snaphost2 Snaphost3 1.参考Prometheus的模式Client不做快照只做数据累加或记录,由Server端在拉取时做默认的增量计算 优点:客户端节省内存缺点: 1.采集架构改动过大,且可能存在数据精度问题 2.拉取时做增量计算对Server端压力太大指标仓库方案2: epository 1.客户端多份数据计算和存储,生成多快照优点: 1.采集架构改动小,没有数据精度问题,server压力小缺点: 1.会多占用一部分内存优化: 1.使用Tdigest做数据采样,内存占用量可接受 Master节点 Worker节点 问题: Worker节点 1.任务量大时通过MQ派发耗时长 Worker节点 Task… MQ 每分钟分发全量任务 2.Python做大量聚合计算时,CPU消耗高 WorkerN… Python开发,多进程多线程模型 Task… Worker节点 Task… Worker节点 Etcd Master1 EventWatch EventPush •以APP维度调度 Master2 Master3 •Worker自调度 Task… Worker节点 •支持分钟级和秒级配置和 Watch DB 采集 Task… WorkerN… Go+Goroutine 0 M3DB 优点: 1.高压缩比,高性能 2.可伸缩 3.支持Graphite协议以及部分聚合函数 缺点: 1.部署维护复杂 2.社区活跃度低 3.更新迭代慢 1VictoriaMetrics 优点: 1.高性能,单机读写可达千万级指标 2.每个组件都可以任意伸缩 3.原生支持Graphite协议 4.部署简单 5.社区活跃度高,更新迭代快 缺点: 1.针对Graphite聚合读场景下,性能下降严重 项目 数据 写指标量 1KW/分钟 读QPS 2000/s 平均响应时间 100ms 磁盘使用量 40G 主机Load 5-6 主机信息 •CPU:32C •内存:64G •磁盘:3.2TSSD 压测问题: 1.单指标查询性能良好,但是聚合指标,尤其是大量聚合指标且带有聚合函数查询时性能下降严重,甚至会超时。 聚合计算 Query CarbonAPI CarbonAPI CarbonAPI 元数据DB VM存储 无状态、任意扩展 聚合指标解析查询数据剪裁处理 其他定制化功能 订单故障发现时长 3Min降低到1Min之内 如何更快发现故障-效果 03 辅助开发快速定位 微服务架构下,如何 •链路复杂 •依赖复杂 •指标关联trace •接口维度异常数据 •应用维度异常数据 •关联事件、报警、日志、中间件状态 •入口/出口详情 •依赖状态详情 •异常日志概览 •JVM状态概览 •其他异常信息概览 •图维度的事件订阅 •事件自动聚合拆分 04 总结和未来规划 总结和未来规划 2022年 •1分钟发现 •智能异常检测-雷达 2024- •持续优化定位 •自愈和快速恢复 2020年之前 •一站式平台(更便捷的管理监 控和报警) •数据互通 •报警治理 2023年 •快速定位 •自动根因分析 Thanks 高效运维社区DevOps时代 荣誉出品