使用python获取整月每一天的系统监控数据生成报表
1.安装阿里开源监控工具tsar
- wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip --no-check-certificate
- unzip tsar.zip
- cd tsar
- make && make install
安装后,您可能会看到以下文件:
/etc/tsar/tsar.conf
,这是tsar的主要配置文件;/etc/cron.d/tsar
,用来运行tsar每分钟收集信息;/etc/logrotate.d/tsar
将每月轮换tsar的日志文件;/usr/local/tsar/modules
是所有模块库(* .so)所在的目录;
用法
运行tsar -l
以查看实时监控是否有效,例如,每秒显示状态(-i 1)
- null:查看默认mods历史数据,
tsar
- --modname:指定要显示的模块,
tsar --cpu
- -L / - list:列出可用的moudule,
tsar -L
- -l / - live:显示实时信息,
tsar -l --cpu
- -i / - interval:设置报告的间隔,
tsar -i 1 --cpu
- -s / - spec:指定模块详细信息字段,
tsar --cpu -s sys,util
- -D / - detail:不要将数据转换为K / M / G,
tsar --mem -D
- -m / - merge:将multiply项合并为一,
tsar --io -m
- -I / - item:显示规格项数据,
tsar --io -I sda
- -d / - date:指定数据,YYYYMMDD或n表示n天前
- -C / - 检查:显示最后的收集数据
- -h / - help:显示帮助,
tsar -h
2.写python脚本
python 2.7.5 的环境
- #!/bin/python
- # encoding=utf-8
- # Author By:BenjaminYang
- import calendar
- import time
- import os
- date=str(input('请输入你要查询的年月:\n(格式如:201811)\n----------------\n'))
- print('###############################################################################################')
- year=int(date[0:4]) #数据切片取得年
- month=int(date[4:6]) #数据切片取得月
- total_days=calendar.monthrange(year,month)[1] #根据年月组合获取该月共有多少天
- start_time=time.time()
- def report_check():
- i=0
- #定义开始时间
- #遍历每一天的tsar监控数据
- while i<total_days:
- if i<9:
- i=i+1
- date=str(year)+str(month)+str(0)+str(i)
- else:
- i=i+1
- date=str(year)+str(month)+str(i)
- os.environ['date']=date
- #将获取到的数据写入文件
- cpu=os.popen("tsar -d $date|grep MEAN|awk '{print $2}'").read()
- mem=os.popen("tsar -d $date|grep MEAN|awk '{print $3}'").read()
- tcp=os.popen("tsar -d $date|grep MEAN|awk '{print $4}'").read()
- bytein=os.popen("tsar -d $date|grep MEAN|awk '{print $5}'").read()
- byteout=os.popen("tsar -d $date|grep MEAN|awk '{print $6}'").read()
- sda=os.popen("tsar -d $date|grep MEAN|awk '{print $7}'").read()
- sdb=os.popen("tsar -d $date|grep MEAN|awk '{print $8}'").read()
- load=os.popen("tsar -d $date|grep MEAN|awk '{print $9}'").read()
- print date
- print os.popen("tsar -d $date|grep MEAN").read()
- with open("data.csv","a+") as f:
- if cpu.strip()=='':
- f.write(str(date)+','+'have null data'+'\n')
- else:
- f.write(str(date+','+cpu+','+mem+','+tcp+','+bytein+','+byteout+','+sda+','+sdb+','+load).replace("\n","")+"\n")
- os.system('>data.csv')
- ag=['adsag','dockerag','ecsag','odpsag','opsag','ossag','rdsag','slbag']
- with open("data.csv","a+") as f:
- f.write(str('check_date'+','+'cpu'+','+'mem'+','+'tcp'+','+'bytein'+','+'byteout'+','+'sda'+','+'sdb'+','+'load').replace("\n","")+"\n")
- report_check()
- end_time=time.time()
- total_time=end_time-start_time
- print "此次生成报表总共耗时:",total_time
3.执行效果
会生成一个data.csv的报表
将他导出到我们本地
使用python获取整月每一天的系统监控数据生成报表的更多相关文章
- 使用shell/python获取hostname/fqdn释疑
一直以来被Linux的hostname和fqdn(Fully Qualified Domain Name)困惑了好久,今天专门抽时间把它们的使用细节弄清了. 一.设置hostname/fqdn 在Li ...
- python 获取日期
转载 原文:python 获取日期 作者:m4774411wang python 获取日期我们需要用到time模块,比如time.strftime方法 time.strftime('%Y-%m-% ...
- python获取字母在字母表对应位置的几种方法及性能对比较
python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...
- python获取文件大小
python获取文件大小 # !/usr/bin/python3.4 # -*- coding: utf-8 -*- import os # 字节bytes转化kb\m\g def formatSiz ...
- python 获取一个列表有多少连续列表
python 获取一个列表有多少连续列表 例如 有列表 [1,2,3] 那么连续列表就是 [1,2],[2,3],[1,2,3] 程序实现如下: 运行结果:
- [python实用代码片段]python获取当前时间的前一天,前一周,前一个月
python获取当前时间的前一天,前一周,前一个月. 实用python的datetime.timedelta方法,避免了有的月份是30和31等不同的情况. 获取前一个月的时间,方法实现:首先datet ...
- Python获取目录、文件的注意事项
Python获取指定路径下的子目录和文件有两种方法: os.listdir(dir)和os.walk(dir),前者列出dir目录下的所有直接子目录和文件的名称(均不包含完整路径),如 >> ...
- Python 获取 网卡 MAC 地址
/*********************************************************************** * Python 获取 网卡 MAC 地址 * 说明: ...
- python 获取 mac 地址 的代码
python 获取 mac 地址 的例子,有需要的朋友可以参考下. #!/bin/python import os import re def GetMac(): if os.name == ...
随机推荐
- java文件的I/O
[原创] java文件的I/O操作,简单来说就是向文件中写入数据以及从文件中读出数据,这是我们平日做的最多的操作,这里给出两种文件I/O操作,当然还有许多的操作方法,各种流的使用,可谓是高深莫测:不管 ...
- iOS-tableViewCell创建时添加一些动画
有时候因为项目的需要,给tableView添加一些动画: cell.layer.transform = CATransform3DMakeScale(); [UIView animateWithDur ...
- HDU B-Ignatius and the Princess IV
http://acm.hdu.edu.cn/showproblem.php?pid=1029 Problem Description "OK, you are not too bad, em ...
- DataGridView加载gif图片
当我们想加载图片时,一般情况下都会使用picturebox控件,这个控件可以加载各种格式的图片,当然也包括gif图片.但是有时,我们也希望一些数据展示控件也可以加载图片,比如说DataGridView ...
- 数组中键key相等时,后面的值覆盖前面的值
<?php $arr[]='abc'; $arr[]='; $arr[]='; $arr[]='; var_dump($arr); 结果;
- JQuery插件supersized.js实现背景图片淡入浅出
淡入浅出的网站背景图片切换,其实是引用了JQuery插件supersized,效果很炫吧.其实这个插件功能很强大,可以做很多图片类的效果.这些需要等待我们自己去探索. 下面是这个效果的代码只有一行: ...
- Topcoder SRM579 1000pts
石头剪刀布QAQ 一看是个很油的概率dp 首先一看你很快能得出状态的表示F[i][r][p][s] 然后只要考虑r,p,s出现的次数来进行概率dp就好了 具体实现的时候细节很多(少) 如果预处理一下组 ...
- sqlplus 几个命令:
sqlplus 几个命令: 在sys,system,sysman,scott四个用户权限中,scott用户最低. 其权限依次从高到低. cmd进入sqlplus sqlplus 登录命令: 登录sys ...
- socket编程 ------ BSD socket API
伯克利套接字(Berkeley sockets),也称为BSD Socket.伯克利套接字的应用编程接口(API)是采用C语言的进程间通信的库,经常用在计算机网络间的通信. BSD Socket的应用 ...
- HTML5 视频直播
目前视频直播,尤其是移动端的视频直播已经火到不行了,基本上各大互联网公司都有了自己的直播产品,所以对于直播的一些基本知识和主要技术点也要有所了解,本次分享就向大家介绍一下其中的奥秘. 内容大体框架: ...