从一个案例看自动化运维工具的作用

前几天和一个客户讨论运维工具,他们提出来你们的工具中有没有功能能分析awr报告?我当时挺奇怪,为什么他们想要这样的工具。他说因为他们发现一旦数据库出问题,大家都是通过awr报告去分析的,但是他们自己很难读懂awr报告,也无法从awr报告中看出问题在哪。所以他们就想有没有一种工具来解读awr报告,从中找出系统的问题。实际上Oracle是有一个工具可以解读awr报告的,那就是addm报告,它可以通过awr数据发现这段时间里对系统影响最大的要素。可能有些朋友要说了,addm报告里面发现的大多数就是TOP SQL,能不能有更好的分析工具。

实际上awr报告作为分析数据库问题的最好的工具之一,是有其道理的,最核心的是它包含了数据库运行的最为丰富的指标数据,只要你有足够的水平和经验,就可以从awr报告中发现系统的很多隐藏的很深的问题。不过awr报告也有不尽如人意的地方,一个是两个snap之间的周期太长,一般是1小时,最小一般不低于半小时。这样的话有可能一些短暂的突发性问题会被一小时的平均值所掩盖,所以有时候我们使用awr分析的时候还要借助ash报告来看更细粒度的时间区间。另外一个问题是awr报告十分难懂,哪怕干了十年DBA的人恐怕都很难十分清晰的通读awr报告。最后一点是awr报告的内容太多了,靠人去读,总是难免会遗漏一些关键性的指标。

实际上我们并不是需要看awr报告,而是目前我们最好用的分析工具就是awr报告。如果有一个能类似awr报告那样把大量的数据采集起来,并进行自动化分析的工具,那么我们不使用awr报告,也可以快速的发现数据库中的问题了。借助运维工具中的AIOPS能力,可以大大降低系统故障定位的时间和成本。

今天我们来看一个前两天发生的案例。用户的某个系统出现性能问题,于是把离线的运行指标数据发送给我们来分析。基于离线数据,从健康模型上看,确实出现了一些问题。在某个时间段内,总是间歇性的出现健康状态的抖动,每次抖动时间不长,也就是十来分钟。

从一个案例看自动化运维工具的作用_第1张图片

从健康模型上看,数据库并发执行、操作系统等方面都出现了一些问题。其中操作系统放的问题是因为网卡存在较为严重的丢包。这个问题是个老问题了,目前网管人员也正在排查问题。于是我们就把主要分析方向定位到并发这个维度。

从一个案例看自动化运维工具的作用_第2张图片

系统的每秒硬解析那么高,不过这个问题分析起来很头痛,如果在传统的运维模式下,可能会放到后面去分析,等到其他方面找不到问题了再去啃这个硬骨头。不过在AIOPS的支持下,分析一个问题也就是点击一下按钮而已了,我们可以很任性的进行下钻分析。

从一个案例看自动化运维工具的作用_第3张图片

看到这个指标的趋势是不是和我们的健康分的趋势有点相似?先不管这些,直接点击“智能指标分析”吧。

从一个案例看自动化运维工具的作用_第4张图片

指标关联度分析是我最喜欢用的工具,直接点上再说。关联度最高的居然是表扫描数和全索引扫描数,从这里看,似乎问题和TOP SQL有关。一些SQL做了大量的表扫描和全索引扫描。

从一个案例看自动化运维工具的作用_第5张图片

“指标查找智能诊断路径”工具也针对这个问题推荐了一些诊断工具,其中包含共享池分析,也有一些TOP SQL的诊断工具。因为刚才我们已经看到了上一个工具的分析结果,于是我们先不做共享池分析了,因为共享池的问题很可能是TOP SQL引起的。于是先看看执行次数较高的SQL:

从一个案例看自动化运维工具的作用_第6张图片

排在前三位的SQL居然在半小时内执行了近300万次,而且这些次SQL都没有返回任何数据。这种业务逻辑肯定是有问题的。再来看看逻辑读较高的TOP SQL。

从一个案例看自动化运维工具的作用_第7张图片

可以看到,那个不到半小时执行了216万多次的SQL依然排在第一位,不过每次逻辑读只有6。这条SQL本身并没有问题,而是执行次数明显不合理了。后来和开发商确认一下,发现这条SQL相关的应用模块的逻辑上确实存在问题。这个模块是要查询出符合条件的数据,然后进行处理。而如果一次扫描没有发现数据,那么就会立即循环,直到找到数据或者超时为止。如果某个时间段内,某业务没有发生,那么这条语句会不断的循环执行,直到该模块的执行窗口超时。这种业务逻辑存在十分严重的风险,开发商看到这段代码后,就马上清楚该如何优化了。

整个问题发现工作耗时不到5分钟,加上和客户沟通的时间,以及开发商确认问题的时间,也不过半小时而已,而如果我们通过awr去分析这个问题,恐怕还刚刚把awr报告粗略的看一遍吧。随着系统运维的规模的不断扩大,以前靠专家看awr报告的模式已经很难适应现在运维的需要了。必须通过工具化的手段来自动化的分析运行指标数据,协助运维人员进行分析。今年是我们投入数据库自动化运维工具的第四个年头,目前一些智能化工具在辅助分析方面已经能够发挥很大的作用了,上面的这个例子已经很好的反映了这种能力。不过离我们的下一个目标-自动化诊断还有很大的距离。如果哪一天,工具能够进化到不需要我去点击工具,判断下一步去点哪个工具,那么当系统存在运行隐患或者问题的时候,AIOPS工具能够在后台自动进行问题分析与定位,最终把分析结果推送给运维人员,那么运维能力又能上一层楼。这个工作虽然很难,不过我们还在不断的摸索着前进。

从一个案例看自动化运维工具的作用_第8张图片

你可能感兴趣的:(运维,自动化,数据库,dba)