近来接触国产达梦8数据库,对于运维来说监控数据库的运行必不可少,那我们常用的监控工具ZABBIX要如何才能实现对它的监控呢?本文使用odbc连接达梦8实现对数据库运行的监控。
要实现ZABBIX对达梦数据库的ODBC监控,必须要在zabbix server或proxy安装odbc相关支持库。我们使用的Debian操作系统配置好安装源,使用:
apt install unixodbc unixodbc-dev
安装最新版本(我安装的版本是2.3.6,达梦指导书是使用源码安装,达梦ISO里的源码是2.3.0的版本,因不想在生产机上安装编译环境没有测试)。
安装完成成后使用下面命令查看odbc有关默认配置文件位置,使用apt的安装的是在/etc目录下。
odbcinst -j

参考官方手册,编辑/etc/odbc.ini

编辑/etc/odbcinst.ini

然后我们使用isql dm8去连接测连接数据库会报错,显示无法找到libodbc.so。这个文件是需要从安装达梦的服务器中复制过来的。复制后还是无法正常加载是因为关联的*.so文件未有复制,可以使用下面的命令查看依赖关系。
root@zbx54-cloud-proxy-10:/etc/apt/apt.conf.d#ldd usr/local/lib/dm8/libdodbc.solinux-vdso.so.1 (0x00007fffcbb7b000)libdmdpi.so => not foundlibdmfldr.so => not foundlibdmelog.so => not foundlibdmutl.so => not foundlibdmclientlex.so => not foundlibdmos.so => not foundlibdmcvt.so => not foundlibdmstrt.so => not foundlibrt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ffbcff30000)libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0(0x00007ffbcff0f000)libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ffbcff0a000)libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6(0x00007ffbcfd86000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ffbcfc01000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ffbcfa40000)libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1(0x00007ffbcfa26000)lib64/ld-linux-x86-64.so.2 (0x00007ffbcff71000)
但我们仅将这些显示依赖的文件复制到zabbix服务器是不是够的,建议将达梦安装目录的/bin/*.so所有文件复制到zabbix服务器。
完成后测试:
root@zbx54-cloud-proxy-10:/usr/local/lib/dm8#isql -v dm8+---------------------------------------+| Connected! || || sql-statement || help [tablename] || quit || |+---------------------------------------+
显示如上信息表示已可以正常。
下面我们就可以开始新建zabbix监控主机并配置监控项。
例:如下图建立内存使用情况的监控项:


配置完点击上面的测试按钮进行测试(该功能是ZABBIX4以上版本才有的功能)。

点击上面的Get value and test如果能获取结果而不报错就说明一切都配置成功了。
当然通过传统的这种方式一次只能获取一个监控项数据效率比较低,但ZABBIX4(我使用的是ZABBIX5)以后的版本提供了“Dependent items”,我们可以通过一个SQL语句获取较多的监控项,然后从它生成有关监控项数据,如果有需要后面我们定义达梦数据库监控模板将使用该方式,这里仅抛砖引玉,仅为学习使用达梦数据库。




