讨鬼传迅御魂:利用 vmstat+gnuplot+python脚本生成CPU和内存使用率图表
来源:百度文库 编辑:偶看新闻 时间:2024/04/30 02:23:33
最近接触了 gnuplot 这个不错的工具,虽然生成图表的功能可以通过 excel 容易的实现,但是在 linux 命令行下可以跟其他工具配合,轻松实现”自动化”。vmstat 可以不断的显示 linux 系统的 CPU/内存以及 io 的使用情况: vmstat 2 1000 表示每俩秒显示一次系统各种资源消耗情况,一共执行 1000 次。于是做了个比较简单丑陋的 python 脚本,格式化 vmstat 的输出数据并利用 gnuplot 生成图表—脚本中实际上是调用测试 web server 压力的工具 autobench 对 gnuplot 的一个再封装脚本 bench2png,生成完以后用 sz 命令下载到本地,然后删除服务器上的文件。gnuplot 的用法后面再整理下 。
#!/usr/bin/python# -*- coding: utf-8 -*-
# 处理规则: 目录下文件名包含 vmstat 的 .txt 或者 .log 后缀文件,
# 导入正则
import re
# 字符操作
import string
# 调用系统命令
import os
import sys
# 确认目录
path = r'./'
if path[-1:] != '/':
path = path + '/'
### 遍历当前目录下的文件
fileList = os.listdir(path)
for file in fileList:
# 文件名中没有 vmstat 则不处理
if file.find('vmstat') < 0:
continue;
# 只处理后缀 .txt 或者 .log 的文件
if file[-4:] != '.txt' and file[-4:] != '.log':
continue
# 如果对应的 tsv 文件不存在, 则生成
tsvFile = file[0:-4] + '.tsv'
if not os.path.exists(path + tsvFile):
fileHandle = open(path + file);
# 生成 tsv 文件
fileContent = ''
i = 0
header = ''
for line in fileHandle.readlines():
# 保证每行开始都一样:至少有一个空格
line = ' ' + line
# 如果该行存在 procs 则不处理
if line.find('procs') > -1:
continue
# 前 10 行出现 cache 字符表明是列说明,则保留
if line.find('cache') > -1 and i > 10:
continue
# 替换字符
line = re.sub(r"\n +", "\n", line) # 替换各种换行回车为 \n ,并去掉行尾空格
line = re.sub(r" +", "\t", line) # 替换连续空格为 tab
# 加一列数字
fileContent += str(i) + line
i = i + 1
# 写入 tsv 文件
tsvFileHandle = open(path + tsvFile, 'w')
tsvFileHandle.write(fileContent)
tsvFileHandle.close()
# 关闭原文件
fileHandle.close()
# 如果对应 png 文件没有生成,则生成
memPngFile = file[0:-4] + '.mem.png'
cpuPngFile = file[0:-4] + '.cpu.png'
if not os.path.exists(path + memPngFile):
os.system("bench2png " + path + tsvFile + " " + path+ memPngFile + " 4 5 6 7 <
os.system("sz " + path + file[0:-4] + "*")
os.system("rm " + path + file[0:-4] + "*")
sys.exit()
有一个值得改进的机制就是最好能够通过 python 脚本内部调用 vmstat 而不是去分析 vmstat 的输出结果,不过作为我第二个实用 python 脚本,感觉还是不错了 :) 下面是生成图效果:
One Response to “利用 vmstat+gnuplot+python脚本生成CPU和内存使用率图表”
.py文件是什么?
智凯py 6880驱动
PY-815EP
PY-815EP 是什么牌子主板?
51PY传家宝挂私服的问题
gnuplot 制作统计图 ,x轴为时间轴,为什么时间坐标都显示两次
vmstat 中的bi和bo分别对应磁盘读和写的情况吗?
┢┦aΡpy New Year` 是什么意思啊
┢┦aㄗpy可不可以是永久的?
请问PY基础培养基中盐溶液的成分
小弟跪求PRINCE PY-6800打印机驱动
智凯 RICH PY 6880+打印机驱动谁知道哪有??
怎样打 ?┢┦aΡpy ﹎.。?
和本地PY公用一个ADSL宽带帐号的问题!
又出现病毒 Trojan/psw.qqPass.py
南京浦园PY-380包装机操作说明
我的RICH PY-6880打印机为什么不好使了????
各位朋友,我用SUN V480 ,solaris 8,vmstat看到的虚拟内存不断减少,最终死机,怎们解决?急求答案
有谁知道linux中vmstat的cs值过高是什么原因?与cpu的cache大小有关系吗?先谢了!
py朋友想买个电脑,4千左右可以玩游戏,大家帮忙给配下,谢谢,
python的文件格式有两种,"*.py"和"*.pyw",它们有什么不同?
请问文件扩展名是:PY的,应该用什么程序打开它?
请问哪位py知道1线地铁附近哪里有卖德升收音机的
偶有一个PY野鬼现在练到62级了。。会不会有人要?