利用开源工具监控DB2数据库

    在笔者所管理的系统中,运行着十几个V8 DB2数据库,当中还开启了分区并行的功能。长期以来一直受监控手段缺乏的问题困扰。能够对DB2进行有效监控的管理软件乏善可陈。同为IBM出品的Tivoli软件集里,有一套名为Tivoli Monitor的管理软件,该软件号称集网络管理,主机管理,数据库管理等功能一身,能对IT基础设施进行综合统一的管理。然而,从5.x版本到6.2版本(期间经历了数年之久),仍然未能实现对DB2数据库进行有效的监控管理,尤其不能支持分区型的数据库(该类型数据库一般运行在数据中心系统里)。根据IBM技术支持团队的官方回应,Tivoli Monitor 6.2版本只支持V9的DB2数据库。Tivoli Monitor对其他类型的DB2数据库的监控管理也不能尽如人意,特别是Agent软件的稳定性和对受管系统的影响这些问题比较突出。

 

        为能够实现对DB2数据库的监控管理,采集性能数据,为系统监控、扩容、调优、问题发现提供数据依据,笔者利用开源的工具实现了一些DB2数据库的管理功能,主要是历史性能数据的采集、分析和展示,以及状态和性能数据的即时查看等功能。用到的工具主要有:CentOS(一个免费的Linux操作系统)、Perl、rrdtool、Apache、PHP。

 

        下面介绍一些实现的方法。

 

        一直以来来,DB2数据库服务于多数的金融行业的机构和企业,是一个成熟的大型数据库软件。其在运行过程中,不停的采集、维护和更新自身的运行数据。这些数据可以通过一个叫做快照(snapshot)的接口获取。DB2的命令行处理器(CLP)和SQL函数都支持通过快照接口提供DB2数据库的状态和性能数据。基于这些数据,可以了解、监控和分析DB2数据库各个方面的运行情况,如:缓冲池、表空间、锁、事务、负载、应用程序等。

 

        为了可以对多个DB2数据库进行管理,管理软件必须具备远程连接DB2数据库的能力,并通过这个连接获取数据库的运行数据。为此需要在管理主机上安装DB2 Runtime Client(RTCL),该软件提供DB2数据库的连接库,随DB2数据库软件一起发布,也可从IBM的官网上获取。

 

        安装了RTCL后,需要为编程语言(Perl)安装DB2数据库的接口模块(DBI和DBD::DB2)。DBI一般随Perl的发行版本一并安装,DBD::DB2可通过CPAN获取和安装。

        到此,可以用Perl编写监控DB2数据库的程序。但为了能让程序有效运行,还须在管理主机上用CLP对受管的DB2数据库进行编目。所谓编目,是将受管DB2数据库的IP地址、服务端口、数据库名等信息向RTCL注册保存,在连接数据库时使用。

 

        连接到DB2数据库后,主要通过SQL语句调用快照接口获取数据库的运行数据,以下是一个例子:

        SELECT * FROM TABLE( SNAPSHOT_DATABASE('数据库名', ‘分区号’) ) AS SNAPSHOT_DATABASE

        其中数据库名是受管DB2数据库的名称(创建时指定的名字);分区号可以为-2,代表整改数据库,-1当前节点的数据库;

        SNAPSHOT_DATABASE函数获取数据库的整体运行情况。还有很多这类的快照函数,分别提供DB2数据库不同方面的信息,例如SNAPSHOT_DBM函数获取数据库实例的运行信息;SNAPSHOT_TBS函数获取表空间的运行信息;SNAPSHOT_BP函数获取缓冲池的运行信息。

        还需注意的是:

        1)DB2数据库存在一些开关设置来控制快照数据的生成,因此需要根据监控需求开关相应的控制开关,以让DB2数据库生成快照数据

        2)对快照接口的调用需要一定的权限,因此程序连接数据库时所使用的帐号应具备获取快照数据的权限

        获取到快照数据后,将其整理,然后存入RRD文件中。

 

        RRD文件中的数据,主要由PHP程序读取、分析、处理,然后通过web发布。

以下是监控效果图

 

1)  事务量监控

2)  SQL语句监控

3)排序监控

4)表空间容量监控

5)根据历史数据执行的表空间的容量预测分析


6)根据历史数据而执行的数据库的年度分析

你可能感兴趣的:(DB2管理,db2,工具,数据库,tivoli,database,perl)