新萄京利用Zabbix监控Oracle数据库。使用Zabbix监控Oracle数据库。

 

 

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的支撑还是生初级

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注