python 简单监控内存/硬盘空间/以及oracle表空间使用情况

由于使用的是内网环境,所以使用用户名密码验证,建议使用密钥认证
check.py

import paramiko
#获取ssh连接并执行shellcomand返回正确的结果
def doshell(hostname,port,username,password,shellcommand):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname,port,username,password)
    stdin, stdout, stderr = ssh.exec_command(shellcommand)
    result=stdout.readlines()
    ssh.close()
    return  result
#查询内存情况
def check_mem(hostname,port,username,password):
    shellcommand = ‘free -m‘
    result=doshell(hostname,port,username,password,shellcommand)
    line_number=0
    for line in result:
        rs = line.split()
        if line_number == 0:
            print(‘[主机地址]%s‘ % hostname)
            print("[内存]")
        elif line_number == 2:
            print(‘程序使用:%s%s ‘ % (rs[2], ‘M‘))
            print(‘系统挪用:%s%s ‘ % (rs[3], ‘M‘))
            print("[swap]")
        else:
            print(‘总大小:%s%s ‘ % (rs[1], ‘M‘))
            print(‘空闲内存:%s%s ‘ % (rs[3], ‘M‘))
        line_number += 1
#检查硬盘情况
def check_disk(hostname,port,username,password,part):
    shellcommand = ‘df -h ‘+part
    result = doshell(hostname, port, username, password, shellcommand)
    line_number = 0
    for line in result:
        rs = line.split()
        if line_number == 0:
            #print(‘[主机地址]%s‘ % hostname)
            print("[硬盘]")
        else :
            print(‘分区:%s ‘ % (rs[0]))
            print(‘总大小:%s ‘ % (rs[1]))
            print(‘空闲空间:%s ‘ % (rs[3]))
        line_number += 1

#检查表空间
def check_tablespace(hostname,port,username,password,sid):
    shellcommand = "export ORACLE_HOME=/whmms/oracle/db11g/;export PATH=$ORACLE_HOME/bin:$PATH;export ORACLE_SID=MSPROD; sqlplus  wuyang/[email protected]%s/%s </tmp/tablespace.sql"%(hostname,sid)
    result=doshell(hostname,port,username,password,shellcommand)
    print(‘[表空间]‘)
    for line in result:
        finded=line.find(‘DATA_TBS‘)
        if finded != -1:
            rs = line.split()
            print(‘表空间名称:%sG‘ % (rs[0]))
            print(‘总大小:%sG‘ % (rs[1]))
            print(‘已使用:%sG‘ % (rs[2]))
            print(‘空闲:%sG‘ % (rs[3]))
            print(‘使用率:%sG‘ % (rs[4]))

新建一个文件调用写好的方法,每次执行main.py脚本会将检查结果记录在log.txt中 如何不存在log.txt 会报错,由于是简单检测所以没有写自动生成log.txt的代码 如果需要检测大量机器建议使用多线程

main.py
import check
import sys
import time

#主机列表
hosts=[‘172.16.1.20‘,‘172.16.1.21‘]
#端口号
port = 22
#用户名
username = ‘rzfb‘
#密码
password = ‘password‘
#需要检查的分区
part = ‘/dev/mapper/VolData-lvdata‘
#oracle_sid
sid = "MSPROD"

#将print输出保存到文件中
output=sys.stdout
outputfile=open("log.txt","a")
sys.stdout=outputfile
type = sys.getfilesystemencoding()

#记录执行时间
print(time.strftime(‘%Y-%m-%d %H:%M:%S‘, time.localtime(time.time())))
#逐个主机检查运行情况
for hostname in hosts:
    if hostname == ‘172.16.1.21‘:
        #两个数据库的sid不同所以在这里做了个判断
        sid="WHMTST"
    check.check_mem(hostname,port,username,password)
    check.check_disk(hostname,port,username,password,part)
    check.check_tablespace(hostname,port,username,password,sid)
    print("\n\n")

原文地址:http://blog.51cto.com/13466287/2113832

时间: 2024-07-30 17:14:06

python 简单监控内存/硬盘空间/以及oracle表空间使用情况的相关文章

44.oracle表空间的使用

