Zabbix基于CX_ORACLE对Oracle数据库的监控配置

摘要:
授予要监视的SYS.DBA_DATA_文件的选择权;授予在SYS.DBA上选择要监视的空闲空间;授予SYS.V_$ARCHIVED_LOG上的选择以进行监视;在SYS.V.V$SYSSTAT上授予选择以进行监视;
Zabbix基于CX_ORACLE对Oracle数据库的监控配置
2015年12月22日 
暂无评论 4,100次浏览
 

一、在数据库层的配置 

 1、在数据库创建表空间和用户

创建表空间(可选操作复用已有表空间)

1
2
 CREATE TABLESPACE MONITOR DATAFILE '/oradata/datafile/MONITOR .dbf' SIZE 
 1000M AUTOEXTEND OFF;

 创建用户

1
2
3
4
5
CREATE USER 
MONITOR
 IDENTIFIED BY 'xxxxxxxx' DEFAULT TABLESPACE 
MONITOR
 TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK;

 给用户授权

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
GRANT CONNECT TO MONITOR;
GRANT RESOURCE TO MONITOR; 
GRANT SELECT ON SYS.DBA_DATA_FILES TO MONITOR; 
GRANT SELECT ON SYS.DBA_FREE_SPACE TO MONITOR; 
GRANT SELECT ON SYS.DBA_TABLESPACES TO MONITOR; 
GRANT SELECT ON SYS.DBA_TEMP_FILES TO MONITOR; 
GRANT SELECT ON SYS.DBA_TEMP_FREE_SPACE TO MONITOR;
GRANT SELECT ON SYS.SM$TS_AVAIL TO MONITOR;
GRANT SELECT ON SYS.SM$TS_FREE TO MONITOR; 
GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO MONITOR; 
GRANT SELECT ON SYS.V_$ASM_DISKGROUP_STAT TO MONITOR; 
GRANT SELECT ON SYS.V_$EVENT_NAME TO MONITOR; 
GRANT SELECT ON SYS.V_$INSTANCE TO MONITOR; 
GRANT SELECT ON SYS.V_$LOG TO MONITOR; 
GRANT SELECT ON SYS.V_$LOGHIST TO MONITOR; 
GRANT SELECT ON SYS.V_$RECOVERY_FILE_DEST TO MONITOR; 
GRANT SELECT ON SYS.V_$SESSION TO MONITOR;
GRANT SELECT ON SYS.V_$SORT_USAGE TO MONITOR; 
GRANT SELECT ON SYS.V_$SYSMETRIC TO MONITOR; 
GRANT SELECT ON SYS.V_$SYSSTAT TO MONITOR; 
GRANT SELECT ON SYS.V_$SYSTEM_EVENT TO MONITOR;

  

二、客户端主机配置(可以是Oracle主机或是其他主机)

 1、安装Oracle客户端

使用cx_Oracle必须要安装Oracle_client端,或者你已经安装了Oracle数据库就不用安装以下包(即cx_oracle 安装在数据库主机上就不用安装以下客户端包)。 

以连接Oracle11为例需要下载以下rpm包: 

1
2
3
4
5
6
rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 
rpm -ivh oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm 
rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm 
rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm 
rpm -ivh oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm 
rpm -ivh oracle-instantclient11.2-tools-11.2.0.4.0-1.x86_64.rpm

下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

2、配置环境变量

编辑/etc/profile,在末尾加上以下行(路径以实际Oracle客户端的ORACLE_HOME为准)

1
2
3
4
PATH=/usr/lib/oracle/11.2/client64/bin:$PATH
PATH=/usr/lib/oracle/11.2/client64/lib:$PATH
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

执行生效。

1
source /etc/profile

Agent主机的zabbix用户下需要配置环境变量,并授权zabbix用户可以访问到ORACLE_HOME/bin 目录

1
2
3
4
5
6
#su - zabbix
$vi .bash_profile #增加以下行
PATH=/usr/lib/oracle/11.2/client64/bin:$PATH
PATH=/usr/lib/oracle/11.2/client64/lib:$PATH
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
1
source .bash_profile #执行生效

验证,在zabbix用户下执行

1
2
sqlplus monitor/password  --监控程序部署在数据库主机本身;
sqlplus  --监控程序部署在其他非数据库主机上;

如可以正常连接,说明客户端配置成功。

3、安装相关依赖包和Python Oracle模块

确保本机python在2.6以上(安装升级python略)

(1)安装python setuptool

1
2
wget -q http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py

(2)安装cx_Oracle与argparse

简单安装方法(root安装)

1
2
#easy_install cx_Oracle
#easy_install argparse

如果提示下载https问题,请安装openssl-devel

1
#yum install openssl-devel

安装成功后,重试。

rpm安装cx_Oracle python模块方法:

64bit (oracle 11g和python2.7)

