1. 程式人生 > >Zabbix監控Oracle 連接數

Zabbix監控Oracle 連接數

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 連接數