Linux
查詢實例級元素的管理視圖的最佳實踐
我想通過這樣的查詢查詢實例級別的監視元素(例如用於實例的記憶體):
SELECT MEMBER, MAX_MEMBER_MEM, CURRENT_MEMBER_MEM, PEAK_MEMBER_MEM FROM TABLE(SYSPROC.ADMIN_GET_MEM_USAGE()) AS T
但是,為了執行查詢,我需要連接到數據庫。您使用什麼方法來查詢這種元素(實例級別)並建立連接(數據庫級別):
- 連接到 db 目錄中可用的第一個數據庫。
- 僅出於監視目的創建另一個數據庫。
- 對於這種情況,我必須在每個實例的至少一個數據庫中提供必要的授權。
db2 list db directory | awk '/alias/ {print $4}' db2 connect to $i db2 -vf query.sql
2)在這種情況下,我必須在每個伺服器的每個實例中創建一個用於監控目的的數據庫,並在該數據庫中提供必要的授權。
db2 connect to monitodb db2 -vf query.sql
我有數百個數據庫,分佈在不同伺服器上的許多實例中。出於這個原因,進行查詢的方式對我目前管理的數據庫集產生了很大的影響。|
由於您監控的大部分內容(鎖、緩衝池、SQL 性能等)都是特定於數據庫的,因此您仍然需要連接到每個數據庫來獲取資訊,所以我看不出使用其中一個有什麼問題這些連接也可以獲取實例或伺服器範圍的監視資訊。
這是關於監控是否應該在每台伺服器上安裝監控代理,或者是否應該“無代理”的經典問題/爭論。
在每台伺服器上安裝一個代理,一個程序/腳本/等。每隔一段時間醒來,收集數據並將其報告回中央位置(即監控伺服器)。
使用無代理解決方案,中央伺服器按計劃輪詢每個受監控的伺服器/數據庫/等以收集資訊。Cacti 和 Nagios 通常使用此解決方案。
每種方法都有優點和缺點。對於使用哪種方法不一定有最佳實踐,討論通常只會導致一場聖戰(類似於 Emacs 與 vi,DB2 與 Oracle,…)。