Zabbix監控Oracle 連接數
阿新 • • 發佈:2018-08-18
nsq 返回 orace oracle數據庫 images 客戶端 mark execute Coding 監控Oracle 連接數
使用python腳本編寫腳本,監控oracle連接數;連接Oracle需要安裝cx_Oracle模塊,安裝完成後檢查是否正常,沒有任何信息返回即正常;
python -c "import cx_Oracle"
通常,還需要加載oralce的客戶端配置環境和庫
libclntsh.so.11.1
libnnz11.so
1、編寫用於檢查Oracle當前連接數、最大連接數的python腳本:zabbix_check_process.py
#!/usr/bin/python # coding:utf-8 # # check Oracle process # dbsession: current connect session # dbprocess: db max connect session # presession: current connect session precent import cx_Oracle import sys # conn to DB conn = cx_Oracle.connect(‘user/passwd@orcl‘) cursor = conn.cursor() dbProcess = {} # current connect session sessionSQL = "select count(*) process from v$session" cursor.execute(sessionSQL) sessionRow = cursor.fetchone() dbProcess[‘dbsession‘] = sessionRow[0] # db max connect session processSQL = "select value count from v$parameter where name =‘processes‘" cursor.execute(processSQL) proce***ow = cursor.fetchone() dbProcess[‘dbprocess‘] = proce***ow[0] # current connect session precent presession = float(sessionRow[0]) / float(proce***ow[0]) dbProcess[‘presession‘] = ‘%.2f‘ % (presession * 100) cursor.close() # close db conn.close() #print(dbProcess) try: if sys.argv[1]: if sys.argv[1] == ‘dbsession‘: print(dbProcess[‘dbsession‘]) if sys.argv[1] == ‘dbprocess‘: print(dbProcess[‘dbprocess‘]) if sys.argv[1] == ‘presession‘: print(dbProcess[‘presession‘]) except: print("Usage: %s dbsession |dbprocess |presession" % sys.argv[0])
驗證腳本
[zabbix@DB1 script]$ python zabbix_check_process.py Usage: zabbix_check_process.py dbsession |dbprocess |presession [zabbix@DB1 script]$ python zabbix_check_process.py dbsession 597 [zabbix@DB1 script]$ python zabbix_check_process.py dbprocess 1000 [zabbix@DB1 script]$ python zabbix_check_process.py presession 59.40
2、在zabbix_agentd上增加UserParamete:/opt/zabbix/etc/zabbix_agentd.conf.d/oracle.conf
## db connect session UserParameter=oracle.dbsession,source ~/.bash_profile;/usr/bin/python /opt/zabbix/share/script/zabbix_check_process.py dbsession UserParameter=oracle.dbprocess,source ~/.bash_profile;/usr/bin/python /opt/zabbix/share/script/zabbix_check_process.py dbprocess UserParameter=oracle.presession,source ~/.bash_profile;/usr/bin/python /opt/zabbix/share/script/zabbix_check_process.py presession
3、在服務端測試(客戶端需要重啟)
[root@zabbix ~]# zabbix_get -s 10.0.18.121 -p 10050 -k ‘oracle.dbsession‘
581
[root@zabbix ~]# zabbix_get -s 10.0.18.121 -p 10050 -k ‘oracle.presession‘
58.10
[root@zabbix ~]# zabbix_get -s 10.0.18.121 -p 10050 -k ‘oracle.dbprocess‘
1000
4、創建模板,添加監控項目
Oracel數據庫當前連接數的百分比 oracle.presession 60s 30d 90d Zabbix 客戶端 Oracle連接數 已啟用
Oracel數據庫最大連接數 oracle.dbprocess 60s 30d 90d Zabbix 客戶端 Oracle連接數 已啟用
Oracle數據庫當前連接數 oracle.dbsession 60s 30d 90d Zabbix 客戶端 Oracle連接數 已啟用
5、效果圖
6、資料下載
上傳的資料包含監控模板、數據庫連接數監控、表空間自動發現規則(監控),下載地址
Zabbix監控Oracle 連接數