Zabbix透過Orabbix監控Oracle

strivechao發表於2019-03-11

Orabbix簡介

   Orabbix 是設計用來為 zabbix 監控 Oracle 的資料庫的外掛,它提供多層次的監控,包括可用性和伺服器效能的指標。

  它提供了從眾多Oracle例項採集的有效機制,進而提供此資訊的監控和效能指標。然後,您可以利用的zabbix的報告功能為收集的所有資料,並提供分析。目前的發行版中包含了一組預先定義的模板,包括從初始部署報警和圖形功能。然而,這些可以進行微調,以滿足您額需求和資料/監控要求。

Orabbix監控的內容

  1、資料庫版本

  2、歸檔日誌與生產趨勢

  3、觸發器,表/過程命中率

  4、邏輯IO效能

  5、物理IO效能

  6、PGA

  7、SGA

  8、共享池

  9、Session

  10、資料庫大小



Orabbix 是一個用來監控   資料庫例項的 Zabbix 外掛。(外掛安裝在zabbix-server端)

下載地址:

 zabbix-server上操作
Orabbix是透過JDBC去連線oracle資料庫,然後過濾想要的資料,所以需要jdk環境

我測試過jdk1.7和1.8都可以,直接yum安裝,或者下載rpm包,rpm -ivh安裝,都可以

這裡,我是直接rpm安裝的,

[root@zabbix ~]# rpm -ivh jdk-8u102-linux-x64.rpm
 
Preparing...                ########################################### [100%]
 
  1:jdk1.8.0_102          ########################################### [100%]

在/opt目錄下新建一個orabbix目錄:

[root@oracle orabbix]#mkdir -p /opt/orabbix

(建議在此目錄下,如果放置其他目錄稍後需要更改orabbix的啟動檔案orabbix,啟動檔案預設寫在opt/orabbix目錄下 )

[root@zabbix opt]# cd orabbix/

上傳orabbix-1.2.3.zip

[root@zabbix orabbix]# ls
 
orabbix-1.2.3.zip
 
解壓
 
[root@zabbix orabbix]# unzip -q orabbix-1.2.3.zip
 
[root@zabbix orabbix]# ls
 
conf  init.d      lib      orabbix-1.2.3.zip  orabbixw.exe  run.sh    uninstall.cmd
 
doc  install.cmd  orabbix-1.2.3.jar  orabbix.exe        run.bat      template
 
授權
 
[root@zabbix orabbix]# cd ..
 
[root@zabbix opt]# chmod -R a+x orabbix/
 
[root@zabbix ~]# cd /opt/orabbix/conf/
 
[root@zabbix conf]# ls
 
config.props    log4j.properties    query_a_1.props  query_b.props    query.props
 
config.props.sample  log4j.properties.sample  query_a.props  query - Copy.props  query.props.sample
 
[root@zabbix conf]# cp config.props.sample config.props

編輯配置檔案:

[root@zabbix conf]# vim config.props

源配置檔案

[root@zabbix conf]# egrep "^[a-Z,1-9]" config.props.sample
 
ZabbixServerList=ZabbixServer1,ZabbixServer2
 
ZabbixServer1.Address=IP_ADDRESS_OF_ZABBIX_SERVER
 
ZabbixServer1.Port=PORT_OF_ZABBIX_SERVER
 
ZabbixServer2.Address=IP_ADDRESS_OF_ZABBIX_SERVER
 
ZabbixServer2.Port=PORT_OF_ZABBIX_SERVER
 
OrabbixDaemon.PidFile=./logs/orabbix.pid
 
OrabbixDaemon.Sleep=300
 
OrabbixDaemon.MaxThreadNumber=100
 
DatabaseList=DB1,DB2,DB3
 
DatabaseList.MaxActive=10
 
DatabaseList.MaxWait=100
 
DatabaseList.MaxIdle=1
 
DB1.Url=jdbc:oracle:thin:@server.domain.example.com:<LISTENER_PORT>:DB1
 
DB1.User=zabbix
 
DB1.Password=zabbix_password
 
DB1.MaxActive=10
 
DB1.MaxWait=100
 
DB1.MaxIdle=1
 
DB1.QueryListFile=./conf/query.props
 
