zabbix監控Oracle之orabbix配置

參考至http://www.smartmarmot.com/wiki/index.php?title=Orabbix#Requirements

產品說明

Orabbix是一個插件,它是與Zabbix 配合,對Oracle數據庫提供多層監視、性能和可用性報告和度量,以及服務器性能指標。它提供了從大量Oracle實例獲取數據的有效機制,并向Zabbix服務器提供監視和性能指標的信息。然后,您可以利用Zabbix的報告功能來收集所有數據,并為涉眾提供圖表和服務級別協議度量等分析。當前的發行版包含一組預定義的模板,這些模板結合了初始部署的警報和繪圖功能。當然,你也可以根據自身需求和數據/監視需求來設計自己的監控。


它可以監控什么?

下面是一些orabbix監控的例子:

數據庫的版本;

歸檔日志的趨勢數據;

處于等待狀態的事務(i.e ?Files I/O, single block read, multi-block read, direct path read, SQLNet Messages, Control file I/O, Log Write);

命中率((i.e ?Hit Ratio on Triggers, Tables/Procedures, SQL Area, Body);

邏輯I/O(Server performance on Logical I/O of: Current Read, Consistent Read, Block Change);

物理I/O(Redo Writes, Datafile Writes, Datafile Reads);

PGA;

SGA(In particular; Fixed Buffer, Java Pool, Large Pool, Log Buffer, Shared Poolm Buffer Cache);

共享池(Active Sessions, Inactive Sessions, System Sessions);

數據庫大小/數據庫文件大小(DBSize size of database really used space and of Filesize);













安裝要求

zabbix server版本1.8以上;

Java Runtime Environment 6;

目前已知的成功測試了Oracle主機平臺

RHEL5.X (CentOS 5.4 & 5.5)

Windows 2003 (with Java SE 1.6)

HP-UX 11.31

AIX 5.3

目前已知的測試Oracle版本

10g

10.2

注意:不需要為orabbix安裝任何類型的客戶端

假設

安裝說明是基于對大多數 unix 部署(即RHEL / CentOS)的指令而創建的,如果你的環境比較特殊,需要做一些修改。

這個說明是基于倆臺主機來的,一臺zabbix服務器端,一臺Oracle數據庫。如果你打算監控zabbix服務器上的Oracle時,步驟是一樣的,只需要對一些較小的連接信息進行修改。

這些步驟也包括你需要配置orabbix來監控一個新安裝的或者安裝配置好的Oracle數據庫。安裝步驟將為Zabbix用戶提供所有表的訪問權限,這將包括在執行時出現的任何用戶表。如果你不希望Zabbix訪問數據庫中的特定表或資源,則需要根據要求設置拒絕Zabbix用戶訪問權限。詳細信息請咨詢您的DBA,因為這超出了這些說明的范圍。

安裝步驟(orabbix是安裝在服務器端的)

在zabbix server 下載orabbix,地址:https://sourceforge.net/projects/orabbix/files/orabbix-1.2.3.zip/download? ? 需要翻墻

解壓到/opt/orabbix文件夾下; ? ? ?PS:可以是別的路徑

復制/opt/orabbix/init.d/orabbix 到/etc/init.d/orabbix?

給orabbix這個文件可執行權限;

/etc/init.d/orabbix

/opt/orabbix/run.sh

創建Oracle用戶

為orabbix訪問Oracle數據庫創建一個用戶(ZABBIX),可以使用一下命令:

CREATE USER ZABBIX

IDENTIFIED BY? <REPLACE WITH PASSWORD>

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;

注意:

如果你想創建的這個用戶權限最小,可以參看以下方案:

CREATE USER ZABBIX

IDENTIFIED BY

DEFAULT TABLESPACE USERS

TEMPORARY TABLESPACE TEMP

PROFILE DEFAULT

ACCOUNT UNLOCK;

GRANT ALTER SESSION TO ZABBIX;

GRANT CREATE SESSION TO ZABBIX;

GRANT CONNECT TO ZABBIX;

ALTER USER ZABBIX DEFAULT ROLE ALL;

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_$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;

注意:

如果你使用的是Oracle 11g,你需要做以下操作放開ACL訪問控制,否則在監控過程中有部分內容無法顯示:

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;

你可以運行以下命令來驗證正確性:

select utl_inaddr.get_host_name('127.0.0.1') from dual;

(Redhat)將orabbix設置為開機自啟動:

chkconfig --add orabbix

chkconfig --list ? ? ? ? ? ? ? ? ? ?#檢查

在Zabbix中為您計劃監視的DB實例創建一個主機條目,并導入在:/ opt/orabbix/ template中發現的模板

這一步可以參考zabbix官網:http://www.zabbix.com/documentation.php

orabbix配置文件

在/opt/orabbix/conf/ 目錄下有個叫config.props.sample的文件,將這個文件復制并改名為config.props

]# mv config.props.sample config.props

配置文件如下:

#comma separed list of Zabbix servers

ZabbixServerList=ZabbixServer1,ZabbixServer2 ? ?#zabbixserver1、zabbixserver2定義zabbix服務器的名字,與下面的zabbixserver1和2對應

ZabbixServer1.Address=192.168.10.11 ? ? ? ? ?#上面定義的zabbixserver1的IP地址

ZabbixServer1.Port=10051 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#zabbixserver1的端口

# ZabbixServer2.Address=IP_ADDRESS_OF_ZABBIX_SERVER ? ?#zabbixserver2默認是注銷的,如果你有多個zabbixserver,選填這個

