zabbix監(jiān)控Oracle之orabbix配置

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

產(chǎn)品說明

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


它可以監(jiān)控什么?

下面是一些orabbix監(jiān)控的例子:

數(shù)據(jù)庫的版本;

歸檔日志的趨勢(shì)數(shù)據(jù);

處于等待狀態(tài)的事務(wù)(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);

數(shù)據(jù)庫大小/數(shù)據(jù)庫文件大?。―BSize size of database really used space and of Filesize);













安裝要求

zabbix server版本1.8以上;

Java Runtime Environment 6;

目前已知的成功測試了Oracle主機(jī)平臺(tái)

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安裝任何類型的客戶端

假設(shè)

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

這個(gè)說明是基于倆臺(tái)主機(jī)來的,一臺(tái)zabbix服務(wù)器端,一臺(tái)Oracle數(shù)據(jù)庫。如果你打算監(jiān)控zabbix服務(wù)器上的Oracle時(shí),步驟是一樣的,只需要對(duì)一些較小的連接信息進(jìn)行修改。

這些步驟也包括你需要配置orabbix來監(jiān)控一個(gè)新安裝的或者安裝配置好的Oracle數(shù)據(jù)庫。安裝步驟將為Zabbix用戶提供所有表的訪問權(quán)限,這將包括在執(zhí)行時(shí)出現(xiàn)的任何用戶表。如果你不希望Zabbix訪問數(shù)據(jù)庫中的特定表或資源,則需要根據(jù)要求設(shè)置拒絕Zabbix用戶訪問權(quán)限。詳細(xì)信息請(qǐng)咨詢您的DBA,因?yàn)檫@超出了這些說明的范圍。

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

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

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

復(fù)制/opt/orabbix/init.d/orabbix 到/etc/init.d/orabbix?

給orabbix這個(gè)文件可執(zhí)行權(quán)限;

/etc/init.d/orabbix

/opt/orabbix/run.sh

創(chuàng)建Oracle用戶

為orabbix訪問Oracle數(shù)據(jù)庫創(chuàng)建一個(gè)用戶(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;

注意:

如果你想創(chuàng)建的這個(gè)用戶權(quán)限最小,可以參看以下方案:

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訪問控制,否則在監(jiān)控過程中有部分內(nèi)容無法顯示:

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;

你可以運(yùn)行以下命令來驗(yàn)證正確性:

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

(Redhat)將orabbix設(shè)置為開機(jī)自啟動(dòng):

chkconfig --add orabbix

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

在Zabbix中為您計(jì)劃監(jiān)視的DB實(shí)例創(chuàng)建一個(gè)主機(jī)條目,并導(dǎo)入在:/ opt/orabbix/ template中發(fā)現(xiàn)的模板

這一步可以參考zabbix官網(wǎng):http://www.zabbix.com/documentation.php

orabbix配置文件

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

]# mv config.props.sample config.props

配置文件如下:

#comma separed list of Zabbix servers

ZabbixServerList=ZabbixServer1,ZabbixServer2 ? ?#zabbixserver1、zabbixserver2定義zabbix服務(wù)器的名字,與下面的zabbixserver1和2對(duì)應(yīng)

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

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

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

# ZabbixServer2.Port=PORT_OF_ZABBIX_SERVER

#pidFile

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

#frequency of item's refresh

OrabbixDaemon.Sleep=300 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 監(jiān)控項(xiàng)的刷新間隔(不需修改)

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

OrabbixDaemon.MaxThreadNumber=100 ? ? ? ? ?#orabbix守護(hù)進(jìn)程的最大線程數(shù)

#put here your databases in a comma separated list

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

#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 ? ? ? ? ? ? ? ? ?# 連接池最大活動(dòng)連接數(shù)(無需修改)

#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 ? ? ? ? ? ? ? ? #返回連接異常的等待時(shí)間,毫秒??梢远x為一個(gè)負(fù)值以表示不做限制

DatabaseList.MaxIdle=1 ? ? ? ? ? ? ? ? ? ? ?#最大空閑連接數(shù),可以定義為一個(gè)負(fù)值以表示不做限制

#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 上面這一項(xiàng)列出的名字

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

<LISTENER_PORT>是你數(shù)據(jù)庫的端口

DB1:是Oracle數(shù)據(jù)庫的SID

下面的你在Oracle里創(chuàng)建的允許orabbix采集數(shù)據(jù)的賬號(hào)和密碼,DB1與上面保持一致

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

DB1.MaxActive=10 ? ? ? ? ? ?#針對(duì)單獨(dú)的數(shù)據(jù)庫設(shè)置參數(shù),上面的全局的,這個(gè)是單獨(dú)的

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

配置文件補(bǔ)充

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

<DBNAME>.QueryListFile=./confQueryTest.props ? ? ? #定義單個(gè)數(shù)據(jù)庫的查詢文件位置,可以使用相對(duì)路徑

對(duì)于不同的數(shù)據(jù)庫使用不同的查詢文件,或者每個(gè)數(shù)據(jù)庫都有一個(gè)查詢文件池,這在不同的Oracle版本(如果有不同版本)或生產(chǎn)環(huán)境、測試環(huán)境、開發(fā)環(huán)境等不同環(huán)境下使用時(shí)有奇效。

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

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

query.props查詢文件

可以在這個(gè)文件中設(shè)置自定義查詢項(xiàng)。比如你要監(jiān)控公司一些業(yè)務(wù)邏輯之類的定制監(jiān)控項(xiàng)

創(chuàng)建的每個(gè)查詢必須有一個(gè)item名,必須是獨(dú)一無二的。zabbix server會(huì)識(shí)別這個(gè)item,就像其他item一樣,不能沖突。

QueryList=queryName1,queryName2,queryName3 ? ? ? #定義item名,以逗號(hào)分隔

customQueryItemName.Query=yourQueryHere ? ? ? ? #自定義查詢語句結(jié)尾不要加封號(hào)

customQueryItemName.NoDataFound=none ? ? ? ? ? ? #定義無查詢結(jié)果時(shí)的返回值(默認(rèn)是none)

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

條件查詢

customQueryItemName.ACTIVE=[true|false]


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

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這個(gè)查詢返回的值是archive.RaceConditionValue定義的值,則執(zhí)行archive.Query查詢語句,archive.RaceConditionValue這個(gè)值是TRUE時(shí)才查詢,也就是只有當(dāng)Oracle數(shù)據(jù)庫處于歸檔模式時(shí)才執(zhí)行歸檔日志查詢。

<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在這個(gè)文件中可以設(shè)置orabbix的日志格式,日志格式和apache的一樣

i.e

如果您有兩個(gè)主機(jī)RAC1和RAC2和一個(gè)實(shí)例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)))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容