DB2.Url=jdbc:oracle:thin:@server2.domain.example.com:<LISTENER_PORT>:DB2
 
DB2.User=zabbix
 
DB2.Password=zabbix_password
 
DB2.QueryListFile=./conf/query.props
 
DB3.Url=jdbc:oracle:thin:@server3.domain.example.com:<LISTENER_PORT>:DB3
 
DB3.User=zabbix
 
DB3.Password=zabbix_password
 
DB3.QueryListFile=./conf/query.props

修改之後

[root@zabbix conf]# egrep "^[a-Z,1-9]" config.props
 
ZabbixServerList=ZabbixServer1  #(zabbixserver的名字,下行中address和port都引用到了這個名字,所以下面兩行的字首名字要與這裡的名字保持一致)
 
ZabbixServer1.Address=127.0.0.1    #我這裡就是在zabbix server上面操作的,所以這裡是127.0.0.1
 
ZabbixServer1.Port=10051  #zabbix server的服務埠
 
OrabbixDaemon.PidFile=./logs/orabbix.pid
 
OrabbixDaemon.Sleep=300
 
OrabbixDaemon.MaxThreadNumber=100
 
DatabaseList=172.20.10.183-oracle,192.168.56.99-oracle  #這裡很重要,跟下面的對應上
 
DatabaseList.MaxActive=10
 
DatabaseList.MaxWait=100
 
DatabaseList.MaxIdle=1
 
172.20.10.183-oracle.Url=jdbc:oracle:thin:@172.20.10.183:1521:orcl      #172.20.10.183 oracle資料庫的地址,1521埠,orcl資料庫例項名
 
172.20.10.183-oracle.User=zabbix      #授權的賬號
 
172.20.10.183-oracle.Password=zabbix  #授權的密碼
 
172.20.10.183-oracle.MaxActive=10
 
172.20.10.183-oracle.MaxWait=100
 
172.20.10.183-oracle.MaxIdle=1
 
172.20.10.183-oracle.QueryListFile=./conf/query.props    #要查詢的語句都在這定義的,不滿意自己改

oracle主機上操作(這步可以省略,只要知道資料庫例項,賬號,密碼)
下面是oracle 11g的(12c 語法不一樣)授權語句如下,創使用者,授權,這些操作,我都是在oracle資料庫的sqlplus下執行的

登入資料庫並授予使用者相關許可權即可。

DatabaseList中放的是被監控的資料庫主機名,該名稱要和zabbix server介面中的機器名稱保持一致

你會發現有一些監控項dbfilesize,dbsize沒有值,這是因為/opt/orabbix/conf/query.props檔案沒有把這兩個加入進查詢的List下面,可以從query.props.sample把這兩項複製進去

 在QueryList最後面加上dbfilesize,dbsize

然後在檔案末尾加入:

 

1
2
3
4
5
6
7
8
dbfilesize.Query= select   to_char( sum (bytes /1024/1024/10 ),  'FM99999999999999990' ) retvalue from dba_data_files
 
dbsize.Query=SELECT to_char( sum ( NVL(a.bytes /1024/1024/10   - NVL(f.bytes /1024/1024/10 , 0), 0)),  'FM99999999999999990' ) retvalue \
FROM sys.dba_tablespaces d, \
( select   tablespace_name,  sum (bytes) bytes from dba_data_files group by tablespace_name) a, \
( select   tablespace_name,  sum (bytes) bytes from dba_free_space group by tablespace_name) f \
WHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+) \
AND NOT (d.extent_management like  'LOCAL'   AND d.contents like  'TEMPORARY' )

在oracle資料庫上建立zabbix使用者,並授權

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE   USER   zabbix
IDENTIFIED  BY   zabbix
DEFAULT   TABLESPACE SYSTEM
TEMPORARY   TABLESPACE  TEMP
PROFILE  DEFAULT
ACCOUNT UNLOCK;
– 2 Roles  for   ZABBIX
GRANT   CONNECT   TO   ZABBIX;
GRANT   RESOURCE  TO   ZABBIX;
ALTER   USER   ZABBIX  DEFAULT   ROLE  ALL ;
– 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;

  如果需要嚴格的許可權控制,可以執行如下指令碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
