Zabbix 3.2.6通过ODBC监控MySQL&Oracle

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

一、总览

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

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

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

二、安装配置

1、编译Zabbix server

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

1
yum -y  install  unixODBC unixODBC-devel

2、安装unixODBC驱动

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

1
yum  install  mysql-connector-odbc

3、配置unixODBC

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

1
2
3
4
5
6
7
8
9
# odbcinst -j
unixODBC 2.2.14
DRIVERS............:  /etc/odbcinst .ini
SYSTEM DATA SOURCES:  /etc/odbc .ini
FILE DATA SOURCES..:  /etc/ODBCDataSources
USER DATA SOURCES..:  /root/ .odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

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

1
2
3
4
5
6
7
[MySQL]                       # 驱动名称,在数据库文件中需要
Description     = ODBC  for  MySQL
Driver          =  /usr/lib/libmyodbc5 .so
Setup           =  /usr/lib/libodbcmyS .so
Driver64        =  /usr/lib64/libmyodbc5 .so
Setup64         =  /usr/lib64/libodbcmyS .so
FileUsage       = 1

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

1
2
3
4
5
6
7
8
[ test ]                         # 数据源名称Data source name,在zabbix前端配置需要
Description = MySQL  test  database
Driver      = mysql            # 从驱动文件odbcinst.ini获取
Server      = 127.0.0.1
User        = zabbix
Password    = zabbix
Port        = 3306
Database    = zabbix

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

1
2
3
4
5
6
7
8
9
10
# isql test
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

4、配置Zabbix前端web

    首先创建一个监控条目。

wKiom1lsL5PxJsynAABL0OCWHHY753.jpg

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

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提供如下详细的错误信息:

1
2
3
4
5
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字节,因此错误消息太长会被截断。

三、验证

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

wKioL1lsMzaCmbclAAHalFPtNAM105.jpg

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


附录:

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

1、下载oracle客户端    

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

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

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

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

2、安装

1
yum localinstall oracle-instantclient11.2-*

3、创建本地监控

    安装的默认位置分别在

1
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文件夹,

1
mkdir   -p   /usr/lib/oracle/11 .2 /client64/network/admin

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

1
2
3
4
5
6
7
8
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,输入:

1
NAME_DIRECTORY_PATH=(TNSNAMES,EZCONNECT)

4、配置环境变量

1
2
3
4
export  ORACLE_HOME= /usr/lib/oracle/11 .2 /client64
export  LD_LIBRARY_PATH=$ORACLE_HOME /lib : /usr/lib64 :$LD_LIBRARY_PATH
export  TNS_ADMIN=$ORACLE_HOME /network/admin
export  PATH=$PATH:$ORACLE_HOME /bin :$HOME /bin

5、配置需要的库

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

6、添加oracle驱动

1
2
3
4
# vim  /etc/odbcinst.ini
[oracle]
Description     = Oracle ODBC driver  for  Oracle 11g
Driver          =  /usr/lib/oracle/11 .2 /client64/lib/libsqora .so.11.1

7、添加oracle数据源

1
2
3
4
5
6
7
# vim  /etc/odbc.ini  
[test1]
Driver= oracle
DSN= test_oracle
ServerName= yourname
UserID= basicdb
Password= yourpasswd

8、sqlplus测试连接

1
2
3
4
5
6
7
8
9
10
11
12
13
# sqlplus yourname/yourpasswd@test_oracle
 
SQL*Plus: Release 11.2.0.3.0 Production on Wed Jul 19 11:39:18 2017
 
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
 
 
Connected to:
 
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
SQL>  exit

9、配置zabbix前端




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

     本文转自 wzlinux 51CTO博客,原文链接:http://blog.51cto.com/wzlinux/1948160,如需转载请自行联系原作者






相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
Oracle 关系型数据库 MySQL
mysql数据库和Oracle的区别
mysql数据库和Oracle的区别
50 1
|
3月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
4月前
|
数据采集 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
77 4
|
30天前
|
Oracle 关系型数据库 MySQL
Seata常见问题之oracle 数据库 报 just support mysql如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
53 0
|
1月前
|
数据采集 监控 数据库
请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
【2月更文挑战第25天】请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
25 2
|
2月前
|
监控 Cloud Native 关系型数据库
使用 Grafana 统一监控展示 - 对接 Zabbix
使用 Grafana 统一监控展示 - 对接 Zabbix
|
4月前
|
监控 Docker 容器
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
237 0
|
4月前
|
监控 Java
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
89 0
|
4月前
|
SQL Oracle 关系型数据库
选择适合您网站的 SQL 托管:MS SQL Server、Oracle、MySQL 和 MS Ac
如果您希望您的网站能够存储和检索数据,您的Web服务器应该能够访问使用SQL语言的数据库系统。以下是一些常见的SQL托管选项:
51 1
|
4月前
|
SQL Oracle 关系型数据库
浅谈对数据库(MySQL、Oracle、SQL Server)的认识
浅谈对数据库(MySQL、Oracle、SQL Server)的认识

推荐镜像

更多