zabbix 監控資料庫表記錄數(Discovery方式)

gxlineji發表於2016-10-19

前提:使用zabbix 監控資料庫表記錄數,本次使用expdp備份的LOG記錄的rows。 也可以透過查詢dba_tables 的row_nums欄位。
最終生成/tmp/expdp_table.txt檔案格式如下:
SCOTT.TMP_SR2     65912
SCOTT.TMP_SR3     132

生成/tmp/expdp_table.txt檔案方法:
cat   expdp.og|grep ". . exported "|awk 'gsub(/"/,"") {print $4,$7}'|sort|uniq >/tmp/expdp_table.txt


在存在“/tmp/expdp_table.txt”檔案的主機上,編寫如下兩個指令碼:
(1) 發現table的指令碼
/usr/local/software/zabbix2.22/script/expdp_table_scan.sh

點選(此處)摺疊或開啟

  1. #!/bin/bash
  2. #written by linengjiang
  3. diskarray=(`cat /tmp/expdp_table.txt|awk '{print $1}' 2>/dev/null`)
  4. length=${#diskarray[@]}
  5. printf "{\n"
  6. printf '\t'"\"data\":["
  7. for ((i=0;i<$length;i++))
  8. do
  9. printf '\n\t\t{'
  10. printf "\"{#TABLE_NAME}\":\"${diskarray[$i]}\"}"
  11. if [ $i -lt $[$length-1] ];then
  12. printf ','
  13. fi
  14. done
  15. printf "\n\t]\n"
  16. printf "}\n"

(2)配置zabbix item的指令碼
/usr/local/software/zabbix2.22/zabbix_agentd.conf.d/db_table_monitor.conf

點選(此處)摺疊或開啟

  1. UserParameter=db.scantable[*],/bin/sh /usr/local/software/zabbix2.22/script/expdp_table_scan.sh $1
  2. UserParameter=db.tabrows[*],cat /tmp/expdp_table.txt|grep "\b$1\b"|awk '{print $$2}'
備註:確保zabbix_agentd.conf裡的"Include="包含了db_table_monitor.conf

配置完成後,重啟zabbix_agant
/etc/init.d/zabbix_agentd restart

最後一步是在zabbix的WEB介面(http://192.168.1.8/zabbix)增加一個Templates,並配置discovery的item.請參考我部落格的另一篇文章“ZABBIX安裝以及監控磁碟、mysql、oracle配置”的第三章節“磁碟監控”

測試:
zabbix_get -s 192.168.1.XX -k 'db.tabrows[SCOTT.T_SRVINFO]'

問題:
(1)zabbix2.2.2最多可以監控8000多個表,實驗中,超過後8065就會報錯“ZBX_NOTSUPPORTED” 。
暫時沒發現有解決辦法
(2)expdp_table_scan.sh 這個指令碼執行時間如果超過“zabbix_agentd.conf”裡的timeOut設定,也會報“ZBX_NOTSUPPORTED”。
解決辦法:
事先執行expdp_table_scan.sh,比如在expdp備份指令碼里執行“expdp_table_scan.sh”,生產“/tmp/zabbix_scan_table.txt”,
sh /home/oracle/script/expdp_table_scan.sh > /tmp/zabbix_scan_table.txt
然後在db_table_monitor.conf直接讀“cat /tmp/zabbix_scan_table.txt”
最終db_table_monitor.conf檔案內容如下:

點選(此處)摺疊或開啟

  1. UserParameter=db.scantable[*],cat /tmp/zabbix_scan_table.txt $1
  2. UserParameter=db.tabrows[*],cat /tmp/expdp_table.txt|grep "\b$1\b"|awk '{print $$2}'

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10995764/viewspace-2126749/,如需轉載,請註明出處,否則將追究法律責任。

相關文章