利用开源工具监控DB2数据库
在笔者所管理的系统内运行着十几个V8 DB2数据库,并启用了分区并行功能。长期以来一直面临着监控手段不足的问题困扰。目前针对DB2数据库的有效监控软件非常有限。IBM推出的Tivoli系列软件集合中有一款名为Tivoli Monitor的管理软件声称集成了网络管理、主机管理和数据库管理等多种功能,并声称能实现对IT基础设施的整体统一管控。然而,在5.x版本至6.2版本之间(跨越了较长时间),这款软件始终无法实现对DB2数据库的有效监控与管理系统元支持分区型数据库(此类数据库通常部署于数据中心系统中)。根据IBM技术支持团队官方反馈,在6.2版本中Tivoli Monitor仅支持V9系列DB2数据库的表现并不尽如人意;此外该软件基于Agent的技术也存在稳定性不佳及对受管系统的潜在影响等问题
为了实现对DB2数据库的监控管理并收集性能数据,在系统监控、扩容及优化性能的同时排查问题以便提供依据笔者通过开源工具实现了部分DB2数据库的功能主要包括完成历史性能数据的采集分析与展示以及实时状态与性能信息查看所用的主要工具包括基于Linux的操作系统——CentOS(一个免费版本),编程语言 Perl 以及 rrdtool 工具;此外还有Apache 服务器及PHP 编程语言
下面介绍一些实现的方法。
DB2数据库一直服务于多数的金融行业机构与企业。它是一个完善的大规模数据库软件,在运行过程中持续采集、维护与更新自身的运行数据。这些数据可通过快照接口获取。其命令行处理器(CLP)及SQL函数均能提供DB2数据库的状态与性能信息。基于上述信息能够分析缓冲池运作情况以及管理表空间等其他关键组件。
为了实现对多台DB2数据库的管理目标,
管理软件需要具备远程连接能力,
并可通过此功能获取运行数据。
因此建议在管理主机上安装DB2 Runtime Client(RTCL),
该软件会提供相应的连接库,
可从官方渠道获取;
另外一种途径是从IBM官网下载
在安装 RTCL 之后,必须对 Perl 编程语言实现与其数据库的连接操作。这包括两个主要组件:即 DBI 和 DBD::DB2。其中 DBI 通常会随 Perl 发行版一同提供。而 DBD::DB2 则可通过 CPAN 网站获取相应的代码并进行本地编译与安装。
到此为止, 我们可以利用 Perl 语言开发一个监控 DB2 数据库程序. 但为了确保该程序能够正常运行, 必须在管理主机上完成编目工作. 编目过程包括获取受管 DB2 数据库的 IP 地址. 服务端口以及数据库名称等关键信息, 并通过 RTCL 系统将其注册存储; 随后, 在进行数据库连接操作时,默认会调用这些预先存储的信息.
在成功连接至DB2数据库后,在使用SQL语句调用快照接口来捕获数据库运行的数据时,请注意以下几点:例如,在执行特定查询时生成的时间片数据就可以用来评估系统的实时性能。
Select 最佳字段组合从指定表中调用SNAPSHOT_DATABASE函数获取'数据库名'和'分区号'的值,并将其结果命名为SNAPSHOT_DATABASE
其中数据库名是管理DB2数据库的名称(在创建时指定)。分区号可取值为-2和-1:-2表示需要对当前数据库进行修复操作;而-1则表示仅修复本节点对应的数据库。
该数据库运行的整体状态可通过SNAPSHOT_DATABASE函数获取。此外还有其他类似快照函数也分别提供DB2数据库各方面的详细信息。如SNAPSHOT_DBM用于获取数据库实例的状态信息、SNAPSHOT_TBS用于获取表空间的信息以及SNAPSHOT_BP用于了解缓冲池的状态。
还需注意的是:
为了创建快照数据而DB2数据库配置了若干管理参数以管理和组织快照信息的存储过程
在访问快照接口时需要特定权限。这要求程序在连接数据库时使用的账号必须拥有获取快照数据的能力。
获取到快照数据后,将其整理,然后存入RRD文件中。
RRD文件中的数据,主要由PHP程序读取、分析、处理,然后通过web发布。
以下是监控效果图
- 事务量监控
- SQL语句监控
3)排序监控
4)表空间容量监控
5)根据历史数据执行的表空间的容量预测分析
6)根据历史数据而执行的数据库的年度分析
