当前位置: 首页 > 科技观察

数据是自动化和智能化的基础

时间:2023-03-22 00:19:40 科技观察

周五下午DTCC智能运维专场(Session19)由于临时原因,受邀担任嘉宾主持。好在是线上发布会,主持人形象不高,不然因为疫情,两个月没去理发店的本尊真的很难拍到。说到智能运维或者说自动化运维,其实主要还是靠数据智能和知识智能。知识智能的分析基础仍然是数据,所以无论是自动化运维还是智能运维,数据都是最关键的。在本周二的DBAIOPS社区培训中,我将介绍如何使用工具来运维自己的数据库系统。在里面,我强调“知识自动化”的基础是数据。知识自动化系统从数据收集开始就充满了专家经验。和知识。既然数据如此重要,那么我们需要什么样的数据呢?传统的运维自动化系统只是针对告警采集数据,当告警发生时再补充分析其他数据。这种模式在智能运维时代越来越不合适。为了实现自动化智能分析,需要有比较完整的数据。利用这些数据,可以在第一时间捕捉到故障现象,进行分析和归类,一般问题已经归类,同时通知运维人员。一起通报。这样的告警可以加快故障定位,缩短故障排除时间。我画了一个临时草图,不完整。如果你对数据库需要收集哪些数据感兴趣,可以安装一套D-SMART社区版。在监控信息中可以看到D-SMART使用的监控信息。您可以在基本信息中查看配置相关信息。在集群拓扑中可以看到相关的关联信息。这些数据有的可以自动采集,有的不能采集,需要在配置时手动输入。有句话说,书到用时,恨之入骨。事实上,直到分析问题的时候,才会发现足够多的数据。昨天有朋友在网上发了一份AWR报告,请人帮我看一下。正好有空,就下载下来看了一下。这个案例很有意思。乍一看,系统的问题有几条线索。从AWR的角度来看,DBTIME确实很高,与LoadProfile完全不符。从以上数据可以看出系统的负载极小,每秒执行次数只有153次,但是负载低有两种可能。一种是来自上游的SQL并发量很小,另一种可能是当时系统出了问题,造成了一定的阻塞,所以并发量下降了。从TOP等待事件来看,第一个就是lru链的latch等待。这种等待并不常见。我们看到更多的CBC闩锁在等待。这种latchwait一般发生在DBCACHE不够用的时候。在这么小的并发访问下出现这样的等待确实是非常罕见的。但是看到freebufferwaits在第三位,writecompletewaits在后面等着,心里有点感慨。从这里可以看出,freebufferwais是由于DBWR写脏块慢,触发了LRU链latch等待。本来以为只要确认写IO有性能问题,就基本可以定位问题了。于是立即查看后台进程的writeIO相关指标。没想到写IO的性能指标没有问题。文件写入平均延迟3毫秒,日志写入平均延迟小于1毫秒。按理说这样的写IO性能不会有这么大的影响。但是我们也从后台进程等待中发现了一些特殊的东西,比如发现当时有一个备份相关的等待。由于无法直接得出结论,因此必须进一步查看更多信息。从IO情况分析,确实读写IO不大,表空间的读写延迟没有问题。但是从文件IO情况的汇总信息中还是可以看出一些特别的东西。这个RAC系统实际上是把数据文件存储在ACFS上。在11.2.0.4上使用ACFS还是有很多坑的。从这里我们找到了新的线索,是不是因为ACFS的BUG导致了IO性能问题,进而导致了这个问题?这需要log和TRACE信息,我们在AWR报告中找不到答案。从参数部分,我们也发现了一些异常。很多配置来自OracleODA一体机的配置模板。这是Oracle一体机吗?另外cpu_count=8也有些不正常,因为从OS信息可以看出这是一个36核的双向服务器。难道这台服务器上还有其他数据库实例?AWR报告中没有发现这些问题。您必须与运维人员沟通获取相关信息。对于这些问题的不同回答,很可能问题分析的方向也会发生变化。如果数据库不是运行在Oracle一体机上,那么很多参数设置都是值得商榷的。如果这个服务器只被一个实例使用,CPU_COUNT=8是一个很可能导致latch问题的设置,刚才我们看到的IO负载小的结论是不存在的。因为我们要查看整个服务器上所有实例的IO负载,才能知道IO负载是否过高,这就需要OSW数据作为分析的补充。传统的以人为中心的分析往往是一点一点地收集数据,但需要实现自动或智能分析。这些数据收集必须是自动和高质量的,这样整个分析过程才能成功自动化。甚至有些数据可能无法自动采集,必须由运维人员手动输入。比如redo是放在SSD上的吗?好像从REDO的写IO延迟就可以看出这一点。数据文件是存储在SATAHDD还是NVMESSD上?如果存储在SATASSD上,虽然3毫秒的写入延迟有点慢,但还是可以接受的。如果是NVMESSD,说明IO性能下降比较明显。通过这个案例,我们也可以看出完整的数据对于智能运维的意义。其实这也是最难说服领导的地方。我曾经和一个客户交流过关于构建智能运维诊断系统的问题。但是客户不愿意花钱修改运营指标采集模块。他认为他们已经使用ZABBIX好几年了。仅仅根据zabbix收集的数据做上面的分析和应用是不够的。为什么要花更多的钱?