大家用orabbix安装在Zabbix,我们拿orabbix安装在Zabbix

 

 

Orabbix介绍

监控Oracle数据库我们要设置第三正提供的Zabbix插件,我们事先测试于出名的Orabbix,http://www.smartmarmot.com/product/orabbix/

图片 1

自从布局架构图上可以看出,orabbix是经过JDBC去老是为监督数据库的,其实不是要在数额库主机上安装Agent,而运行orabbix的主机,可以是Zabbix
Server,也不过数据库主机和zabbix
server之外的随意一雅主机,为了测试好,我们用orabbix安装在Zabbix
Server上。

Orabbix介绍

监控Oracle数据库大家需要装第三正值提供的Zabbix插件,我们先测试于知名的Orabbix,http://www.smartmarmot.com/product/orabbix/

图片 2

起布局架构图上得以视,orabbix是经过JDBC去老是为监督数据库的,其实不是得于数库主机上安装Agent,而运行orabbix的主机,可以是Zabbix
Server,也得是数据库主机和zabbix
server之外的擅自一大主机,为了测试好,我们用orabbix安装于Zabbix
Server上。

下载软件以及安装服务

Ø 下充斥 Orabbix ,上传到你的 Zabbix Server

Ø unzip 软件及者目录: /opt/orabbix

Ø 安装服务:

Ø 复制启动脚本

#cp /opt/orabbix/init.d/orabbix /etc/init.d/orabbix

Ø 运行权限:

#chmod +x /etc/init.d/orabbix

#chmod +x /opt/orabbix/run.sh

Ø #chkconfig –add orabbix

下载软件和安装服务

Ø 下充斥 Orabbix ,上传到你的 Zabbix Server

Ø unzip 软件到此目录: /opt/orabbix

Ø 安装服务:

Ø 复制启动脚本

#cp /opt/orabbix/init.d/orabbix /etc/init.d/orabbix

Ø 运行权限:

#chmod +x /etc/init.d/orabbix

#chmod +x /opt/orabbix/run.sh

Ø #chkconfig –add orabbix

建立监督用户与授权

CREATE USER ZABBIX

IDENTIFIED BY welcome1

DEFAULT TABLESPACE SYSTEM

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

REM 2 Roles for ZABBIX

GRANT CONNECT TO ZABBIX;

GRANT RESOURCE TO ZABBIX;

ALTER USER ZABBIX DEFAULT ROLE ALL;

REM 5 System Privileges for ZABBIX

GRANT SELECT ANY TABLE TO ZABBIX;

GRANT CREATE SESSION TO ZABBIX;

GRANT SELECT ANY DICTIONARY TO ZABBIX;

GRANT UNLIMITED TABLESPACE TO ZABBIX;

GRANT SELECT ANY DICTIONARY TO ZABBIX;

假设是11g数据库,执行下列语句:

exec dbms_network_acl_admin.create_acl(acl =>
‘resolve.xml’,description => ‘resolve acl’, principal =>’ZABBIX’,
is_grant => true, privilege => ‘resolve’);

exec dbms_network_acl_admin.assign_acl(acl => ‘resolve.xml’, host
=>’*’);

commit;

建监督用户与授权

CREATE USER ZABBIX

IDENTIFIED BY welcome1

DEFAULT TABLESPACE SYSTEM

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

REM 2 Roles for ZABBIX

GRANT CONNECT TO ZABBIX;

GRANT RESOURCE TO ZABBIX;

ALTER USER ZABBIX DEFAULT ROLE ALL;

REM 5 System Privileges for ZABBIX

GRANT SELECT ANY TABLE TO ZABBIX;

GRANT CREATE SESSION TO ZABBIX;

GRANT SELECT ANY DICTIONARY TO ZABBIX;

GRANT UNLIMITED TABLESPACE TO ZABBIX;

GRANT SELECT ANY DICTIONARY TO ZABBIX;

万一是11g数据库,执行下列语句:

exec dbms_network_acl_admin.create_acl(acl =>
‘resolve.xml’,description => ‘resolve acl’, principal =>’ZABBIX’,
is_grant => true, privilege => ‘resolve’);

exec dbms_network_acl_admin.assign_acl(acl => ‘resolve.xml’, host
=>’*’);

commit;

修改orabbix配置文件

#cd /opt/orabbix/conf

#cp config.props.sample config.props

基于实际的安排意况修改文件,比如:

#comma separed list of Zabbix servers

ZabbixServerList=ZabbixServer1

