一、ODBC介绍
ODBC是Open Database Connect 即开发数据库互连的简称,它是一个用于访问数据库的统一界面标准。ODBC引入一个公共接口以解决不同数据库潜在的不一致性,从而很好的保证了基于数据库系统的应用程序的相对独立性。ODBC 概念由 Microsoft 开发,后来移植到其他平台。
Zabbix 可以查询 ODBC 支持的任何数据库。Zabbix 不直接连接到数据库,而是使用 ODBC 接口和在 ODBC 中设置的驱动程序。此功能允许更有效地监控不同数据库的多种用途——例如,检查特定的数据库队列、使用统计信息等。
二、数据库创建监控用户
- CREATE USER 'zbxmon'@'%' IDENTIFIED BY 'Zabbix1234$';
- GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbxmon'@'%';
注:此处以Mysql8.0为例。不同Mysql数据库版本授权语句可能存在差异,请根据版本自行百度。
三、安装数据库驱动
相信大家使用过ODBC监控过Mysql数据库的人都清楚Mysql根据各个版本情况驱动可能存在上下不兼容的情况。那么此情况可能会导致部分不兼容的设备监控失效。当然不会根据Proxy部署不同的驱动文件进而增加维护难度。如何使用相同的驱动进行适配。如下所示:
1、安装 unixODBC
下载unixODBC文件如下:
http://www.unixodbc.org/
编译unixODBC
tar -zvxf unixODBC-2.3.11.tar.gz
cd unixODBC-2.3.11
./configure --prefix=/opt/unixODBC-2.3.11 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
make && make install
2、odbcinst -j 输出配置信息
安装完成后如出现错误如下:
odbcinst: error while loading shared libraries: libodbcinst.so.2: cannot open shared object file: No such file or directory
解决办法
共享库文件安装到了/lib或/usr/lib目录下, 执行一下ldconfig命令
ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
3、安装mariadb驱动
tar -xvzf mariadb-connector-odbc-3.1.4-ga-rhel7-x86_64.tar.gz ##提前下载mariadb驱动
sudo install lib64/libmaodbc.so /usr/lib64/
4、配置驱动
odbcinst.ini配置文件用于ODBC 数据库驱动程序配置信息
- vim /etc/odbcinst.ini
- [MySql]
-
- Description=ODBC for MySQL
-
- Driver=/usr/lib64/libmaodbc.so
-
- Setup=/usr/lib64/libodbcmyS.so
-
- FileUsage=1
odbc.ini配置文件用于数据源配置信息
- vim /etc/odbc.ini
-
- [mysql]
-
- Description=MySQL test database
-
- Driver=MySQL
-
- Server=127.0.0.1
-
- User=zbxmon
-
- Password=Zabbix1234$
-
- Port=3306
-
- Database=zabbix
5、验证 ODBC 连接
isql -v mysql
四、服务端驱动说明
1、需要使用unixODBC功能,编译Zabbix/Proxy安装时需要添加--with-unixodbc 参数,系统需要安装如下依赖:
yum -y install unixODBC unixODBC-devel
2、修改服务端配置文件
Zabbix 使用ODBC 监控数据库性能需要使用 odbc poller进程,使用StartODBCPollers参数激活 ODBC 轮询器如下:
StartODBCPollers=3
五、关联监控模板
此处不做过多展示简单说明一下。添加主机并关联“MySQL by ODBC”监控模板,修改{$MYSQL.DNS}宏变量,用户密码宏变量可根据自身设置在ODBC配置文件中配置或在ODBC配置文件中去掉使用前端宏变量配置即可。
博主可能不能及时回答疑问,如技术问题欢迎加入交流。
博主具有丰富的模板资源和开发能力及项目落地管理经验分享欢迎加入交流
微信号:king_songax