標籤:
文章轉載自:http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&mid=2651296856&idx=1&sn=2bdf780719d3bd913f80ebab18ada237&scene=23&srcid=0719KBxswRECyHXV3DbvSgSS#rd
在這裡本人只是作為好的文章儲存,不做他用
原創 2016-07-19 南非蜘蛛 營運幫
上次寫完《 Zabbix用好LLD,立馬感覺高大上許多》後,近期又遇到一個用 Zabbix 監控 Oracle 的需求,有一些心得體會,記錄一下以備後用。
這次還是用到了 Zabbix 的 LLD 功能,這個功能可謂是:無 LLD 不 Zabbix ,強大到讓人想哭。
一、Orabbix 和 Zabora 的問題
一開始用 Orabbix 監控 Oracle,這個外掛程式的工作模式是配置好執行個體資訊,然後起一個JAVA程式,這個進程會根據定義好的查詢語句擷取到資料,用Trapper模式發送給 Zabbix 收集並展現。
但是用 Orabbix 監控 Oracle 存在幾個問題:
1、JAVA程式需要 JRE 環境,但實際情況是:並不是所有機器都安裝了JRE。
2、每個執行個體都需要在 Zabbix 裡配置一個HOST,這是一個非人性化的設計。
3、Orabbix 不在 Zabbix 架構內,不受 Zabbix 統一管理,要想升級、配置的話都麻煩要死。
4、不能自動探索執行個體的所有資料表空間,我們非常需要這個功能。
5、最可怕的是網上的好多中文文檔全有問題,走了很多彎路。
用了一段 Orabbix 時間後,果斷放棄,目光轉向了 Zabora 外掛程式,這是用 Shell 寫的,Zabora 設計思路還可以,不過寫的有點簡陋,也不能滿足我的需求。有興趣的朋友可以在全球最大的同性交友網站github上搜尋:zabora
所以,我打算重新造這個輪子。
二、監控 Oracle 的需求
1、可以自動探索所有資料庫執行個體並監控
2、可以自動探索所有資料庫執行個體裡的資料表空間,監控大小及使用率
3、可以靈活擴充監控選項
4、可以方便升級(如果在zabbix架構裡,我已經實現裡自動升級功能)
三、設計及功能詳解
首先來看一個 Oracle 資料庫的架構,和我們常用的MySQL有一點不一樣。
在一個資料庫裡可以有多個執行個體,每個執行個體下麵包括多個使用者和多個資料表空間。
我們最終要監控的 item 至少應該知道以下幾個資訊:
執行個體名字、資料庫使用者名稱、資料庫密碼、管理資料庫的作業系統使用者及環境檔案,如果要監控資料表空間,還需要資料表空間的名字。
聽起來還是比較暈的,下面我來梳理一下這些資訊。
四、幾個主要程式的作用:
1) key.conf 檔案中定義了4個key
第一個key用來發現有幾個執行個體
第二個key用來擷取執行個體裡需要監控的值
第三個key用來發現所有執行個體裡所有的資料表空間
第四個key用來擷取資料表空間的大小和使用率
2) oracle.conf 定義了執行個體的基本資料
其實也可以沒有這個檔案,但是需要滿足一些條件,完全做到關聯模板就自動探索並監控。
但是需要兩個條件,有興趣的朋友可以試試:
用程式發現所有執行個體及運行執行個體的使用者,這個簡單
ps -ef|grep smon|grep -v grep|awk ‘{print $8}‘|awk -Fora_smon_ ‘{print $2}‘
為 Zabbix 在所有資料庫裡建立統一的監控帳號和密碼,然後在擷取資料裡的shell定義或者從Zabbix web傳參給擷取資料的shell也行。
3、discover_oracle_db.sh
發現所有執行個體並輸出JSON格式資料給Zabbix
4、discover_oracle_tb.sh
發現所有執行個體及資料表空間並輸出JSON格式資料給Zabbix
5、sql目錄下的*.sql
sql目錄下的所有sql檔案都是用到的執行語句,所以在shell裡你看不到具體的執行語句,都是調用的這裡的,在shell裡的調用文法大概都是這樣:
sqlplus -s ${DB_USER}/${DB_PASS} @/etc/zabbix/zabbix_agentd.d/script/sql/xxxxx.sql
如果你需要擴充監控,還需要添加一個對應的sql語句
五、在Zabbix Web裡配置監控項
1、添加兩個自動探索,一個資料庫執行個體自動探索,一個資料庫資料表空間自動探索。
2、添加需要監控的item及trigger等
六、Latest data裡的效果
三個Applications分組
所有執行個體裡的監控項
所有執行個體裡所有資料表空間的使用率
理論上這套架構設計可以滿足多資料庫執行個體(單一實例,叢集執行個體)、多資料表空間的自動探索及監控需求。
代碼我需要整理一下發布,因我不太懂Oracle,誰要是很懂,可以幫我寫一些oracle監控語句,我豐富一下監控項,加我yunweibang008
在此感謝搜狐暢遊的楊建榮同學,他也是業內知名 Oracle 專家,幫我貢獻了很多Oracle sql語句,下面是他的個人訂閱號,有很多乾貨,值得關注。
zabbix 用 LLD 完全自動化監控 Oracle