zabbix使用pyora監控oracle數據庫

前段時間使用Orabbix監控oracle數據庫,發現能夠實現對oracel數據庫實行監控,可是最近部署Orabbix監控oracle數據庫,發現始終沒法獲取到數據庫的內容。。。。。。因爲Orabbix是基於java實現的,使用的是jdbc鏈接oracle數據庫,獲取到的值傳遞給zabbix捕捉器來捕捉,這個過程我不是很熟悉。。。。。。始終沒法調試出圖來。。。最後終於放棄,尋找Orabbix的替代品。在zabbix官網找了一遍,發現使用python實現的pyora這個腳本還不錯,最大的優點就是可以自定義本身想監控的相關參數,只須要修改腳本,在裏面添加相關函數就行。pyora是經過python使用python的一個組件cx_Oracle來獲取的,獲取到的數據傳遞給zabbix的agent,從而獲取到相關監控數據,這種方式比較簡單,也比較容易擴展。pyora的缺點就是自己提供的監控item比較少,並且提供的模板是一個半成品模板,須要本身根據須要設計相應的模板,從而達到監控的目的。整體來講,pyora的特色就是簡單,開源,易擴展,可是總體作的不是很完整。java

好了,每篇博客的開頭例行廢話說完了,開始進入正題吧。python

首先,咱們須要下載pyora,我是在zabbix官網上面找到的github的連接,連接在這https://github.com/bicofino/Pyora 在本文的末尾我也將會將本文使用的一些工具什麼的打包放在附件中供你們下載。linux

然而python須要安裝cx_Oracle這個組件才能鏈接到數據庫,安裝cx_Oracle這個組件比較麻煩,我搞了差很少兩個多小時才搞定,開始使用源碼安裝,結果安裝不上去。。。一直解決不了報錯。。。因而去找了rpm包來安裝,因爲我這裏的oracle數據庫的python版本是2.6的,因此下載了2.6對應的版本,而且這裏支持的最新的oracle也只有11g,而我這裏使用的是12c,當時還擔憂了很久,怕沒法使用,後來證明11g的rpm包也是能夠在12c的oracle數據庫上面使用的,連接在這http://sourceforge.net/projects/cx-oracle/files/5.1.2/cx_Oracle-5.1.2-11g-py26-1.x86_64.rpm/download 你們能夠根據本身的須要下載相應的rpm包。git

還須要下載兩個python的組件,一個是argparse,還有一個是setuptools這兩個包我都是到Python官網下載的,各位也能夠去官網下載,固然我會在附件中打包上這兩個附件目前的最新版。首先安裝setuptools,而後再安裝argparse,安裝方式是使用源碼安裝,解壓後進入目錄,使用python setup.py install就能夠安裝了。github

好了,前期準備工做作完了,接下來就須要安裝cx_Oracle了,首先,在root用戶下的.bashrc中添加oracle的環境變量,不然將致使沒法使用cx_Oracle模塊,下面是在用戶中添加的環境變量:web

tail -6 .bashrc 
# User specific aliases and functions
export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

添加好環境變量以後,須要使其當即生效,使用命令source .bashrc來使其生效,注意export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib這條命令,剛開始的時候我沒有添加後面的lib的環境變量,致使安裝好cx_Oracle組件以後仍是沒法import這個組件,報錯信息以下:sql

error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory

後來,將環境變量中添加了lib庫該報錯就消失了。接下來就是安裝cx_Oracle組建了,使用rpm -ivh cx_Oracle-5.1.2-11g-py26-1.x86_64.rpm就能夠安裝了,安裝好後使用下面的操做看是否可以正常的import,下面是個人操做步驟,若是你的和個人同樣沒有異常輸出,那麼就沒問題的:
數據庫

python
Python 2.6.6 (r266:84292, Jan 22 2014, 01:49:05) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>>

安裝好後就可使用pyora腳原本獲取值了,(PS:對了,在這以前,須要在oracle數據庫中建立相應的監控用戶)關於oracle數據庫中添加相應的監控用戶權限屬於DBA的範疇了,我這裏只會貼出一些參考的權限配置,相關配置各位能夠和公司的DBA協商配置:json

CREATE USER ZABBIX IDENTIFIED BY 123456  DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
     GRANT CONNECT TO ZABBIX;
     GRANT RESOURCE TO ZABBIX;
     ALTER USER ZABBIX DEFAULT ROLE ALL;
     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;

配置好環境後就可使用pyora腳本實現監控oracle了,接下來須要執行pyora腳原本進行測試了。bash

在下載的pyora壓縮包中含有pyora.py腳本,將其上傳至客戶端服務器,而後使用python pyora.py --username zabbix --password 123456 --address 127.0.0.1 --database xxx show_users來測試是否可以獲取到正常數據,下面是我執行的結果:

