[打造自己的监控系统]使用Django批量监控Oracle Job运行情况
时间:2022-07-23
本文章向大家介绍[打造自己的监控系统]使用Django批量监控Oracle Job运行情况,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
关于监控系统我们前面介绍了很多
学会了如何使用Django新建网站以及获取数据监控数据至MySQL或redis
然后将获得的数据库处理后再前端显示
往期可以到我的个人网页查看
http://www.zhaibibei.cn/oms/ http://www.zhaibibei.cn/domanager/
这期讲如何使用Django批量监控Oracle Job运行情况
开发环境
操作系统:CentOS 7.3 Python版本 :2.7 Django版本: 1.10.5 操作系统用户:oracle
1. 程序原理
原理为通过Django来批量连接Oracle数据库,然后查看dba_jobs视图,如果发现问题则报警出来
2 . 程序主体
程序路径为:
mysite/monitor/management/commands/checkoraclejob.py
该程序解释如下:
- 首先获取oraclelist表中所有的数据库信息
- 然后当monitor_type等于1时连接数据库
- 然后通过getoracleinfo.py中的checkjob函数获取job的情况
- 当返回值为error时候获取tns名称并写入mailcontent列表中
- 最后判断mailcontent是否有数据,有的话则报警
3. 获取Job执行信息的函数
我们通过如下函数获取Job的执行情况,该程序可单独于Django运行
路径为:
mysite/monitor/command/checkoraclejob.py
def checkjob(cursor):
cursor.execute('select failures from dba_jobs a where round((sysdate-this_date)*24,2) >1 or failures<>0')
row=cursor.fetchone()
if row is None:
return 'normal'
else:
return 'error'
当dba_jobs视图中的failures 不等于0 或者 Job执行时间超过1小时(可根据自己习惯调整)时我们认为该Job有异常
4. 最终结果
可以看如果有Job异常则会发邮件
5. 设置自动运行
这里我们设置每天凌晨进行一次,并重定向所有日志至一个文件
这样我们可以通过检查该日志文件判断脚本是否正常运行
59 23 * * * /usr/bin/python2.7 /ezio/website/manage.py checkoraclejob >>/home/oracle/crontab.log 2>&1
源代码位置
欢迎访问我的github主页查看源码
https://github.com/bsbforever/oms_django
- Python 项目实践三(Web应用程序)第五篇
- CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4
- Python 项目实践三(Web应用程序)第四篇
- 负载均衡环境下缓存处理
- WordPress Ajax 异步加载 自定义评论表情
- “分期网”域名fenqi.wang以16888元成交
- Python 项目实践三(Web应用程序) 第三篇
- Python 项目实践三(Web应用程序)第二篇
- 第一个IronPython程序(之一)
- mono-3.4.0 源码安装时出现的问题 [do-install] Error 2 [install-pcl-targets] Error 1 解决方法
- 安装 IronPython
- Python 项目实践三(Web应用程序)第一篇
- Centos 7.0 安装Mono 3.4 和 Jexus 5.6
- 第一个IronPython程序(之二)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一个简单的toolabar结合drawlayout使用方法
- 利用DrawerLayout和触摸事件分发实现抽屉侧滑效果
- Android App端与PHP Web端的简单数据交互实现示例
- Android开发实现读取assets目录下db文件的方法示例
- Android Textview实现颜色渐变滚动效果
- Android中fragment+viewpager实现布局
- android自动工具类TextUtils使用详解
- Android常用正则表达式验证工具类(实例代码)
- Android webview实现拍照的方法
- Android ListView自定义Adapter实现仿QQ界面
- Android webview旋转屏幕导致页面重新加载问题解决办法
- Android系统对话框使用详解(最详细)
- Android webview 遇到android.os.FileUriExposedException错误解决办法
- Android修改字体样式的示例代码
- Android Retrofit 中文乱码问题的解决办法