数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

时间:2021-03-22 13:40:50

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?从马车到汽车是为了提升运输效率,而随着时代的发展,如今我们又希望用自动驾驶把驾驶员从开车这项体力劳动中解放出来,增加运行效率,同时也可减少交通事故发生率,这也是企业对于智能运维的诉求。

从人工运维到自动化运维是为了减少人力成本,降低操作风险,提高运维效率,但自动化运维的本质依然是人与自动化工具相结合的运维模式,仍有局限性。为了持续地面向大规模、高复杂性的系统提供高质量的运维服务,智能运维(AIOps)应运而生。

本文,袋鼠云将跟大家分享智能运维大数据平台(一款开箱即用的运维监控平台)在Oracle数据库运维场景下的具体应用。

一、数据采集

使用平台第一步是数据接入。要做好Oracle的运维,需要哪些数据支撑?根据我们运维Oracle日常的经验总结,以下几类数据是特别重要的:

实例和数据库基础信息

包括实例的版本、Patch、启动时间、实例参数、主机基本配置信息。

数据库健康检查

检查数据库是否能正常连接,读写响应时间是否正常。

实例基础性能数据

包括业务的QPS、TPS,实例和主机的CPU使用率、内存使用率、连接数使用率,SQL解析情况,数据库的逻辑读、物理读,数据库锁等待状况,以及RAC集群间的通信状况。

Oracle等待事件

采集Oracle内部等待事件的类型、等待次数和消耗时间。从等待事件可以判断实例运行的整体健康情况,定位实例瓶颈。

数据库空间使用信息

包括表空间文件占用空间、表空间使用空间、临时表空间使用情况、UNDO表空间使用情况。需要实时监控表空间使用情况,避免表空间占满引起故障。

数据库Session信息

Session信息记录了实例当前运行的SQL情况,记录了当前阻塞Session的具体信息,比较常见的如锁等待。通过Session信息,方便快速定位实例中的阻塞现象。

数据库备份情况

在数据库运维领域,备份重于泰山。每天都需要检查数据库的备份情况,包括备份是否成功,备份耗时,备份占用空间等。

DataGuard运行状况

DataGuard是Oracle高可用最常用的方案之一。需要实时检测Oracle DataGuard的运行状况,包括日志传输是否正常,日志应用延迟。

日志信息

数据库的告警日志、TNS监听日志。从日志中可以发现数据库内部运行错误、异常的客户端连接信息等。

上述的数据采集,已经集成在产品中。用户只需要在数据库性能采集模块配置接入信息,就会自动采集这些数据。

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

数据接入之后,产品上会从几个方面来使用这些数据:

仪表盘

系统默认带了Oracle场景的通用仪表盘。用户也可以根据自己的使用习惯,通过SPL的方式配置自定义仪表盘。

监控告警

系统内置常见的监控告警。也可以通过SPL的方式配置自定义告警项。数据只要采集到了,就可以用于配置告警。

智能巡检

系统支持配置自定义巡检规则,按用户定义的时间间隔,定期进行数据库巡检。

日志分析

基于系统采集的Oracle告警日志、TNS监听日志,除了使用基本的日志搜索、监控告警,也可以配置一些日志分析的场景。

本文重点介绍仪表盘的使用。

二、Oracle仪表盘

仪表盘是数据可视化展现的基本形式,便于用户从直观上了解系统的整体运行状况。

1、Oracle实例总览

Oracle总览Dashboard主要包括这几个部分:

  • 实例统计,包括实例总数,异常实例数,数据库数量,实例版本分布。通过这几个指标,能对接入系统中的实例有一个大体的了解。
  • TOP实例,包括繁忙率TOP实例,活跃会话数TOP实例。

通过这2个指标定位繁忙的实例。

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

  • 异常实例列表
    这个表格展示所有无法连接的实例,包括连接报错信息。
  • TOP性能趋势图
    选取数据库的核心指标,对整体实例的运行状况有一个整体的了解。选取的指标:
    · DB Time使用率:体现实例整体繁忙程度
    · DB CPU使用率:CPU资源的使用率。
    · 活动会话数:是否后SQL积压
    · 会话数使用率:Session资源使用率
    · QPS/TPS:展现业务请求吞吐量

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

2、Oracle实例详情

