oracle监控连接数,Zabbix监控oracle各服务器连接数

需求:

根据机器名查询oracle连接数,并通过zabbix进行监控

脚本:

[root@rac1 Zabbix_S]# cat get_conns.py

#!/usr/bin/python

#coding:utf-8

import os,sys

from subprocess import Popen,PIPE

#根据machine对连接数进行分组,求各服务器到oracle的连接数

sql='''/opt/app/oracle/product/11.2.0/db_1/bin/sqlplus -S "system/xxxx@x.x.x.x:1521/xxxx" <

set lines 300 pages 1000

set feedback off

set heading off

col tablespace_name for a20

select machine,count(*) co from gv\$session where machine like '%-web-node%.xxx.com' group by machine;

quit

EOF'''

def get_data(sql):

result={}

try:

#重点:zabbix服务端调用agent端的脚本时,需要查询环境变量,所以需要在python脚本中通过os.environ设置当前python脚本所在进程的环境变量

#试过使用os.system('export ORACLE_HOME=xxxx')的方式,不好使,服务端调用会报找不到对应oracle_home和sqlplus命令

env=os.environ.copy()

env['ORACLE_SID']='xxxx1'

env['ORACLE_HOME']='/opt/app/oracle/product/11.2.0/db_1'

env['PATH']='$ORACLE_HOME/bin:$PATH'

res=Popen(sql,stdout=PIPE,env=env,shell=True)

for line in res.stdout:

if len(line)!=1:

#将主机名和连接数做成字典映射,便于根据主机名检索对应连接数

result[line.split()[0]]=(line.split()[1])

except Exception, e:

print e

return result

if __name__=='__main__':

if len(sys.argv)!=3:

#脚本第一个参数是区域,第二个参数是节点号

print "Usage: %s Zone Node" % (sys.argv[0])

sys.exit()

k=sys.argv[1]+'-web-'+sys.argv[2]+'.xxx.com'

res=get_data(sql)

try:

#判断是否有这个主机名对应的key

if res.has_key(k):

print res[k]

else:

print '%s not exists' %(k)

except Exception , e:

print e

脚本调用方式:

修改脚本的属主为zabbix

chown zabbix.zabbix get_conns.py

调用脚本并传递参数:

[root@rac1 Zabbix_S]# su - zabbix -s /bin/bash -c '/home/oracle/script/Zabbix_S/get_con.py bj node4'

25

配置zabbix配置文件,添加对应key:

[root@rac1 Zabbix_S]# cat /etc/zabbix_agentd.conf.d/oracle

UserParameter=db.hostconn[*],/home/oracle/script/Zabbix_S/get_conns.py $1 $2

之后在zabbix   web页面配置对应的监控项和触发器即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值