python通过cx_Oracle模块监控oracle业务

1、要想通过python监控Oracle,可以使用cx_Oracle模块,还需配置环境变量,此处不做详解
关于cx_Oracle的版本,一定要和linux机器上的oracle版本以及python版本符合;

此处我的oracle版本是11g,python是2.7,因此我的cx_Oracle版本是cx_Oracle-5.2.1-11g-py27-1.x86_64.rpm,否则会报libcublas.so.12.1 cannot open shared object file no such file or directory类似的错误;

下面附python3脚本

cat /u01/app/oracle/scripts/unionpay.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import cx_Oracle,sys,os

'''
脚本备注
'''


sql = {
    'unionpay_success': "sql1",
    'unionpay_failed': "sql2'"
}


def Get_Item(itemkey):
    conn = None
    result = None

    try:
        conn = cx_Oracle.connect(‘数据库账号/密码@IP:端口/库名')
        cursor = conn.cursor()
        cursor.execute(sql[itemkey])
        rows = cursor.fetchall()
        if len(rows) == 1:

            result = rows[0][0]
        else:
            result = None

        cursor.close()
        conn.close()

    except Exception as e:
        print(e)
    finally:

        if not conn:
            conn.close()

    return result

if __name__ == '__main__':
    a = Get_Item(sys.argv[1])
    if sys.argv[1] == 'unionpay_success':
        os.system('zabbix_sender -z zabbix_server_ip  -s zabbix_agent_ip -k unionpay_success -o %s'% a)
    else:
        os.system('zabbix_sender -z zabbix_server_ip -s zabbix_agent_ip -k unionpay_failed -o %s'% a)

以上脚本是通过zabbix采集器做监控的,这样可以减轻服务端的io性能

2、在写计划任务是遇到一个大坑,手动执行正常,但配到crontab中无法运行

因为需要生效你使用的用户的bash信息,可以在前面加上“source ~/.bash_profile &&”,这个文件中应当配置的有oracle的环境变量,crontab如:

*/2 * * * * source /home/oracle/.bash_profile && /usr/bin/python2 /u01/app/oracle/scripts/unionpay.py > /yyy.log 2>&1  
此处我用的是oracle这个普通用户

你可能感兴趣的:(python,日常运维)