该仪表盘用于展现单个实例的运行详细状况。仪表盘主要分如下几个部分。

1)实例信息
显示实例的基本信息,包括主机情况,实例运行状态,实例的版本,数据库的角色,读写模式等

2)实例运行情况
展现实例的核心运行指标。
· 阻塞会话数/活跃会话数
· DB Time使用率
· 实例当前会话数使用率
· CPU使用率趋势
· 实例会话数趋势
· SQL执行量/SQL解析量
· 实例逻辑读/物理读
· 实例网络流量
· 实例IO请求次数

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

3、 Oracle实例空间总览

该仪表盘展现实例的空间使用情况。主要包括几个部分:

1)实例总空间分布

展现所有实例的空间分布情况。

2)实例使用空间TOP

展现空间使用率TOP实例的空间变化趋势。

3)实例表空间相关信息

展现所选实例的表空间数量、实例总空间以及空间同比和环比、UNDO空间和TEMP空间、闪回区空间使用情况。

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

4)实例表空间使用率和占用空间排名。

5)实例表空间使用率TOP趋势

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

6)实例表空间列表

展现实例所有表空间的空间使用情况。

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

4、Oracle阻塞会话

该仪表盘展现实例中阻塞会话的情况,仪表盘主要有几个部分组成。

1)TOP阻塞会话趋势图

展现系统中所有实例的阻塞会话数变化趋势。如有阻塞会话,需要特别关注。

2)实例等等事件分布图

展现所选实例的阻塞会话的等待事件分布情况。

3)阻塞源分析

展现哪些Session引起了其它Session阻塞。

4)等待事件趋势

实例等待事件趋势。

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

5)阻塞会话列表
以表格的形式展现阻塞会话的详细信息,包括:
· Session ID
· 会回登陆时机
· 会回当前状态
· 引起阻塞的会话ID
· 阻塞对象ID
· 等待事件
· 等待时间
· 登陆用户信息,包括用户名,登陆终端,应用程序名称。
· 执行的SQL信息,包括SQL ID,SQL语句。

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

通过上面这些仪表盘,既能从总体上掌握所有实例的基本运行状况,也能在单个实例上进行深入的分析,细到具体执行的SQL。能从总体上把握所有数据库的空间使用趋势,也能看到单个表空间的数据使用情况。

三、总结

上面的案例,是智能运维大数据产品在Oracle数据库运维场景下的一个具体应用。

其实整个产品,完全不局限于数据库运维这个场景。

产品在数据采集和数据应用上,具有强大的扩展能力。

1)自动巡检
所有的指标,都可以配置成巡检项,系统支持自定义调度周期(小时粒度),定期巡检系统的运行状况,以钉钉消息或邮件的方式发送出来。

2)全链路的监控
上面只介绍了数据库的场景,其实系统支持整个链路上的数据采集、分析。目前系统支持的采集包括:
· 物理设备信息采集(物理机CPU风扇、磁盘、温度、电源状态)
· 网络设备(交换机、防火墙、无线AP)
· 阿里云云产品数据采集,支持几十种云产品的数据集成。
· 通用软件(Docker,Tomcat,消息中间件)
· WEB访问日志、防火墙日志、主机日志
· 应用日志数据
· APM应用调用联路数据采集

3)智能算法
自动基线学习,无需配置告警,就能自动监测系统运行异常状况。

「智能运维大数据平台」

「智能运维大数据平台」是一款开箱即用的运维监控平台,通过特有的平台功能可以将企业的基础架构、应用程序、日志管理结合在一起,提供统一采集、统一存储、关联分析、统一监控企业业务保障能力,保障企业业务稳定高效运行,同时利用离线计算、实时计算、机器学习等技术,实现运维数据共享、数据开发和加工能力,让开发人员、运营团队和业务团队协同工作,构建和改进软件应用程序,并帮助企业了解业务和用户使用情况。被各大企业用于实现数字转型和云迁移,推动开发,运营和业务团队之间的协作,加快应用程序的上线时间,缩短解决问题的时间,了解用户行为和跟踪关键业务指标。

数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

数栈是云原生—站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变化的数据,是全域、异构、批流一体的数据同步引擎。大家喜欢的话请给我们点个star!star!star!

github开源项目:https://github.com/DTStack/flinkx

gitee开源项目:https://gitee.com/dtstack_dev_0/flinkx