1
$ wget http://downloads.sourceforge.net/project/cx-oracle/5.1.2/cx_Oracle-5.1.2-11g-py27-1.x86_64.rpm?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fcx-oracle%2Ffiles%2F5.1.2%2F&ts=1448445217&use_mirror=ncu

32bit:

1
$wget http://downloads.sourceforge.net/project/cx-oracle/5.1.2/cx_Oracle-5.1.2-11g-py27-1.i386.rpm?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fcx-oracle%2Ffiles%2F5.1.2%2F&ts=1448500668&use_mirror=ncu
1
2
3
#rpm -ivh cx_Oracle-5.1.2-11g-py27-1.i386.rpm
Preparing...        ########################################### [100%]
   1:cx_Oracle      ########################################### [100%]

验证安装

1
2
# ls /usr/lib/python2.7/site-packages/cx_Oracle.so
/usr/lib/python2.7/site-packages/cx_Oracle.so

有这个文件表示安装成功,根据python的位置,也可能在其他地方,自己找一下。

(2)配置TNS
在ORACLE_HOME目录下创建以下目录network/admin,并创建文件tnsnames.ora,内容如下:

1
 #vim /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora
1
2
3
4
5
6
7
8
9
10
11
12
13
14
PM-DB-Primary =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 
192.168.10.xx
)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = 
ocrl
)
      (SERVER = DEDICATED)
    )
  )

(3)pyora安装(在Agent 客户端)
下载 用zabbix下载

1
2
3
$wget https://github.com/bicofino/Pyora/archive/master.zip
$unzip master.zip
$cd Pyora-master

然后在/etc/zabbix_agentd.conf 中添加

1
echo "UserParameter=pyora[*],/home/zabbix/Pyora-master/pyora.py --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8" >>/etc/zabbix_agentd.conf

在主机测试(zabbix用户)

1
$python pyora.py --username monitor --password xxxxxxxxxx --address xxx.xxx.xxx.xxx --database racdb tablespace MONITOR

有返回数据说明配置成功。

三、zabbix管理WEB端配置

1、导入pyora的模板xml文件

 CONFIGURATION >TEMPLATES

1450839871451366.jpg 

点击import,选择Pyora-master下的Pyora.xml 导入

1450840007171022.jpg

2、配置监控主机

在主机上关联pyora的TEMPLATES

配置HOST的宏变量:

 1450840191167545.jpg

配置items(配置表空间的监控点)

1450840268112620.jpg

配置Graphs

1450840516909045.jpg

针对每个点的监控数据情况,可以到agent主机上查看和测试pyora的脚本。

免责声明:文章转载自《Zabbix基于CX_ORACLE对Oracle数据库的监控配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux网路编程:字节序(大端、小端、网络、主机)QT出现没有MySQL驱动,手动编译步骤下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

通知栏Notification的整理

一、介绍          通知栏适用于交互事件的通知,是位于顶层可以展开的通知列表。 二、功能作用   1.显示接收到短消息,及时消息等信息(如QQ、微信、新浪、短信)       2.显示客户端的推送消息(如有新版本发布,广告。推荐新闻等)   3.显示正在进行的事物(例如:后台运行的程序)(如音乐播放器、版本更新时候的下载进度等) 三、Notific...

SpotLight的下载地址以及注册码可供参考

ToadDBASuiteforOracle_101R2.exe 试用版http://worlddownloads.quest.com.edgesuite.net/Repository/www.quest.com/latest_versions/ToadDBASuiteforOracle_101R2.exe SpotlightonSQLServerEnter...

[转]ORA00257解决

 原:http://blog.chinaunix.net/u/26381/showart_373304.html 从Oracle9i开始,借助于UNDO日志文件提供了闪回查询的功能,由于功能也有一定的局限性,也就是说依赖于UNDO日志的事务不能被覆盖,所以在Oracle10g开始又采用了一种新的FlashBack日志来实现这个功能,而且更为强大,可以将数据...

mysql主从不同步问题 Error_code: 1197

首先查看从的状态 mysql> show slave status G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event...

如何通过外部表做数据一致性检查和配平

背景 随着微服务和分布式架构的兴起及用户对数据高可用的重视。现在系统中的数据会通过程序定时同步、抽数工具、复制工具等在多个数据库中存在多份。但因为程序异常、网络异常、数据异常等各种原因,会出现数据不一致的情况。如何能简单快速检测出数据不一致并且配平呢?本文通过PostgreSQL的fdw机制,介绍一种简单的配平方法。 环境准备 源数据库 IP:xx....

wordCount的执行流程

  我们对于wordCount的这个流程,在清晰不过了,不过我们在使用spark以及hadoop本身的mapReduce的时候,我们是否理解其中的原理呢,今天我们就来介绍一下wordCount的执行原理,   1.首先我们都会这样子执行(wordCount执行在hadoop中)   val rdd = sc.textFile("hdfs://weekday...