前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[打造自己的监控系统]使用自定义命令获取Oracle监控指标

[打造自己的监控系统]使用自定义命令获取Oracle监控指标

作者头像
bsbforever
发布2020-08-19 14:57:58
9520
发布2020-08-19 14:57:58
举报
文章被收录于专栏:时悦的学习笔记

前面介绍了如何利用Python搭建一个网站并且介绍了如何在其中执行Oracle命令并在前端显示出来,这节讲述自定义命令相关的知识

[打造自己的监控系统] Django新建网站的总结

打造自己的监控系统之执行Oracle命令总结

这个专题主要内容有:

  • 如何新建自定义命令
  • 如何使用自定义命令获取Oracle监控指标并写入数据库
  • 如何将获取到的数据库监控指标在前端显示

开发环境

操作系统:CentOS 7.3 Python版本 :2.7 Django版本: 1.10.5 操作系统用户:oracle


上节我们介绍了如何新建一个自定义命令

[打造自己的监控系统]让Django运行自定义命令

这节讲述如何使用其获取Oracle监控指标并保存在数据库中

1. 新建MySQL表存放监控数据

我们日常在运维Oracle数据库时有很多指标需要考虑,这里我挑选了一些日常检查的项目

1.1 添加models

vim models.py

class oraclestatus(models.Model): tnsname=models.CharField(max_length=100) ipaddress=models.GenericIPAddressField() dbsize=models.CharField(max_length=50) tbstatus=models.CharField(max_length=200) host_name=models.CharField(max_length=50,default='host') version=models.CharField(max_length=50,default='10') startup_time=models.CharField(max_length=50,default='2015') archiver=models.CharField(max_length=20,default='opened') sga_size=models.IntegerField(default=0) def __unicode__(self): return self.tnsname class Meta: app_label='monitor'

1.2 创建数据库表

[oracle@asensvr-oms mysite]$ python manage.py makemigrations [oracle@asensvr-oms mysite]$ python manage.py migrate

1.3 添加至admin管理

以上就完成了表的创建,一些字段的解释如下:

  • dbsize 为数据库的大小,单位为G
  • tbstatus为表空间的状态,当使用率大于90%时候会显示出具体的表空间名
  • archiver为是否启用了归档

2. 编写自定义命令获取指标并存入数据库

vim oraclemonitor.py

这个程序讲解如下:

  1. 为防止不需要监控的数据库留下,先清空oraclestatus表的数据
  2. 然后从oraclelist表中获取信息
  3. 遍历每个数据库,当monitor_type为1时继续
  4. 利用取出来的信息连接数据库,当连接成功后执行相应的程序获取监控数据
  5. 获取完成后关闭数据库连接
  6. 接下来首先利用filter方法判断oraclestatus表中是否已经有该实例,如果有则使用update更新该行
  7. 如果没有则首先创建该行,然后再更新该行,save方法为commit insert动作

一些注意事项

  • 由于可能同一台主机有多个实例,这里判断tnsname和ip地址2个字段
  • 各个函数的内容请自行查看源代码,很容易理解
  • 由于我这有9i的数据库,所以SGA大小我用的是 sga max size 而不是sga target
  • 数据库大小用的是datafile的大小而不是segment的大小

3. 最终结果

可以看出数据库的信息已经保存在MySQL数据库中了


4. 设置自动运行

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

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

59 23 * * * /usr/bin/python2.7 /home/oracle/mysite/manage.py oraclemonitor >>/home/oracle/crontab.log 2>&1

源代码位置

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

https://github.com/bsbforever/wechat_monitor


这节介绍了如何利用自定义命令获取Oracle数据库指标并保存在MySQL数据库中

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

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

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

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

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