前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[打造自己的监控系统]使用Django批量监控Oracle长会话

[打造自己的监控系统]使用Django批量监控Oracle长会话

作者头像
bsbforever
发布2020-08-19 10:40:08
8400
发布2020-08-19 10:40:08
举报

关于监控系统我们前面介绍了很多,学会了如何使用Django新建网站以及获取数据监控数据至MySQL或redis

然后将获得的数据库处理后再前端显示

往期可以到我的个人网页查看

http://www.zhaibibei.cn/oms/ http://www.zhaibibei.cn/domanager/

这期讲如何使用Django批量监控Oracle 长会话

开发环境

操作系统:CentOS 7.4 Python版本 :3.6 Django版本: 1.10.5 操作系统用户:oms

1. 程序原理

原理为通过Django来批量连接Oracle数据库,然后查看v$session视图的last_call_et字段,如果发现有运行超过指定时间的则报警出来

支持Oracle 9i/10g/11g

12c我没环境应该也可以

2 . 程序主体

程序路径为:

mysite/monitor/management/commands/checkoracle_job_session.py

这个程序和前面说的检查Job的程序放在一起

该程序解释如下:

  1. 首先获取oraclelist表中所有的数据库信息
  2. 然后当monitor_type等于1时连接数据库
  3. 然后通过getoracleinfo.py中的checkactivesession函数获取会话的情况
  4. 当返回值为error时候获取tns名称并写入mailcontent列表中
  5. 最后判断mailcontent是否有数据,有的话则报警
  6. 这里有邮件和微信报警,微信报警请看我昨天的推送

3. 获取Job执行信息的函数

我们通过如下函数获取Job的执行情况,该程序可单独于Django运行

路径为:

mysite/monitor/command/checkoraclejob.py

该函数执行一个文件里的sql语句

检查v$session 中状态为ACTIVE或KILLED的非后台进程的会话,当LAST_CALL_ET字段大于7200(2小时)时候则报警出来

之所以单独排除CJQ 和QMN,因为这2个后台进程在9i中的TYPE为USERS而不是BACKGROUND

def checkactivesession(cursor):
    fp=open(os.environ['HOME_DIR']+'/mysite/monitor/command/sql/getsession.sql','r')
    fp1=fp.read()
    s=cursor.execute(fp1)
    fp.close()
    row=s.fetchone()
    if row is None:
        return 'normal'
    else:
        return 'error'

getsession.sql

select a.sid,a.serial#,a.username,a.machine,a.program,a.sql_hash_value,a.type,a.LAST_CALL_ET
  from v$session a
 where a.status IN ('ACTIVE', 'KILLED')
 and a.type <> 'BACKGROUND'
  AND a.LAST_CALL_ET>7200
  and a.PROGRAM not like '%CJQ%'
  and a.PROGRAM not like '%QMN%'

4. 最终结果

可以看如果有超过2小时活动的会话则会发邮件

5. 设置自动运行

这里我们设置每天凌晨进行一次,并重定向所有日志至一个文件

这样我们可以通过检查该日志文件判断脚本是否正常运行

45 * * * * /usr/bin/python2.7 /ezio/website/manage.py checkoracle_job_session >>/home/oracle/crontab.log 2>&1

源代码位置

欢迎访问我的github主页查看源码

https://github.com/bsbforever/oms_django

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅必备 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 程序原理
  • 2 . 程序主体
  • 3. 获取Job执行信息的函数
    • 4. 最终结果
      • 5. 设置自动运行
        • 源代码位置
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档