ZabbixServer1.Address=192.168.0.41 ##Zabbix服务器地址

ZabbixServer1.Port=10051 ##Zabbix服务器端口

#pidFile

OrabbixDaemon.PidFile=./logs/orabbix.pid

#frequency of item’s refresh

OrabbixDaemon.Sleep=300

#MaxThreadNumber should be >= than the number of your databases

OrabbixDaemon.MaxThreadNumber=100

#put here your databases in a comma separated list

DatabaseList=DB1,DB2,DB3 ##数据库列表,名称随便起

#Configuration of Connection pool

#if not specified Orabbis is going to use default values (hardcoded)

#Maximum number of active connection inside pool

DatabaseList.MaxActive=10

#The maximum number of milliseconds that the pool will wait

#(when there are no available connections) for a connection to be
returned

#before throwing an exception, or <= 0 to wait indefinitely.

DatabaseList.MaxWait=100

DatabaseList.MaxIdle=1

#define here your connection string for each database

DB1.Url=jdbc:oracle:thin:@192.168.0.31:1521:test1 ##数据库连接串

DB1.User=zabbix ##监控数据库用户称

DB1.Password=welcome1 ##监督数据库口令

保存配置文件,然后再开orabbix。

修改orabbix配置文件

#cd /opt/orabbix/conf

#cp config.props.sample config.props

因实际的配备境况修改文件,比如:

#comma separed list of Zabbix servers

ZabbixServerList=ZabbixServer1

ZabbixServer1.Address=192.168.0.41 ##Zabbix服务器地址

ZabbixServer1.Port=10051 ##Zabbix服务器端口

#pidFile

OrabbixDaemon.PidFile=./logs/orabbix.pid

#frequency of item’s refresh

OrabbixDaemon.Sleep=300

#MaxThreadNumber should be >= than the number of your databases

OrabbixDaemon.MaxThreadNumber=100

#put here your databases in a comma separated list

DatabaseList=DB1,DB2,DB3 ##数据库列表,名称随便从

#Configuration of Connection pool

#if not specified Orabbis is going to use default values (hardcoded)

#Maximum number of active connection inside pool

DatabaseList.MaxActive=10

#The maximum number of milliseconds that the pool will wait

#(when there are no available connections) for a connection to be
returned

#before throwing an exception, or <= 0 to wait indefinitely.

DatabaseList.MaxWait=100

DatabaseList.MaxIdle=1

#define here your connection string for each database

DB1.Url=jdbc:oracle:thin:@192.168.0.31:1521:test1 ##数据库连接串

DB1.User=zabbix ##督查数据库用户称

DB1.Password=welcome1 ##监控数据库口令

保存配置文件,然后再开orabbix。

导入模板

在orabbix的软件包里有4各级模板文件,导入下边途中那模板文件就得了,包含了别具备模板文件之情节。

图片 3

导入模板

于orabbix的软件包中来4各级模板文件,导入下边途中这模板文件就可了,包含了另外兼具模板文件的内容。

图片 4

适用Orabbix

每当zabbix界面上安排数据库监控时,要留意,orabbix是将每个数据库都配备成一个“主机”的,这块看在发接触别扭,而且,注意在配备主机时,名称一定要同config.props文件中安排的数据库名称相同,比如自己这里就是DB1:

图片 5

面前说了,这些“主机”的地点可以不管写,因为被监督的主机端不需肯定有agent,可是以方便管理,我道依然写及Oracle主机的地方相比好。

概念了主机后,就得适用模板被预定义的督察项、触发器和图了。

本图片:

图片 6

图片 7

依最简单易行的检查数据库适用可用之触发器:

图片 8

当然,对诺触发器的动作要需要团结安排。

适用Orabbix

每当zabbix界面上安排数据库监控时,要留意,orabbix是拿每个数据库都布置成一个“主机”的,这块看正在有接触别扭,而且,注目的在于配备主机时,名称一定假如与config.props文件中安排的数据库名称一致,比如自己这里就是是DB1:

图片 9

面前说了,那个“主机”的地方可以任由写,因为被监督的主机端不待肯定有agent,不过以方便管理,我当仍然写及Oracle主机的地点相比好。

概念了主机后,就得适用模板被预定义的督察项、触发器和图片了。

依据图片:

图片 10

图片 11

服从最简易的检查数据库适用可用之触发器:

图片 12

当,对诺触发器的动作要需要协调安排。

自定义SQL检查

Orabbix提供了表空间的监察,监控项对应之SQL:

