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

如果数据库运维具备可观察能力...

时间:2023-03-20 12:59:34 科技观察

可观察性对于数据库运维来说非常重要。我们应该为客户提供什么样的数据库可观察性能力?我记得20年前,当我第一次看到Oracle的聚光灯时,我感到震惊。在遇到这个工具之前,我用过的最好的Oracle工具是TOAD。甲骨文在这个工具上的工作我们已经看到了太多的细节。SpotLight可以说是我了解Oracle数据库内部结构的第一位老师。很多DBA从SpotLight等工作机制猜测Oracle的UNDO/REDO/DBCACHE/SHAREDPOOL。二十年前,SpotLight可以被视为Oracle数据库可观察性的巅峰之作。随着对数据库内部原理的了解和对系统优化的深入了解,我已经十几年没有使用过SpotLight了,因为SpotLight的可视化界面离我对Oracle可观察性的要求还差得很远。数据库可观察性不再是将数据库内部的各个组成部分以非常通俗易懂的方式图形化展示出来,而是需要了解数据库内部运行的特点和风险,需要采取哪些预优化措施。不同类型的用户对数据库可观察性能力的需求也大不相同。数据库可见性或可观察性不是指那些花哨的图形和图表,而是指运维人员可以使用工具、脚本和接口来依赖这些数据库的各种指标、日志、状态和统计值基础自动化数据分析的能力。昨天,我们团队与一位用户进行了一次交流。他和一行几人,利用D-SMART的核心能力,对600多套数据库的日常运维进行监控。我们问他最常用的功能是什么?有没有每天看日检报告,关注这些数据库的健康、性能、负载模型。他的回答很简单:对我们来说有点意外,但却鼓励了我。对于这样的运维场景,运维人员没有时间整天监控。遇到运维体验告警,使用自动诊断工具和TOPSQL工具分析定位问题。并通过非常详细的采集指标进行一些判断和确定,以验证自动分析的结果。这确实是我们在设计D-SMART时最适合这类用户使用的方式。数据库的可观测能力已经集成到工具中,无需通过可视化监控浪费人力资源。D-SMART会在本地建立完善的数据库,智能分析工具帮您自动分析。运维人员要做的就是信任这个工具,只有在工具发出告警的时候才使用这个工具。同时,记录本工具的分析错误,反馈给技术团队,以便我们进一步优化算法。日常巡检功能只在数据库刚连接监控时使用。从日常检查中,他们可以发现一些在数据库安装部署时,或者系统刚上线时遇到的问题。一段时间后,他们不再过多关注日常检查中的一些常见问题。当一些重大隐患出现时,通过运维体验告警通知他们,这对他们来说已经足够了。这种接近极限的极简模式下的运维操作,看似不需要复杂的界面,但运维场景是多样的。前段时间,我们认识了一位金融用户。我们同事教他看运维经验告警。他说,他的主要工作是监控银行核心系统的状态,一旦有风险就第一时间分析处理,所以等不及运维体验告警了。这才做分析,因为他的日常工作就是随时准备处理核心系统的问题,一旦有核心指标出现异常,他会第一时间进行分析。所以他们需要通过看板来运维。因为关注的系统比较多,关注的指标比较多,不适合使用SpotLight模式。需要一个非常直观,可以看到更多细节的看板来满足他的需求,所以表格型的看板是最合适的模式。这个板子有他们关心的所有指标,当某个指标异常时,它可以自动变红,同时点击这个指标进入相应的分析模块。从数据库运维的实践来看,我们不仅需要数据库系统提供大量可观察的数据,还需要合适的工具来辅助对这些数据的分析和解释。数据库固有的复杂特性可以通过一系列方便的工具进行封装,我们也需要能够非常方便的访问到最原始的数据,供专家分析和使用。因此,从运维的角度来看数据库的可观察性,其实除了数据库产品提供的可观察性能力,我们还需要能够充分发挥数据库可观察性能力的工具。从这两个典型的需求可以看出,在运维工作中,DBA所需要的数据库可观察能力其实是非常复杂的。在不同的场景下,我们可能需要不同的能力。即便如此,我们也可以构建这些场景的超集来满足各种需求。事实上,Oracle的OEM就是一个很好的例子。常年使用OEM监控系统的ORACLEDBA可能很少(其实OEM不仅可以用于Oracle运维,还支持大量的第三方数据库、中间件等产品).OEM将所有运维对象离线的可观察性数据收集到自己的数据库中,然后利用这些数据进行展示和分析。有的朋友可能觉得收集运维对象的数据并不复杂。直接使用标准的SNMPMIB库不就行了吗?如果你没有深入研究过数据库、中间件等运维对象,你可能会认为SNMPMIB库很强大,但如果你真正认真研究过MIB库,你会发现大部分由SNMP提供的能力MIB库是基于网管时代运维监控的思想。用它做监控是很不愿意的,但是用它做分析诊断是绝对不可能的。一些受MIB库影响的开源监控平台也存在类似问题。如果不做深度定制,直接使用,在运维可观察能力上还是不够的。全面的可观测能力建设需要投资。所以,在这方面的能力建设的时候,需要根据自己的实际需要来进行能力建设,逐步积累能力,而不是总想着一夜之间。可观察性能力建设并不是那么高不可攀,那么高大上,只要你能利用这个能力来完成你的运维目标。就算是统计当前数据库中事件发生顺序的SQL,那不是很好的观察能力吗?只要这种能力积累多了,运维能力不就变强了吗?如果简单的话,运维角度的数据库可观察性就是这么简单。