千家信息网

Zabbix 3.2.6通过ODBC监控MySQL&Oracle

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,一、总览ODBC的监控和在Zabbix前端配置数据库监控条目类型基本一致。ODBC是用C语言编写的用于连接数据库管理系统的一个中间件,最初有微软公司研发,后来发展到各大平台。有了ODBC的支持,Zab
千家信息网最后更新 2024年11月11日Zabbix 3.2.6通过ODBC监控MySQL&Oracle

一、总览

ODBC的监控和在Zabbix前端配置数据库监控条目类型基本一致。

ODBC是用C语言编写的用于连接数据库管理系统的一个中间件,最初有微软公司研发,后来发展到各大平台。

有了ODBC的支持,Zabbix可以查询很多种数据库,因为Zabbix自己不直接去连接数据库,而是通过ODBC的接口和驱动,因此可以更加高效的去监控不同的数据库。

二、安装配置

1、编译Zabbix server

要支持ODBC功能,在编译的时候需要加上--with-unixodbc,解决依赖需要安装如下软件包,

yum -y install unixODBC unixODBC-devel

2、安装unixODBC驱动

驱动是用于ODBC连接数据库用的,他可以支持各式各样的驱动,在大部分的Linux发行版中的仓库中,都有这些驱动,我们安装一个MySQL的驱动,用来监控MySQL数据库。

yum install mysql-connector-odbc

3、配置unixODBC

ODBC的配置主要是通过修改odbcinst.iniodbc.ini两个文件,可以通过下面的命令去指定配置文件的位置。

# odbcinst -junixODBC 2.2.14DRIVERS............: /etc/odbcinst.iniSYSTEM DATA SOURCES: /etc/odbc.iniFILE DATA SOURCES..: /etc/ODBCDataSourcesUSER DATA SOURCES..: /root/.odbc.iniSQLULEN Size.......: 8SQLLEN Size........: 8SQLSETPOSIROW Size.: 8

odbcinst.ini主要是配置安装的ODBC数据库驱动,如MySQL,oracle,各字段含义我不再介绍。

[MySQL]                      # 驱动名称,在数据库文件中需要Description     = ODBC for MySQLDriver          = /usr/lib/libmyodbc5.soSetup           = /usr/lib/libodbcmyS.soDriver64        = /usr/lib64/libmyodbc5.soSetup64         = /usr/lib64/libodbcmyS.soFileUsage       = 1

odbc.ini主要是配置数据源。

[test]                        # 数据源名称Data source name,在zabbix前端配置需要Description = MySQL test databaseDriver      = mysql           # 从驱动文件odbcinst.ini获取Server      = 127.0.0.1User        = zabbixPassword    = zabbixPort        = 3306Database    = zabbix

我们可以通过在安装unixODBC的时候附带安装的一个命令isql来判断我们是否可以成功的连接数据库。

# isql test+---------------------------------------+| Connected!                            ||                                       || sql-statement                         || help [tablename]                      || quit                                  ||                                       |+---------------------------------------+SQL>

4、配置Zabbix前端web

首先创建一个监控条目。

这几个条目是必填的,具体解释如下:

Type这里我们选择Database monitor
Key

选择db.odbc.select[unique_description,data_source_name]

unique_description将会用于触发器中的条目

data_source_name填写在odbc.ini中的test

User name输入在odbc.ini中的用户名
Password输入在odbc.ini中的密码
SQL query输入SQL查询语句
Type of information需要我们之前查询的返回值是什么,正确的选择才会被支持

5、注意事项

  • 查询语句执行时间不能超过配置的超时时间

  • 查询只允许返回一个值.

  • 如果查询语句返回了多个列,它只读取第一列

  • 如果查询语句返回了多行,它读取第一条

  • SQL语句必须是 select开头,只能是查询语句.

  • SQL语句不能包含换行符

6、错误消息

从zabbix 2.08开始ODBC提供如下详细的错误信息:

Cannot execute ODBC query:[SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]|-------------------------  ---------   -----  |  ------------------------------------------------------------------- |            |                  |         |    `- Native error code            `- error message.                      `- Record separator            |                  |         `-SQLState            `- Zabbix message  `- ODBC return code

错误消息最长不能超过128字节,因此错误消息太长会被截断。

三、验证

因为我们没有创建图像,可以从最新数据库里面查看我们创建的条目。

你可以写更加复杂的SQL查询语句,以及制作触发器来对数据库更加详细的监控。


附录:

以上是对监控MySQL做的监控,下面我主要简要对Oracle的监控做下介绍。

1、下载oracle客户端

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

官网下载速度比较慢,也可以到我上传到51CTO下载中心的地方下载。

http://down.51cto.com/data/2328882

oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpmoracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpmoracle-instantclient11.2-odbc-11.2.0.3.0-1.x86_64.rpmoracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm

2、安装

yum localinstall oracle-instantclient11.2-*

3、创建本地监控

安装的默认位置分别在

/usr/share/oracle/11.2/client64/usr/include/oracle/11.2/client64/usr/lib/oracle/11.2/client64

设置环境变量之前,在/usr/lib/oracle/11.2/client64下创建network/admin文件夹,

mkdir  -p  /usr/lib/oracle/11.2/client64/network/admin

在此文件夹下创建tnsnames.ora,其内容入下:

test_oracle=   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.1.14)(PORT = 1521))     (CONNECT_DATA =        (SERVER = DEDICATED)        (SERVICE_NAME = basicdb)     )    )

在/usr/lib/oracle/11.2/client64/network/admin文件下创建sqlnet.ora,输入:

NAME_DIRECTORY_PATH=(TNSNAMES,EZCONNECT)

4、配置环境变量

export ORACLE_HOME=/usr/lib/oracle/11.2/client64export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:$LD_LIBRARY_PATHexport TNS_ADMIN=$ORACLE_HOME/network/adminexport PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin

5、配置需要的库

chmod +x /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1cd /usr/lib64/ln -s libodbcinst.so.2.0.0  libodbcinst.so.1

6、添加oracle驱动

# vim  /etc/odbcinst.ini[oracle]Description     = Oracle ODBC driver for Oracle 11gDriver          = /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1

7、添加oracle数据源

# vim  /etc/odbc.ini  [test1]Driver= oracleDSN= test_oracleServerName= yournameUserID= basicdbPassword= yourpasswd

8、sqlplus测试连接

# sqlplus yourname/yourpasswd@test_oracleSQL*Plus: Release 11.2.0.3.0 Production on Wed Jul 19 11:39:18 2017Copyright (c) 1982, 2011, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> exit

9、配置zabbix前端




参考文档:https://www.zabbix.com/documentation/3.2/manual/config/items/itemtypes/odbc_checks


0