tbl_space.Query=SELECT * FROM ( \

select ‘- Tablespace ->’,t.tablespace_name ktablespace, \

‘- Type->’,substr(t.contents, 1, 1) tipo, \

‘- Used(MB)->’,trunc((d.tbs_size-nvl(s.free_space, 0))/1024/1024)
ktbs_em_uso, \

‘- ActualSize(MB)->’,trunc(d.tbs_size/1024/1024) ktbs_size, \

‘- MaxSize(MB)->’,trunc(d.tbs_maxsize/1024/1024) ktbs_maxsize, \

‘- FreeSpace(MB)->’,trunc(nvl(s.free_space, 0)/1024/1024)
kfree_space, \

‘- Space->’,trunc((d.tbs_maxsize – d.tbs_size + nvl(s.free_space,
0))/1024/1024) kspace, \

‘- Perc->’,decode(d.tbs_maxsize, 0, 0,
trunc((d.tbs_size-nvl(s.free_space, 0))*100/d.tbs_maxsize)) kperc \

from \

( select SUM(bytes) tbs_size, \

SUM(decode(sign(maxbytes – bytes), -1, bytes, maxbytes)) tbs_maxsize,
tablespace_name tablespace \

from ( select nvl(bytes, 0) bytes, nvl(maxbytes, 0) maxbytes,
tablespace_name \

from dba_data_files \

union all \

select nvl(bytes, 0) bytes, nvl(maxbytes, 0) maxbytes, tablespace_name
\

from dba_temp_files \

) \

group by tablespace_name \

) d, \

( select SUM(bytes) free_space, \

tablespace_name tablespace \

from dba_free_space \

group by tablespace_name \

) s, \

dba_tablespaces t \

where t.tablespace_name = d.tablespace(+) and \

t.tablespace_name = s.tablespace(+) \

order by 8) \

where kperc > 93 \

and tipo <>’T’ \

and tipo <>’U’

tbl_space.NoDataFound=none

其一SQL会回93%满的讲明空间音讯,而相应之监控项,orabbix也定义了触发器,因为监控项之再次回到值是文本,而没有满足条件的记录时重回字符串“none“,所以监控项对应之触发器会检讨重回值最先是未是none,倘诺未是,就报警,这样,用户除了收取预警消息,还可以自再次来到值的具体值中看看实际时什么人表空间快满了。

本来,大部分时光监控项会重回none,所以我们无能为力画来正规未满的表空间的半空中占据时间曲线。唯有过93%磨蹭时,我们才知道具体的占情形。

比方想征集并保存更多新闻,就需选择于定义查询,方法就是是在query.props文件中在你想检查的SQL,比如大家牵挂了然表空间音讯,就加以下SQL:

customtbl.Query=select ‘TBL:’||a.tablespace_name||’,’ TBL, \

‘Total Size:’||trunc(sum(a.tots) / 1024 / 1024, 2)||’,’ Tot_Size_mb,
\

‘Free MB:’||round(sum(a.sumb) / 1024 / 1024, 2)||’,’ Tot_Free_mb, \

‘PCT Free:’||round(sum(a.sumb) * 100 / sum(a.tots), 2)||’,’ Pct_Free,
\

‘Max Free MB:’||round(sum(a.largest) / 1024 / 1024, 2)||’,’
Max_Free_mb, \

‘Chunks Free:’||sum(a.chunks)||’,’ Chunks_Free \

from (select tablespace_name, \

0 tots, \

sum(bytes) sumb, \

max(bytes) largest, \

count(*) chunks \

from dba_free_space a \

group by tablespace_name \

union \

select tablespace_name, sum(bytes) tots, 0, 0, 0 \

from dba_data_files \

group by tablespace_name) a \

group by a.tablespace_name

customtbl.NoDataFound=none

下一场在orabbix对应的沙盘被加上这么些监控项customtbl就可了,下边时从新型数据菜单查看的SQL的回来结果:

图片 13

本来,我们而举行越的辨析与出示,就需要用其余工具或开发工具来举办了,这多少个固然未是登时篇稿子啄磨的限定了。

自定义SQL检查

Orabbix提供了表空间的监察,监控项对应之SQL:

