监控程序:
#
!/usr/bin/env python
# -*- coding: cp936 -*-
import threading,os,time
class Config_th:
def Config_m(self):
# global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
path = " monitor_config. "
monitor_config_path = open(path, ' r ' )
config_list = monitor_config_path.readlines()
# Set WorkPath Config
set_workpath = config_list[ 1 ][ 10 : - 1 ]
# set CommandPath Config
set_commandpath = config_list[ 2 ][ 13 : - 1 ]
# set looptime Config
set_looptime = config_list[ 3 ][ 17 : - 1 ]
# set loopdata Config
set_loophour = config_list[ 4 ][ 14 : - 1 ]
# set loopday Config
set_loopday = config_list[ 5 ][ 14 : - 1 ]
# test(os.system("echo %s" % (set_loopday)))
return set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
class Cpuinfo_th(threading.Thread,Config_th):
def __init__ (self):
threading.Thread. __init__ (self)
def run(self):
# global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday = self.Config_m()
os.system( " %s/iostat -t -c 1 1 >> %s/cpu_info.txt " % (set_commandpath,set_workpath))
class Memoryinfo_th(threading.Thread,Config_th):
def __init__ (self):
threading.Thread. __init__ (self)
def run(self):
# global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday = self.Config_m()
os.system( " /usr/bin/vmstat -S K 1 1 >> %s/memory_info.txt " % (set_workpath))
class Deciveinfo_th(threading.Thread,Config_th):
def __init__ (self):
threading.Thread. __init__ (self)
def run(self):
# global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday = self.Config_m()
os.system( " %s/iostat -d 1 1 >> %s/decive_io_info.txt " % (set_commandpath,set_workpath))
class Totalinfo_th(threading.Thread,Config_th):
def __init__ (self):
threading.Thread. __init__ (self)
def run(self):
# global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday = self.Config_m()
os.system( " %s/sar -u 1 1 >> %s/total_info.txt " % (set_commandpath,set_workpath))
class Control(Config_th):
def console(self):
# application object
global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
cpuinfo_th = Cpuinfo_th()
memoryinfo_th = Memoryinfo_th()
deciveinfo_th = Deciveinfo_th()
totalinfo_th = Totalinfo_th()
set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday = self.Config_m()
# loop control main()
for i in range(float(str(set_loopday))):
for i in range(float(str(set_loophour))):
time.sleep(float(str(set_looptime)))
print " Execute OK!,run cpuinfo,%d " % (i)
cpuinfo_th.run()
time.sleep( 0.001 )
print " Execute OK!,run memoryinfo,%d " % (i)
memoryinfo_th.run()
time.sleep( 0.001 )
print " Execute OK!,run deciveinfo,%d " % (i)
deciveinfo_th.run()
time.sleep( 0.001 )
print " Execute OK!,run totalinfo,%d " % (i)
totalinfo_th.run()
time.sleep( 0.001 )
print " Total Execute %d...... " % (i)
if __name__ == " __main__ " :
control = Control()
control.console()
# -*- coding: cp936 -*-
import threading,os,time
class Config_th:
def Config_m(self):
# global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
path = " monitor_config. "
monitor_config_path = open(path, ' r ' )
config_list = monitor_config_path.readlines()
# Set WorkPath Config
set_workpath = config_list[ 1 ][ 10 : - 1 ]
# set CommandPath Config
set_commandpath = config_list[ 2 ][ 13 : - 1 ]
# set looptime Config
set_looptime = config_list[ 3 ][ 17 : - 1 ]
# set loopdata Config
set_loophour = config_list[ 4 ][ 14 : - 1 ]
# set loopday Config
set_loopday = config_list[ 5 ][ 14 : - 1 ]
# test(os.system("echo %s" % (set_loopday)))
return set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
class Cpuinfo_th(threading.Thread,Config_th):
def __init__ (self):
threading.Thread. __init__ (self)
def run(self):
# global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday = self.Config_m()
os.system( " %s/iostat -t -c 1 1 >> %s/cpu_info.txt " % (set_commandpath,set_workpath))
class Memoryinfo_th(threading.Thread,Config_th):
def __init__ (self):
threading.Thread. __init__ (self)
def run(self):
# global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday = self.Config_m()
os.system( " /usr/bin/vmstat -S K 1 1 >> %s/memory_info.txt " % (set_workpath))
class Deciveinfo_th(threading.Thread,Config_th):
def __init__ (self):
threading.Thread. __init__ (self)
def run(self):
# global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday = self.Config_m()
os.system( " %s/iostat -d 1 1 >> %s/decive_io_info.txt " % (set_commandpath,set_workpath))
class Totalinfo_th(threading.Thread,Config_th):
def __init__ (self):
threading.Thread. __init__ (self)
def run(self):
# global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday = self.Config_m()
os.system( " %s/sar -u 1 1 >> %s/total_info.txt " % (set_commandpath,set_workpath))
class Control(Config_th):
def console(self):
# application object
global set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday
cpuinfo_th = Cpuinfo_th()
memoryinfo_th = Memoryinfo_th()
deciveinfo_th = Deciveinfo_th()
totalinfo_th = Totalinfo_th()
set_workpath,set_commandpath,set_looptime,set_loophour,set_loopday = self.Config_m()
# loop control main()
for i in range(float(str(set_loopday))):
for i in range(float(str(set_loophour))):
time.sleep(float(str(set_looptime)))
print " Execute OK!,run cpuinfo,%d " % (i)
cpuinfo_th.run()
time.sleep( 0.001 )
print " Execute OK!,run memoryinfo,%d " % (i)
memoryinfo_th.run()
time.sleep( 0.001 )
print " Execute OK!,run deciveinfo,%d " % (i)
deciveinfo_th.run()
time.sleep( 0.001 )
print " Execute OK!,run totalinfo,%d " % (i)
totalinfo_th.run()
time.sleep( 0.001 )
print " Total Execute %d...... " % (i)
if __name__ == " __main__ " :
control = Control()
control.console()
参数配置:
[Config]
work_path=/home/data
command_path=/usr/local/bin
loop_time_second=10
loop_day_hour=224
loop_week_day=7
[
Cpu
]
%usr:CPU处在用户模式下的时间百分比。
%sys:CPU处在系统模式下的时间百分比。
%wio:CPU等待输入输出完成时间的百分比。
%idle:CPU空闲时间百分比。
在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,
%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,
此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表
明系统中最需要解决的资源是CPU.
[ Decive ]
bread/s: 每秒从硬盘读入系统缓冲区buffer的物理块数。
lread/s: 平均每秒从系统buffer读出的逻辑块数。
%rcache: 在buffer cache中进行逻辑读的百分比。
bwrit/s: 平均每秒从系统buffer向磁盘所写的物理块数。
lwrit/s: 平均每秒写到系统buffer逻辑块数。
%wcache: 在buffer cache中进行逻辑读的百分比。
pread/s: 平均每秒请求物理读的次数。
pwrit/s: 平均每秒请求物理写的次数。
在显示的内容中,最重要的是%cache和%wcache两列,它们的值体现着buffer的使用效
率,%rcache的值小于90或者%wcache的值低于65,应适当增加系统buffer的数量,buffer
数量由核心参数NBUF控制,使%rcache达到90左右,%wcache达到80左右。但buffer参数
值的多少影响I/O效率,增加buffer,应在较大内存的情况下,否则系统效率反而得不到
提高。
[ Memory ]
procs:
r--> ; 在运行队列中等待的进程数
b--> ; 在等待io的进程数
w--> ; 可以进入运行队列但被替换的进程
memoy
swap--> ; 现时可用的交换内存(k表示)
free--> ; 空闲的内存(k表示)
pages
re--》回收的页面
mf--》非严重错误的页面
pi--》进入页面数(k表示)
po--》出页面数(k表示)
fr--》空余的页面数(k表示)
de--》提前读入的页面中的未命中数
sr--》通过时钟算法扫描的页面
disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号
fault 显示每秒的中断数
in--》设备中断
sy--》系统中断
cy--》cpu交换
cpu 表示cpu的使用状态
cs--》用户进程使用的时间
sy--》系统进程使用的时间
id--》cpu空闲的时间
如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果pi,po 长期不等于0,表示内存不足。
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。
%usr:CPU处在用户模式下的时间百分比。
%sys:CPU处在系统模式下的时间百分比。
%wio:CPU等待输入输出完成时间的百分比。
%idle:CPU空闲时间百分比。
在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,
%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,
此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表
明系统中最需要解决的资源是CPU.
[ Decive ]
bread/s: 每秒从硬盘读入系统缓冲区buffer的物理块数。
lread/s: 平均每秒从系统buffer读出的逻辑块数。
%rcache: 在buffer cache中进行逻辑读的百分比。
bwrit/s: 平均每秒从系统buffer向磁盘所写的物理块数。
lwrit/s: 平均每秒写到系统buffer逻辑块数。
%wcache: 在buffer cache中进行逻辑读的百分比。
pread/s: 平均每秒请求物理读的次数。
pwrit/s: 平均每秒请求物理写的次数。
在显示的内容中,最重要的是%cache和%wcache两列,它们的值体现着buffer的使用效
率,%rcache的值小于90或者%wcache的值低于65,应适当增加系统buffer的数量,buffer
数量由核心参数NBUF控制,使%rcache达到90左右,%wcache达到80左右。但buffer参数
值的多少影响I/O效率,增加buffer,应在较大内存的情况下,否则系统效率反而得不到
提高。
[ Memory ]
procs:
r--> ; 在运行队列中等待的进程数
b--> ; 在等待io的进程数
w--> ; 可以进入运行队列但被替换的进程
memoy
swap--> ; 现时可用的交换内存(k表示)
free--> ; 空闲的内存(k表示)
pages
re--》回收的页面
mf--》非严重错误的页面
pi--》进入页面数(k表示)
po--》出页面数(k表示)
fr--》空余的页面数(k表示)
de--》提前读入的页面中的未命中数
sr--》通过时钟算法扫描的页面
disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号
fault 显示每秒的中断数
in--》设备中断
sy--》系统中断
cy--》cpu交换
cpu 表示cpu的使用状态
cs--》用户进程使用的时间
sy--》系统进程使用的时间
id--》cpu空闲的时间
如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果pi,po 长期不等于0,表示内存不足。
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。