CREATE   USER   zabbix
IDENTIFIED  BY   zabbix
DEFAULT   TABLESPACE USERS
TEMPORARY   TABLESPACE  TEMP
PROFILE  DEFAULT
ACCOUNT UNLOCK;
GRANT SELECT ON V_$INSTANCE TO zabbix;
 GRANT SELECT ON DBA_USERS TO zabbix;
 GRANT SELECT ON V_$LOG_HISTORY TO zabbix;
 GRANT SELECT ON V_$LOG TO zabbix;
 GRANT SELECT ON V_$PARAMETER TO zabbix;
 GRANT SELECT ON SYS.DBA_AUDIT_SESSION TO zabbix;
 GRANT SELECT ON V_$LOCK TO zabbix;
 GRANT SELECT ON DBA_REGISTRY TO zabbix;
 GRANT SELECT ON V_$LIBRARYCACHE TO zabbix;
 GRANT SELECT ON V_$SYSSTAT TO zabbix;
 GRANT SELECT ON V_$PARAMETER TO zabbix;
 GRANT SELECT ON V_$LATCH TO zabbix;
 GRANT SELECT ON V_$PGASTAT TO zabbix;
 GRANT SELECT ON V_$SGASTAT TO zabbix;
 GRANT SELECT ON V_$LIBRARYCACHE TO zabbix;
 GRANT SELECT ON V_$PROCESS TO zabbix;
 GRANT SELECT ON DBA_DATA_FILES TO zabbix;
 GRANT SELECT ON DBA_TEMP_FILES TO zabbix;
 GRANT SELECT ON DBA_FREE_SPACE TO zabbix;
 GRANT SELECT ON V_$SYSTEM_EVENT TO zabbix;
 GRANT SELECT ON V_$locked_object TO zabbix;
 GRANT SELECT ON dba_objects TO zabbix;
 GRANT SELECT ON dba_tablespaces TO zabbix;
 GRANT SELECT ON v_$SESSION TO zabbix;

啟動orabbix

[root@zabbix orabbix]# cp init.d/orabbix /etc/init.d/

[root@zabbix orabbix]# ll /etc/init.d/orabbix

-rwxr-xr-x 1 root root 1693 Sep 14 21:40 /etc/init.d/orabbix

[root@zabbix orabbix]# /etc/init.d/orabbix start


linux7   啟動orabbix

1
2
3

chkconfig --add orabbix

systemctl start orabbix

chkconfig orabbix on


Starting Orabbix service:

報錯的話,檢查配置檔案,資料庫地址,埠,例項名,賬號,密碼是否正確,需要驗證對於不懂oracle的怎麼辦,搜命令唄,我也是一路過來,各種坑~~~~~

然後裡面看日誌

[root@zabbix orabbix]# tailf /opt/orabbix/logs/orabbix.log

 [main] INFO  Orabbix - --------- on Database -> orcl

 [pool-1-thread-1] WARN  Orabbix - Error while executing ->dbversion- on database ->172.20.10.183-oracle- Exception received ORA-24247: network access denied by access control list (ACL)

ORA-06512: at "SYS.UTL_INADDR", line 4

ORA-06512: at "SYS.UTL_INADDR", line 35

ORA-06512: at line 1

出現這些日誌,不影響後面的操作

如果是oracle11g使用者還需要開放ACL訪問控制

1
2
3
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 ;

到此,安裝配置完成,則透過web頁面訪問監控介面直接匯入模板即可

模版放置在/opt/orabbix/template下
Orabbix_export_full.xml          #只需要匯入這個一個模板就好

 

新增主機

 

然後連結oracle的模板

 

新增完成之後的效果

檢視最新資料

 

這時候圖也有了

常見錯誤

[root@zabbix orabbix]# tailf /opt/orabbix/logs/orabbix.log

 [main] ERROR Orabbix - Error on Configurator for database 172.20.10.183 oracle -->ORA-01017: invalid username/password; logon denied

config.props配置檔案中,資料庫賬號密碼不對,或者在oracle資料庫沒授權這個使用者


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25469263/viewspace-2638043/,如需轉載,請註明出處,否則將追究法律責任。

相關文章