# ZabbixServer2.Port=PORT_OF_ZABBIX_SERVER

#pidFile

OrabbixDaemon.PidFile=./logs/orabbix.pid ? ? ? ? ? ?#Pid文件的位置

#frequency of item's refresh

OrabbixDaemon.Sleep=300 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 監控項的刷新間隔(不需修改)

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

OrabbixDaemon.MaxThreadNumber=100 ? ? ? ? ?#orabbix守護進程的最大線程數

#put here your databases in a comma separated list

DatabaseList=DB1,DB2,DB3 ? ? ? ? ? ? ? ? ? ? ? ? ?# ?數據庫列表(zabbix中的主機名必須用這個兒定義的名字)

#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:@server.domain.example.com:<LISTENER_PORT>:DB1 ??

DB1.User=zabbix

DB1.Password=9133

DB1是DatabaseList=DB1,DB2,DB3 上面這一項列出的名字

server.domain.example.com是你Oracle服務器的主機名或者IP地址(建議為IP地址)

<LISTENER_PORT>是你數據庫的端口

DB1:是Oracle數據庫的SID

下面的你在Oracle里創建的允許orabbix采集數據的賬號和密碼,DB1與上面保持一致

#Those values are optionals if not specified Orabbix is going to use the general values

DB1.MaxActive=10 ? ? ? ? ? ?#針對單獨的數據庫設置參數,上面的全局的,這個是單獨的

DB1.MaxWait=100

DB1.MaxIdle=1

DB1.QueryListFile=./conf/query.props

DB2.Url=jdbc:oracle:thin:@server2.domain.example.com::DB2

DB2.User=zabbix

DB2.Password=zabbix_password

DB2.QueryListFile=./conf/query.props

DB3.Url=jdbc:oracle:thin:@server3.domain.example.com::DB3

DB3.User=zabbix

DB3.Password=zabbix_password

DB3.QueryListFile=./conf/query.props

配置文件補充

QueryListFile=/opt/orabbix/conf/query.props ? ? ?#查詢文件的位置

<DBNAME>.QueryListFile=./confQueryTest.props ? ? ? #定義單個數據庫的查詢文件位置,可以使用相對路徑

對于不同的數據庫使用不同的查詢文件,或者每個數據庫都有一個查詢文件池,這在不同的Oracle版本(如果有不同版本)或生產環境、測試環境、開發環境等不同環境下使用時有奇效。

<DB_NAME>.ExtraQueryListFile ==./confQueryTest_2.props ? ??

#官網是這樣定義的:adds another custom query to the default query file.If there are duplicates the ExtraQueryListFile will override them

query.props查詢文件

可以在這個文件中設置自定義查詢項。比如你要監控公司一些業務邏輯之類的定制監控項

創建的每個查詢必須有一個item名,必須是獨一無二的。zabbix server會識別這個item,就像其他item一樣,不能沖突。

QueryList=queryName1,queryName2,queryName3 ? ? ? #定義item名,以逗號分隔

customQueryItemName.Query=yourQueryHere ? ? ? ? #自定義查詢語句結尾不要加封號

customQueryItemName.NoDataFound=none ? ? ? ? ? ? #定義無查詢結果時的返回值(默認是none)

customQueryItemName.Period=<Express a period in minute> ? #自定義語句的執行周期,例如:數據庫的版本

條件查詢

customQueryItemName.ACTIVE=[true|false]


你可以定義一個查詢返回值,來判斷指定的查詢語句是否要執行,如下:

archive.Query=select round( A.LOGS*B.AVG/1024/1024/10 ) \

from ( SELECT? COUNT (*)? LOGS FROM V$LOG_HISTORY WHERE \

FIRST_TIME >= (sysdate -10/60/24)) A, \

( SELECT Avg(BYTES) AVG,? Count(1), Max(BYTES) Max_Bytes,Min(BYTES) Min_Bytes? FROM? v$log) B

archive.RaceConditionQuery=select value \

from \

v$parameter where name='log_archive_start'

archive.RaceConditionValue=FALSE

在上面的例子中,如果archive.RaceConditionQuery這個查詢返回的值是archive.RaceConditionValue定義的值,則執行archive.Query查詢語句,archive.RaceConditionValue這個值是TRUE時才查詢,也就是只有當Oracle數據庫處于歸檔模式時才執行歸檔日志查詢。

<QueryName>.Trim=[true|false]

<QueryName>.AddSpaces=[true|false]

<QueryName>.ExcludeColumnsList=[1,2,3,..n]

<QueryName>.Period

<QUERY_NAME>.WhenNotAlive = <VALUE>

DefaultUser = <USERNAME>

DefaultPassword =<PASSWORD>

<QueryName>.ExtraQueryListFile =<VALUE>

<QUERY_NAME>.WhenNotAlive =<VALUE>

/opt/orabbix/conf/log4j.properties在這個文件中可以設置orabbix的日志格式,日志格式和apache的一樣

i.e

如果您有兩個主機RAC1和RAC2和一個實例RACINST,你可以在orabbix配置文件中這么寫:

RACINST.Url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=RAC1.EXAMPLE.COM) \

(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=RAC2.EXAMPLE.COM)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=RACINST)))

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,481評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,697評論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,182評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,406評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,933評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,772評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,973評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評論 1 285
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,644評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,953評論 2 373

推薦閱讀更多精彩內容