本文做者:AIOps智能运维性能优化
干货概览服务器
百度拥有上百条产品线,数十万的服务,每一个服务时时刻刻都在产生着海量的监控数据,造成的监控项规模总数已达数十亿。面对如此海量的数据,在平常运维(如故障诊断、成本分析、性能优化等场景)过程当中,传统的统计图表难以有效直观地展现如此庞大的数据。所以,优秀的监控数据可视化产品就呼之欲出,他既要数据准确、全面、时效性高,也须要提高用户的使用体验,使其能在茫茫数据中一眼就能发现想要观察的数据。运维
那么怎么作才能适应用户需求、完成精准展现,同时又能挖掘数据价值呢?下面咱们从故障诊断的场景出发,来看百度智能监控平台是如何充分利用数据可视化武器来解决实际业务问题的。布局
故障定位可视化思路性能
在标准的故障处理流程中,故障定位通常可分为两个阶段:优化
故障止损前:指望能够快速得到可用于止损决策的信息,作出相应的止损操做使得服务恢复。好比经过肯定故障范围,调度流量绕过故障机房或摘除故障实例等。spa
故障止损后:仍须要进一步找到致使故障的深层次缘由,肯定故障根因,将线上环境恢复到正常状态。设计
基于上面的需求,能够总结为如下三个定位的层次,从总体到局部逐步缩小故障范围,找到故障根因:排序
全局问题定位:快速确认线上状态,缩小故障断定范围。为可能的止损操做提供判断依据。本文会介绍如何构建一个全景分析仪表盘。接口
细分维度定位:经过分析地域、机房、模块、接口、错误码等细分维度,进一步缩小问题范围,肯定须要排障的目标模块、接口等。本文会介绍如何基于多维度数据可视化解决维度数量暴增带来的定位难题。
故障根因确认:一些状况下,问题的根因须要借助除监控指标以外的数据进行分析。例如上线变动、运营活动致使的故障。本文针对致使故障占比最高的变动上线类故障进行分析,看如何快速找到可能致使故障的变动事件。
全景掌控缩小范围
对于一个服务乃至一条产品线而言,拥有一个布局合理、信息丰富的全景监控仪表盘(Dashboard)对于服务状态全景掌控相当重要,所以在百度智能监控平台中,咱们提供了一款可定制化的、组件丰富的仪表盘服务。
用户能够根据服务的特征,自由灵活的组织仪表盘布局,配置所须要展现的数据信息。
如上图所示,咱们能够按照问题定位的思路,将服务总体的服务可用性状况、分功能可用性状况、分模块的核心指标、流量的同环比对比、分IDC的流量对比等,依次经过丰富的可视化组件进行呈现。使得在收到报警时,能够快速将故障缩小到具体功能、模块、接入流量、机房级别。
深刻数据肯定根因
在故障处理过程当中,全景数据仪表盘为咱们缩小了故障定位的范围,但大多数的根因仍然隐藏在数据的细分维度中。由此多维度分析的重要性就体现出来了。常见的多维度分析包括以下几种场景:
单维度取值对比分析:针对同一个维度的不一样取值进行对比分析,例如肯定流量下跌出如今哪一个省份。
多维度关联分析:分析两个甚至更多维度互相做用后数据的分析,例如如何肯定一个下跌是机房级别仍是模块级别。
维度下钻分析:一些维度包含多个层级,例如省份、城市等相关联维度的逐层下钻定位。
咱们针对这些场景,设计了相应的解决方案。
单维度取值对比分析
维度取值对比分析是一种最多见的细分维度定位方式。对于同一个维度下取值数量较少的状况,能够经过多维度趋势图和饼图等可视化方式进行快速的分析,查看不一样维度取值的取值状态,以及占总体比例状况。而对于维度取值数量多,且不一样取值数量级差距较大状况(例如分省份的流量下跌断定),使用饼图或趋势图很容易把流量较小省份的信息隐藏掉。这种场景下,咱们能够经过维度取值自动展开功能,分别查看每一个省份的状态。
多个维度关联分析
细分维度的故障所带来的表象可能会在多个维度均有表现,好比服务总体的访问拒绝上升,咱们会发现分机房的拒绝量上升,也看到分模块的拒绝上升。那么咱们如何确认故障的根因是来源于某个机房仍是某个模块,仍是这二者的交叉维度,即某个机房的某个模块致使的问题。
矩阵热力图能够解决这一问题。将须要作分析的两个维度分别做为横纵坐标,经过阶梯的阈值颜色将对应交叉维度的取值展示再坐标上。咱们即可很是直观的看到这这两个维度对于整个业务的影响状况,以下图所示:
咱们能够看到,从纵向的分模块维度,能够看到Module 4在多个机房都有明显的访问拒绝状况,而在横向分机房维度,则没有明显的特征。则说明是Module 4模块致使的问题。
嵌套维度下钻分析
相似于国家-省份-城市的行政区域划分,区域-机房-机器的服务部署划分,咱们能够看到不少维度之间存在着层次嵌套的关系。咱们故障定位的思路也是如此,从总体到局部逐步分层下钻定位。
咱们提供了多维度展开报表功能支持这种下钻分析。
例如咱们怀疑是某几台服务器致使的拒绝量上升,咱们能够基于多维度统计报表,点击排序找到拒绝最大的区域,而后依次展开找到拒绝最大的机房和机器。
点击详情后,咱们就能够跳转到机器对应的页面,查看对应机器的详细数据来进行定位。
找寻关联事件定位
根据历史经验,大多数的线上故障都是因为变动操做所引发的,包括程序、数据、配置等变动事件,增删机器实例、执行预案等运维事件,甚至包括可能引起流量突增的活动运营事件。对于某些体积庞大的产品线,开发和维护人员众多,以上事件的发生更是千丝万缕、错综复杂。
面对这个问题,咱们设计并推出了一种能够解决这种问题的通用性组件——事件流图。
经过事件流图,能够快速筛选出故障的先后时间,发生或发生中的事件,每一个事件经过色块的长短位置,展现了开始结束时间以及持续时长。咱们能够快速的分析出对应时间的故障多是因为某些操做开始或操做完成引起的。
对于部分业务线,同一时间段发生的事件可能有上百甚至上千条,咱们提供便捷的筛选功能来解决这一问题。经过事件类型标签,打开或关闭某一类事件的展现,优先排查最有可能的根因。同时对于每一类事件的支持细分筛选,用户能够自定义事件筛选的条件,支持多项选择、文本模糊匹配等多种方式,使得定位范围一层层缩小,最终找到问题根因。
总结
以上咱们介绍了百度智能监控平台在全局故障分析、细分维度定位、事件关联定位三个故障定位阶段中进行的数据可视化探索。当前百度智能监控平台已成为百度各大业务可用性保障必不可少的利器。
数据可视化能力的优点不只仅在故障定位场景中由突出体现。还能应用在更多的数据分析领域。咱们将来会进一步介绍百度智能监控平台在应用性能分析、商业数据分析等领域的实践成果,欢迎各位继续关注。