要给下属充分的发挥空间,要允许下属犯错,下属犯错自己能顶下来就顶着,不要盯得让下属觉得"这不是我的事,我只是个小打工的",团建要放在首位.不可在下属面前"装B",别人也不傻. Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献.可以这么说,Oracle中很多优化都是基于表空间的设计理念而实现的. ORACLE数据库被划分成称作为表空间[1]  的逻辑区域--形成ORACLE数据库的逻辑结构.一个ORACLE数据库能够

zabbix自动发现oracle表空间并监控其使用率

监控需求 Oracle表空间使用率实时监控,当表空间使用率达到95%时触发告警机制.Oracle表空间分为系统默认表空间和用户创建的表空间,而表空间又有自动扩展和非自动扩展两种类型,用户(DBA)在创建表空间时可以根据应用需求指定是否开启表空间自动扩展.那么在这里我们需要分析一个监控策略,就是当zabbix监控到某个表空间使用率达到95%,那么就让触发器触发警告(Warning)信息,并发送邮件给DBA或管理者.当检测到表空间没有开启自动扩展时,则触发Information信息.说明一下:ora

Nagios监控Oracle表空间出现Cannot determine ORACLE_HOME报错

在使用Nagios监控软件时,监控Oracle表空间使用率,遇到了如下错误: 表名监控状态是:UNKNOWN错误信息是:Cannot determine ORACLE_HOME for sid dbnms 由于我是使用root用户启动的nagios,也是用root执行的check_oracle插件的命令.所以首先分析的是环境变量的问题,然后我修改了root目录下的.bash_profile文件中的环境变量,如下: 但是还是出现了上面的错误. 然后我就直接more了下check_oracle插件的

oracle表空间简单学习

1.重命名表空间:alter tablespace 原表空间名 rename to 新表空间名ps:(1)system 和sysaux表空间不能重名(2)如果该表空间中任何一个数据出于脱机状态或者表空间处于脱机状态,则不能进行重命名例:修改表空间 student 的名字为 stu:并通过 SQL 语句查看其状态: alter tablespace student rename to stu;2.查看系统表空间 Select * from v$tablespace;3.向本地管理表空间中增加数据文

ArcSDE for Oracle表空间管理——暂时(TEMP)表空间

Oracle暂时表空间主要用来做查询和存放一些缓冲区数据.暂时表空间消耗的主要原因是须要对查询的中间结果进行排序. 重新启动数据库能够释放暂时表空间,假设不能重新启动实例,而一直保持问题sql语句的运行,temp表空间会一直增长.直到耗尽硬盘空间. 下面操作会占用大量的temporary:    1.用户运行imp/exp 导入导出操作时,会使用大量的temporary段    2.用户在Create 或者 rebuild index时    3.运行create table ...... as

oracle表空间的创建、修改、删除及一些参数解释

创建表空间 方法1:代码创建,如下:PL/SQL 建立表空间(一般建N个存数据的表空间和一个索引空间):      create tablespace 表空间名      datafile ' 路径(要先建好路径)\***.dbf  ' size *M      tempfile ' 路径\***.dbf ' size *M      autoextend on  --自动增长      extent management localSQL> / 表空间已创建.       方法2用sqlplu

interview:about Oracle表空间

Oracle表空间 SQL Server数据库与Oracle数据库之间最大的区别要属表空间设计.Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献.可以这么说,Oracle中很多优化都是基于表空间的设计理念而实现的. 1概述 Oracle表空间之基本概念 ORACLE数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构.一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件. 表空间是OR

Oracle 表空间的概念

表空间 在数据库系统中,存储空间是较为重要的资源,合理利用空间,不但能节省空间,还可以提高系统的效率和工作性能. Oracle 可以存放海量数据,所有数据都在数据文件中存储.而数据文件大小受操作系统限制,并且过大的数据文件对数据的存取性能影响非常大.同时Oracle 是跨平台的数据库, Oracle 数据可以轻松的在不同平台上移植,那么如何才能提供统一存取格式的大容量呢? Oracle 采用表空间来解决.表空间只是一个逻辑概念,若干操作系统文件(文件可以不是很大)可以组成一个表空间.表空间统一管

Oracle 表空间和用户权限管理【转】

一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻辑结构的一个重要组件. 表空间可以存放各种应用对象,如表.索引等. 而每一个表空间由一个或多个数据文件组成. 1. 表空间的分类 表空间可分为3类: 永久性表空间:一般保存表.上天.过程和索引等数据.system.sysaux.users.example表空间是默认安装的. 临时性表空间:只用于保存