数据库监控体系建设(一)

这篇文章先总结一下数据库监控体系建设那些事儿,下一篇文章描述具体的详细部署过程

1. 背景

作为核心IT业务模块,数据库的重要性毋庸置疑,数据库的稳定运行直接关系到应用系统的可用、稳定、高效性。因此,为确保数据库稳定、高效的运行,我们需要面临如下两个挑战

1.        数据库运行过程中的危险因子,怎么及时发现?

2.        数据库发生故障或因某些原因导致处于不正常工作状态时,怎样及时发现?

 为了解决上述的两个难点,必须建立数据库监控体系,7*24实时监控数据库的运行状态,在数据库即将出现问题或已经出现问题时,通过立即触发事件来及时预警,使运维人员能够及时予以处理,确保数据库稳定、高效的正常运行

2. 数据库监控架构

数据库监控体系建设(一)


解释说明

(1)    生产库代表对外提供服务的线上数据库,即需要进行监控的数据库

(2)    监控数据采集数据库,集中抽取每一个生产库的监控数据并保存(通过调度任务定时完成),并且将达到预警阀值的监控数据,经过加工处理后发送至“告警推送服务器”

(3)    告警推送服务器,接受来自“监控数据采集数据库”的预警数据,通过邮件发送程序,将预警信息以邮件形式及时发送给运维人员

3. 数据库监控种类及属性

当前数据库监控体系中部署的监控种类以及其它一些属性如下表格

序号

监控种类

监控频率

备注

1

Oracle数据库UNDO表空间使用率告警

10分钟

监控undo表空间使用情况

2

Oracle数据库TEMP表空间使用率告警

10分钟

监控temp表空间使用情况

3

Oracle数据库序列使用率告警

每天上午9点

监控序列使用清理

4

Oracle数据库连接数异常告警

10分钟

监控数据库连接数情况

5

Oracle数据库表空间使用率告警

20分钟

监控数据库表空间使用情况

6

Oracle数据库会话undo使用量告警

5分钟

监控会话undo使用情况

7

Oracle数据库用户密码过期告警

每天上午9点

监控用户密码过期情况

8

Oracle数据库PGA使用率告警

10分钟

监控数据库PGA使用情况

9

Oracle数据库锁异常告警

5分钟

监控数据库内锁资源争用情况

10

Oracle数据库共享池使用告警

10分钟

监控数据库共享池使用情况

11

Oracle数据库活动连接数告警

2分钟

监控数据库两分钟类活动连接情况

12

Oracle数据库索引异常告警

30分钟

监控数据库索引状态情况

13

Oracle数据库性能告警

1分钟

监控数据库性能情况

14

Oracle数据库通断告警

1分钟

监控数据库可用性情况

15

Oracle日志监控告警

10分钟

监控数据库运行日志情况


备注

由于表格篇幅所限,一些其它属性将在后续体现,例如每一监控种类的阀值等等属性

4. 数据库监控体系特点

凡事不可能完美,数据库监控体系也一样,目前搭建完成的数据库监控体系架构,受专业和能力受限,存在如下不足

1.    及时性,无法以语音形式将告警信息通知运维人员(电话方式),目前只能以邮件形式发送告警信息,因此肯定告警信息肯定存在延迟发现,特别是晚上时间段;

2.    健壮性,数据库监控体系架构中的“生产库”和“监控数据采集数据库”都已部署通断告警,但是“告警邮件推送服务器”(数据库)由于暂时没有完成自监控,在出现问题时,会导致整个监控体系奔溃而不能及时发现(当前只能每天早上9点和6点发送一条监控运行状态邮件来自检)

3.    专业性,由于编程能力有限,数据库监控体系完成后,肯定存在很多bug和未知缺陷,没有经过长期的运行和考验,无法进一步完善

4.    全面性,当前仅部署了15个种类的监控(根据经验实施),由于系统具体特殊性,肯定存在监控盲点,需要后续运行过程中才能一步一步完善

 

当前已经搭建完成的数据库监控体系架构特点如下

1.   告警信息通过邮件发送和接收(139邮箱),进一步通过手机短信接收邮件通知和内容
2.    每一个监控种类都是通过一个单独的程序包完成,任何一个监控种类出现异常时(调整或出现bug),不影响其它监控种类的正常运行
3.    每一个生产库的监控数据采集都是通过一个“监控数据库配置表”控制,可以通过修改flag字段来控制对应生产库的监控数据采集与否,进一步控制该生产库告警与否
4.    每一个监控种类的数据采集都是通过一个“监控种类配置表”控制,可以通过修改flag字段来控制对应生产库的相应监控种类的监控数据采集与否
5.    通过“监控阀值配置表”可以实现对于同一类别监控,可以根据系统的重要级别,设置不同的监控阀值。即每一个监控种类可以通过修改监控阀值字段,个性化设置监控类别的监控阀值,从而使不同数据库的相同监控种类的可以设置不同告警阀值(为后续系统等级重要性设置不同阀值)
6.    通过“告警发送配置表”可以实现采集监控数据(用于分析),但是不发送告警信息的目的
7.    所有的监控数据都通过“监控数据采集数据库”统一采集、加工处理,最后发送至“告警推送服务器”,其中监控数据保存最近半个月,用于分析和查看

5. 数据库监控体系建设步骤

数据库监控体系建设步骤简单归纳为如下表格

步骤

内容

1

确定需要部署的监控种类

2

在“监控数据采集数据库”上配置所有待监控的数据库的TNS

3

确认配置的TNS准确性

4

在所有待监控的数据库上创建监控用户

5

在所有待监控的数据库上创建监控查询视图

6

随即选取一个待监控的数据库登录,检查“步骤四”创建的视图的有效性

7

在“监控数据采集数据库”上创建数据采集用户,同时创建指向所有待监控数据库的database link,并验证有效性

8

在“监控数据采集数据库”上创建数据采集表,针对每一个监控类别创建一个数据采集表

9

在“监控数据采集数据库”上创建几张重要监控相关的配置表

10

给上一步创建的各类配置表添加基本数据

11

建立与告警发送服务器的通道,以数据库方式建立通道联系

12

建立所有监控数据采集程序和告警数据发送程序

13

建立定时调度任务,定时采集监控数据和发送告警信息

14

建立邮件发送程序,在“邮件发送服务器”上完成邮件发送程序的部署

15

建立“监控采集数据库”的通断监控,防止由于监控采集数据库出现异常而导致整个告警体系崩溃的自检

16

监控“告警发送数据库服务器“情况,这里只部署为每天早上9点和晚上6点发出一次运行正常的邮件信息

17

数据库alert日志监控部署,由于alert日志监控特殊性,单独部署

18

后续扫尾工作,定时清理监控数据,创建索引等



备注:这篇文章介绍的监控体系建设方案只适合中小规模环境,对于那种及时性、稳定要求高的环境,由于监控及时性等需求无法满足,肯定不适合本文介绍的方法。而且这篇文章仅仅提供一个监控体系的参考方案,仅供大家参考!

数据库监控体系建设(一),布布扣,bubuko.com

数据库监控体系建设(一)

上一篇:32位PLSQL_Developer连接oracle11g_64位


下一篇:MySQl 子查询,左右连接,多表连接学习笔记