tbl_space.Query=SELECT * FROM ( \

select ‘- Tablespace ->’,t.tablespace_name ktablespace, \

‘- Type->’,substr(t.contents, 1, 1) tipo, \

‘- Used(MB)->’,trunc((d.tbs_size-nvl(s.free_space, 0))/1024/1024)
ktbs_em_uso, \

‘- ActualSize(MB)->’,trunc(d.tbs_size/1024/1024) ktbs_size, \

‘- MaxSize(MB)->’,trunc(d.tbs_maxsize/1024/1024) ktbs_maxsize, \

‘- FreeSpace(MB)->’,trunc(nvl(s.free_space, 0)/1024/1024)
kfree_space, \

‘- Space->’,trunc((d.tbs_maxsize – d.tbs_size + nvl(s.free_space,
0))/1024/1024) kspace, \

‘- Perc->’,decode(d.tbs_maxsize, 0, 0,
trunc((d.tbs_size-nvl(s.free_space, 0))*100/d.tbs_maxsize)) kperc \

from \

( select SUM(bytes) tbs_size, \

SUM(decode(sign(maxbytes – bytes), -1, bytes, maxbytes)) tbs_maxsize,
tablespace_name tablespace \

from ( select nvl(bytes, 0) bytes, nvl(maxbytes, 0) maxbytes,
tablespace_name \

from dba_data_files \

union all \

select nvl(bytes, 0) bytes, nvl(maxbytes, 0) maxbytes, tablespace_name
\

from dba_temp_files \

) \

group by tablespace_name \

) d, \

( select SUM(bytes) free_space, \

tablespace_name tablespace \

from dba_free_space \

group by tablespace_name \

) s, \

dba_tablespaces t \

where t.tablespace_name = d.tablespace(+) and \

t.tablespace_name = s.tablespace(+) \

order by 8) \

where kperc > 93 \

and tipo <>’T’ \

and tipo <>’U’

tbl_space.NoDataFound=none

这多少个SQL会回来93%满的表达空间信息,而相应之监控项,orabbix也定义了触发器,因为监控项的再次回到值是文件,而并未满意条件的笔录时回来字符串“none“,所以监控项对应的触发器会检查再次来到值起初是匪是none,假使无是,就报警,这样,用户除外收受预警信息,仍可以从再次回到值的具体值中看出实际时什么人表空间快满了。

当,大部分光阴监控项会再次回到none,所以大家不可以画生健康未满之表空间的空间占据时间曲线。只有超过93%暂缓时,我们才清楚具体的挤占情形。

假定想采访并保留更多音信,就得以由定义查询,方法就是以query.props文件中入你想检查的SQL,比如我们记忆了然表空间音讯,就加以下SQL:

customtbl.Query=select ‘TBL:’||a.tablespace_name||’,’ TBL, \

‘Total Size:’||trunc(sum(a.tots) / 1024 / 1024, 2)||’,’ Tot_Size_mb,
\

‘Free MB:’||round(sum(a.sumb) / 1024 / 1024, 2)||’,’ Tot_Free_mb, \

‘PCT Free:’||round(sum(a.sumb) * 100 / sum(a.tots), 2)||’,’ Pct_Free,
\

‘Max Free MB:’||round(sum(a.largest) / 1024 / 1024, 2)||’,’
Max_Free_mb, \

‘Chunks Free:’||sum(a.chunks)||’,’ Chunks_Free \

from (select tablespace_name, \

0 tots, \

sum(bytes) sumb, \

max(bytes) largest, \

count(*) chunks \

from dba_free_space a \

group by tablespace_name \

union \

select tablespace_name, sum(bytes) tots, 0, 0, 0 \

from dba_data_files \

group by tablespace_name) a \

group by a.tablespace_name

customtbl.NoDataFound=none

然后在orabbix对应之模板被增长这多少个监控项customtbl就足以了,下边时于最新数据菜单查看的SQL的归来结果:

图片 14

当,我们设做越来越的解析以及显示,就用动用此外工具或开发工具来做了,那一个就非是当下首著作探究的界定了。

Orabbix不足

起初测试,感觉orabbix有2点显著缺欠:

1.
深受监控数据库消息倘使依次个写进配置文件,倘若数据库个数较多,管理会相比较累

2.
吃监督数据库的账号音讯是描写以安排文件中,而且口令是开诚相见存储,有那些挺的安全隐患

  1. 本着RAC的援助仍旧颇初级
Orabbix不足

发端测试,感觉orabbix有2碰醒目瑕疵:

1.
为监督数据库信息而挨个个勾上配置文件,倘使数据库个数较多,管理会比较费心

2.
深受监控数据库的账号信息是形容在部署文件被,而且口令是堂而皇之存储,有非凡酷之安全隐患

  1. 针对RAC的支撑仍然坏初级

相关文章