Oracle数据库深度巡检工具的设计与实现

2019-09-25 04:16张利益李可王甲甲
微型电脑应用 2019年9期
关键词:日志运维工具

张利益, 李可, 王甲甲

(国网信通产业集团公司 安徽继远软件有限公司, 合肥 230088)

0 引言

当前,电力系统信息化持续深化,数据库种类和数量不断增加,其中Oracle数据库是电力信息系统中主流数据库。IT架构复杂性增长始终快于人员增长,熟悉业务的数据库运维人员积累缓慢,资源不足问题一直存在,运维人员疲于应付巡检和故障检修,因此对于数据库运维管理来说是一个巨大挑战,亟需提升数据库的自动化巡检能力与实时监控水平,提升Oracle数据库运维能力。

本文通过对运维现状进行深入分析,结合丰富的现场运维经验,设计研发了一套实用的数据库深度巡检工具。通过灵活定义监控指标,全天实时采集数据,发现数据库存在或潜在的问题,从而快速精准的解决问题,确保数据库能为应用提供稳定高效的数据存取服务,最终能够提高数据库运维效率,提升运维管理水平。

1 工具目标

Oracle数据库深度巡检工具基于运维人员对于Oracle运维的深度理解,结合日常运维经验,从配置,性能,运行,状态四大类指标构建了ORACLE数据库的指标模型。配合上高频的巡检,及时的告警,快速的检索,从而使ORACLE运维的规范化与智能化。

其中规范化指的是在日常运维工作中,通过此运维工具,统一管理数据库信息,自动化巡检数据库各项指标,规范化数据库的日常管理工作,防止出现误操作影响数据库稳定性。

智能化指的是,在资源管理、告警判断、日志查询中进行关联分析、根因分析,在出现故障时能够有效的为运维人员提供可靠有效的数据,能够快速并准确的定位问题。

2 总体架构

2.1 总体架构

本工具采用B/S架构,基于国家电网统一应用开发(SG-UAP)平台研发,研发语言是JAVA,项目的后台框架是SSH框架构成的三层架构,前端使用Easyui等技术进行搭建,数据库采用Oracle数据库与ElasticSearch数据库,消息队列使用Kafka组件,缓存使用Redis组件,本工具所有操作均在浏览器中完成。

2.2 系统架构

如图1所示。

图1 系统架构图

如上图所示。系统的主要功能有资源管理、自动化巡检、智能告警、性能监测、日志分析五大模块。主要被采集的对象为Oracle数据库。本地数据库存储由两部分组成,分别是结构化存储Oracle数据库与非结构化存储ElasticSearch数据库。其中ElasticSearch是一个能够提供高并发、易扩展、高可用的分布式搜索引擎,能够为系统提供一个易于查询和共享的接口,成为了企业级大数据解决方案的关键工具[1]。在此工具中主要用于存储数据库时序数列指标数据与数据库告警日志,极大的提高了查询效率与存储上限。

由巡检工具客户端发起采集请求,采集服务端响应客户端的请求,从数据库中远程的多线程获取采集信息。

系统主要功能为资源管理、自动化巡检、智能告警、性能监测、日志分析五大模块。

3 功能设计

3.1 数据采集

数据采集主要由指标数据采集与日志数据库采集两大类采集构成。Oracle数据库深度巡检工具将数据采集部分独立部署,通过远程调用发送指定参数则可以进行数据的采集。所有的数据采集均是通过协议来完成端到端的远程采集,其中的使用的主要协议是java数据库连接协议(Java DataBase Connectivity,JDBC)、安全外壳协议(Secure Shell,SSH)以及简单网络管理协议(Simple Network Management Protocol,SNMP)。通过多线程技术提升采集效率,将采集配置信息发送至采集服务消息队列上,通过消息队列可在一定程度上使数据实时计算效率明显提高。由多个线程去处理消息队列中的数据[2],去指定的数据库上进行数据采集,将返回的结果放入消息队列中再返回至客户端,客户端经过数据格式化处理后进行告警判断,并存入相应的数据库中。

3.2 资源管理

资源管理功能模块作为此工具的基础,统一管理了数据库资源信息。主要依托于现有配置管理数据库(Configuration Management Databse,CMDB)所构造,是真实环境中服务资产在软件系统中的逻辑体现,其目的是有效管理资产,并实现对其他服务管理流程的支持[3]。

