需求:

根据机器名查询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" <<EOF

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页面配置对应的监控项和触发器即可

Zabbix监控oracle各服务器连接数的更多相关文章

  1. 使用zabbix监控nginx的活动连接数

    使用zabbix监控nginx的活动连接数 1.方法简述 zabbix可以自定义很多监控,只要是能通过命令获取到相关的值,就可以在zabbix的监控中增加该对象进行监控,在zabbix中,该对象称之为 ...

  2. zabbix监控Oracle

    可监控项 使用zabbix监控oracle数据库需要借助第三方的插件,目前使用较多的是orabbix.目前维护到了1.2.3版本.关于oracle自带的监控项目有以下几个: DB Version (i ...

  3. 使用zabbix监控oracle的后台日志

    本文将介绍如何使用zabbix监控oracle的后台日志,当oracle后台日志出现“ORA-”或“Error”时,第一时间将该信息报警出来 zabbix agent端 以下所有操作均用root执行 ...

  4. 使用Zabbix监控Oracle数据库

    Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...

  5. 利用zabbix监控oracle数据库

    一.概述 zabbix是一款非常强大,同时也是应用最为广泛的开源监控软件,本文将给大家介绍如何利用zabbix监控oracle数据库. 二.环境介绍 以下是我安装的环境,实际部署时并不需要跟我的环境一 ...

  6. zabbix 监控数据库 及 tcp连接数

    参考网站: 监控sqlserver      http://blog.51cto.com/13272050/2050601 http://blog.51cto.com/ultrasql/1927672 ...

  7. 通过iLO进行Zabbix监控——针对HP服务器集成

    iLO 全名是 Integrated Lights-out,它是惠普某些型号的服务器上集成的远程管理端口,它能够允许用户基于不同的操作系统从远端管理服务器,实现了虚拟存在和控制,从而进行智能型基础构架 ...

  8. 使用zabbix监控oracle表空间

    0.概述 zabbix是一款极其强大的开源监控工具,下面我分享下zabbix如何监控表空间,跟着这个思路,监控其他项都是类似操作. 前提条件是你已经有了zabbix server和zabbix age ...

  9. zabbix监控第一台服务器

    客户机的IP是192.168.0.80,主机名是wls12c 1. 安装客户端, 1.1 新建zabbix的用户 groupadd zabbix useradd -g zabbix zabbix 1. ...

随机推荐

  1. python右键Edit with IDLE

    在windows下试用python,Py文件的右键菜单有个Edit with IDLE,虽然这个ide不是那么功能强大,但是胜在方便.对于脚本语言的一般使用来说是足够了.但是有时候,这个菜单就消失了, ...

  2. 如何在同一台机器上安装多个MySQL的实例 转

    https://www.cnblogs.com/shangzekai/p/4375271.html 最近由于工作的需要,需要在同一台机器上搭建两个MySQL的实例,(注:已经存在了一个3306的MyS ...

  3. c++概念字符串操作 (转)

    本文转自:http://www.jb51.net/article/37410.htm 一.char_traits 字符特征类 1)意义:包装特定串元素的通用行为界面,以便容器实现时依据特征信息而执行特 ...

  4. Zookeeper崩溃恢复过程(Leader选举)

    1. 崩溃恢复 a). leader选择过程可以保证新leader是ZXID最大的节点 b). ZAB协议确保丢弃那些只在leader上被提出的事务,场景 leader发出PROPOSAL收到ACK, ...

  5. ubuntu 无法应用原保存的显示器配置

    打开ubuntu之后的开启页面出现: 所选模式均不匹配可能的模式: 为 CRTC 63 尝试模式 CRTC 63:尝试 800x600@60Hz 模式输出在 1366x768@60Hz (通过 0) ...

  6. iis mvc html

    iis mvc项目显示view文件夹下的html <system.webServer><handlers> <add name="JavaScriptHandl ...

  7. 发布MVC网站的时候出现缺少WebHost等程序集问题的解决办法

    将一下几个dll 拷贝到bin文件夹下就行 链接:https://pan.baidu.com/s/17xhTdakzM_SQmOjJdZvviw 密码:c976

  8. linux 解决 gvfsd-smb-browse CPU 100%占用

    原文地址:https://bugzilla.redhat.com/show_bug.cgi?id=1303300 1: sudo vim /etc/samba/smb.conf 2:定位到[globa ...

  9. js之BOM和DOM

      今天我们来学习js中的一些基础的操作. 一.BOM对象 BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其他与页面内容不直接相 ...

  10. 【Python】python2 html safe string

    import cgi s = '<>&' s += u'哈哈' print type(s) print s r = cgi.escape(s) print type(r) prin ...