Zabbix+Python監控Oracle資料庫

liypsky發表於2020-05-01

一、規劃監控項

監控資料庫的目的是為了保障資料庫穩定執行,一旦出現故障,dba能夠及時發現並介入處理,監控項分為以下兩類

1. 資料庫空間不足或資料庫發生故障,DBA需要立即處理。

監控項包括表空間、使用者狀態、例項狀態、鎖、大量等待事件、閃回區使用率等。此類監控項需要給其設定觸發器,一旦出現異常,及時告警。

2. 資料庫執行狀態的一些統計資訊,為DBA定位資料庫效能問題發生的時間和類別提供參考。

監控項包括常見的等待事件發生的次數,命中率、硬解析比例等。

下面表格中列出附件中模板的監控項


二、安裝配置步驟


環境說明:

實測環境Ubuntu 16 + Zabbix server 4.2 + python 3.5 + Oracle Client 19 , 被監控Oracle 11G及以上


  • 安裝oracle客戶端

oracle-instantclient-basic-linuxx64.rpm

oracle-instantclient-devel-linuxx64.rpm

oracle-instantclient-sqlplus-linuxx64.rpm


配置環境變數

vi + /etc/profile

---------------------------------------------

export ORACLE_HOME=/usr/lib/oracle/19.6/client64

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export PATH=$PATH:$ORACLE_HOME/bin

執行下面的命令讓配置生效

source /etc/profile


新增動態庫配置檔案

vi + /etc/ld.so.conf.d/oracle.conf

---------------------------------------

/usr/lib/oracle/19.6/client64/lib

執行命令ldconfig


建立TNS配置檔案

mkdir -p /usr/lib/oracle/19.6/client64/network/admin

vi tnsnames.ora


chown -R python:python /usr/lib/oracle/19.6/client64/network/admin


  • 配置環境變數

vim /home/python/.bashrc  

新增如下內容

export  ORACLE_HOME=/usr/lib/oracle/11.2/client64

export  TNS_ADMIN=$ORACLE_HOME/network/admin

export  NLS_LANG='simplified chinese_china'.ZHS16GBK

export  LD_LIBRARY_PATH=$ORACLE_HOME/lib

export  PATH=$ORACLE_HOME/bin:$PATH

生效環境變數:source /home/python/.bashrc


  • 安裝python相關包, 安裝cx_Oracle(python連線oracle的包)


新的版本:

安裝指導:

root@zabbix: # python -m pip install cx_Oracle --upgrade

Collecting cx_Oracle

  Downloading (736kB)

    100% |████████████████████████████████| 737kB 1.3MB/s 

Installing collected packages: cx-Oracle

Successfully installed cx-Oracle-7.3.0

You are using pip version 9.0.3, however version 20.1 is available.

You should consider upgrading via the 'pip install --upgrade pip' command.



  • 安裝argparse

wget --no-check-certificate

python get-pip.py

pip install argparse


-----------------排錯pip--------------

root@zabbix:~# python3 --version

root@zabbix:~# sudo apt install python3-pip

root@zabbix:~# pip3 show argparse

You are using pip version 8.1.1, however version 20.1 is available.

You should consider upgrading via the 'pip install --upgrade pip' command.

root@zabbix:~# pip3 install --upgrade pip

Collecting pip

  Downloading (1.5MB)

    100% |████████████████████████████████| 1.5MB 387kB/s 

Installing collected packages: pip

  Found existing installation: pip 8.1.1

    Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr

Successfully installed pip-20.1

root@zabbix:~# pip install argparse

Collecting argparse

  Downloading argparse-1.4.0-py2.py3-none-any.whl (23 kB)

Installing collected packages: argparse

Successfully installed argparse-1.4.0

root@zabbix:~# pip show argparse

Name: argparse

Version: 1.4.0

Summary: Python command-line parsing library

Home-page:

Author: Thomas Waldmann

Author-email: tw@waldmann-edv.de

License: Python Software Foundation License

Location: /usr/local/lib/python3.5/dist-packages

Requires: 

Required-by: 

root@zabbix:~# python get-pip.py 

Collecting pip<10

  Downloading (1.4MB)

    100% |████████████████████████████████| 1.4MB 460kB/s 

Collecting setuptools<37

  Downloading (482kB)

    100% |████████████████████████████████| 491kB 2.4MB/s 

Collecting wheel<0.30

  Downloading (66kB)

    100% |████████████████████████████████| 71kB 2.4MB/s 

Installing collected packages: pip, setuptools, wheel

  Found existing installation: pip 20.1

    Uninstalling pip-20.1:

      Successfully uninstalled pip-20.1

Successfully installed pip-9.0.3 setuptools-36.8.0 wheel-0.29.0

You are using pip version 9.0.3, however version 20.1 is available.

You should consider upgrading via the 'pip install --upgrade pip' command.


  • 上傳python指令碼

zabbix監控模板下載:


將附件中的pyora.py指令碼放入/usr/lib/zabbix/externalscripts/目錄下賦許可權,讓zabbix使用者能夠執行該指令碼

chmod 755 /usr/lib/zabbix/externalscripts/pyora.py


[注意:先在被監控機的oracle資料庫中建立監控使用者,使用者名稱和密碼可以自己隨意指定

create user zabbix identified by zabbix;

grant connect,select any dictionary to zabbix;]



  • 環境測試指令碼--

root@zabbix:#  python pyora.py --username db_user --password db_paas --address Monitor_DB_ip --port 15xx 

--database db_name show_tablespaces


上面測試指令碼的引數說明

username: 使用者名稱

password: 密碼

address: 被監控機ip地址

port: 埠號

database: oracle service name

有返回結果表示指令碼能正常執行


  • zabbix監控主機中配置

    在zabbix頁面中,依次點選 Configuration – Hosts – Create host – Hostname (輸入ip地址) – groups (選Linux servers) – Templates (選擇Pyora_ExternalCheck_11G) – 點選上面的Add – Macros – 點選上面的Add新增宏,全部新增完畢後,點選下面的Add,主機即新增完畢。

        

  • 檢視監控資料:

         依次點選 Monitoring – Latest Data – Host (選擇對應的主機),則可以看到監控的資料了



參考: https://www.cnblogs.com/ddzj01/p/10769448.html



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

相關文章