其中主要涉及到数据库集群管理、数据库节点管理、主机管理、业务应用管理、连接配置信息管理、运维人员管理等模块构成。其中以节点管理为核心,节点部署于主机上,完善连接配置信息与运维人员信息,比如Oracle数据库连接配置需要从而能够为数据采集与巡检提供支撑。多节点隶属于数据集群,业务应用与数据库集群关联。

3.3 自动化巡检

本系统通过quartz组件按照设定的巡检频率对数据库进行定时巡检,定时巡检是基于准确时间点的自动化调度,同时也可以根据用户自己设定的时间间隔或设定的调度次数自动执行任务[4]。对巡检结果进行查询分析,能按指标输出每次的巡检报告。将监控指标固定于工具中,为运维人员巡检提供依据。运维人员可根据实际需求,自行设定的巡检指标和频率,实现巡检指标可配置,巡检报告可定制。

自动化巡检中主要巡检Oracle数据库以下指标:表空间、文件系统、集群状态、监听状态、等待事件、索引状态、运行时长、监听日志大小、归档日志占用率、连接数等指标。

3.4 智能告警

在实际运维中,运维人员通过人工方式不能第一时间发现数据库故障和隐患,对故障不能快速定位和及时处置,影响了数据库的正常使用。而智能告警通过智能预警功能第一时间能发现故障和隐患,将运维管理关口前移,做到主动运维,提高用户满意度。

通过预先指定告警规则,规则创建基于各维护专家经验,根据告警的发生规律实现关联规则的自动调整[5]。告警主要分为两大类,阈值告警可动态调整的为阈值调整。比如针对表空间使用率告警,随着一段时间的稳定运行,阈值也会随之降低或上升,从而更准确的进行告警。事件告警则是属于严重的告警,如数据库监听或集群状态异常,则表明数据库出现故障,需要立即进行处理。

3.5 性能监测

运维人员通过性能监测列表观察数据库的性能和负载情况,本工具采用时间模型建立Oracle数据库性能模型,以性能负载为主线,快速定位性能瓶颈,实现端到端性能监控。通过此模型可以精准追溯到性能瓶颈。其中涉及的性能指标主要为用户响应时长、等待事件、连接数情况、缓存命中率、DB TIME等指标。根据指标和日期建立基线。数据库运维人员根据选择的关键指标和日期建立基线。便于日后性能的比对分析。

除了数据库指标,数据库对象也同时体现出数据库性能情况。由于数据库中对象众多,我们对系统影响比较大的对象重点关注,一旦重点关注的对象发生突变我们能够及时掌握,防患于未然。这里我们选取了表空间、表、索引、SQL和长事务五类数据库对象作为性能分析的依据。对表和索引的访问频率的记录便于为后续制定历史数据归档策略提供依据;对未使用的索引也能及时清理,改善性能;对于执行次数较多或对系统性能影响较大的SQL加入重点关注,监测执行计划,并建立sql基线,发生变更及时预警;对长事务的监控能够及时掌握可能对数据库的影响。

3.6 日志分析

对Oracle告警日志、CRS日志、监听日志和ASM日志,通过采集服务进行对日志文件进行长连接,实时的读取内容并进行存储。由于数据库的日志都是非结构化数据,存储需要大量空间,另外全文检索效率也不高,对于这些大量日志需要构建非结构化数据的统一存储管理并建立搜索引擎,对日志中错误信息进行分类分级管理。这里我们使用了ElasticSearch作为日志存储的数据库。

能根据错误关键字分析诊断,一旦发现错误及时触发预警。能够根据开始结束时间实时的查询不同类型的数据库日志,并且提供丰富的图表直观的查询。

4 总结

本文结合当前流行框架技术,深入挖掘Oracle数据库运维经验,通过Oracle数据库深度巡检工具的设计与实现,实现了数据库资源统一管理、数据自动采集、全天候自动化巡检、数据库性能监测分析、阈值触发告警、日志智能分析等功能,从而帮助数据库运维人员进行高效的日常运维管理,运行状态监控诊断,优化数据库运行性能。极大地提高了Oracle数据库运维管理能力,故障处理能力,达到了预期目标。

猜你喜欢
日志运维工具
高速公路智能运维平台
一名老党员的工作日志
波比的工具
波比的工具
扶贫日志
基于BIM的供水管网智能运维管理系统设计
雅皮的心情日志
准备工具:步骤:
雅皮的心情日志
“巧用”工具