{"data": [{"{#DBUSER}": "ANONYMOUS"}, {"{#DBUSER}": "APPQOSSYS"}, {"{#DBUSER}": "ASYNC"}, {"{#DBUSER}": "AUDSYS"}, {"{#DBUSER}": "DBSNMP"}, {"{#DBUSER}": "DIP"}, {"{#DBUSER}": "GSMADMIN_INTERNAL"}, {"{#DBUSER}": "GSMCATUSER"}, {"{#DBUSER}": "GSMUSER"}, {"{#DBUSER}": "OJVMSYS"}, {"{#DBUSER}": "ORACLE_OCM"}, {"{#DBUSER}": "OUTLN"}, {"{#DBUSER}": "SYNC"}, {"{#DBUSER}": "SYS"}, {"{#DBUSER}": "SYSBACKUP"}, {"{#DBUSER}": "SYSDG"}, {"{#DBUSER}": "SYSKM"}, {"{#DBUSER}": "SYSTEM"}, {"{#DBUSER}": "WMSYS"}, {"{#DBUSER}": "XDB"}, {"{#DBUSER}": "XS$NULL"}, {"{#DBUSER}": "ZABBIX"}]}

獲取的是json格式的數據,證實這個腳本是能夠正常運行的,而後咱們須要建立zabbix用戶,而後再安裝agnetd(關於這部分我就很少介紹了,前面博客寫了不少。)而後修改zabbix用戶的環境變量,編輯zabbix用戶家目錄下的.bashrc將上面的環境變量添加進去並source .bashrc使環境變量生效。

以後再使用zabbix用戶重複一次執行上面的獲取數據的步驟,測試可以獲取數據的話就說明沒問題了,在agentd的配置文件中寫入以下配置,以執行這個腳本獲取到監控的數據:

tail -2 /home/zabbix/zabbix/etc/zabbix_agentd.conf
UserParameter=pyora[*],/usr/bin/python /home/zabbix/zabbix/scripts/pyora.py --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8

保存後重啓agentd,而後再在server端使用zabbix_get測試可否獲取到數據,測試結果以下:

/opt/software/zabbix/bin/zabbix_get -s xx.xx.xx.xx -k"pyora[zabbix,123456,127.0.0.1,xxx,show_users]"
{"data": [{"{#DBUSER}": "ANONYMOUS"}, {"{#DBUSER}": "APPQOSSYS"}, {"{#DBUSER}": "ASYNC"}, {"{#DBUSER}": "AUDSYS"}, {"{#DBUSER}": "DBSNMP"}, {"{#DBUSER}": "DIP"}, {"{#DBUSER}": "GSMADMIN_INTERNAL"}, {"{#DBUSER}": "GSMCATUSER"}, {"{#DBUSER}": "GSMUSER"}, {"{#DBUSER}": "OJVMSYS"}, {"{#DBUSER}": "ORACLE_OCM"}, {"{#DBUSER}": "OUTLN"}, {"{#DBUSER}": "SYNC"}, {"{#DBUSER}": "SYS"}, {"{#DBUSER}": "SYSBACKUP"}, {"{#DBUSER}": "SYSDG"}, {"{#DBUSER}": "SYSKM"}, {"{#DBUSER}": "SYSTEM"}, {"{#DBUSER}": "WMSYS"}, {"{#DBUSER}": "XDB"}, {"{#DBUSER}": "XS$NULL"}, {"{#DBUSER}": "ZABBIX"}]}

證實沒有問題了,而後須要在zabbix_server的web端添加模板,這個模板在下載的pyora壓縮包裏面有一個半成品的模板,這個模板是個不完整的半成品,須要本身完成剩下的配置我這裏稍後也會打包放上我這邊進行部分修改後的模板上來。

添加主機並添加模板,這時候須要注意,由於這個模板中使用了宏變量,因此咱們在添加主機的時候須要設定相應的宏變量,下面是我設定宏變量的截圖:

wKioL1YMkz7yFTg9AAMTZSPW9B0411.jpg

設定好宏以後,等待一段時間(ps:通常5到十分鐘就可以正常的產生數據了),下面是獲取到的監控數據的截圖:

wKiom1YMlDGA9J82AAVJ1DEHxe0839.jpg

wKioL1YMlD7Cos_qAARroJg3OVs780.jpg

wKiom1YMlDHyi7NqAAPh3NSlVIo487.jpg

wKioL1YMlD6wCqbEAAQGIXu4Q68763.jpg

好了,至此,簡單的oracle監控已經結束了,至於更多的監控需求,各位能夠依據本身的需求進行適當的修改腳本,以達到各位的要求。

相關文章
相關標籤/搜索