1.安装阿里开源监控工具tsar

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获取整月每一天的系统监控数据生成报表的更多相关文章

  1. 使用shell/python获取hostname/fqdn释疑

    一直以来被Linux的hostname和fqdn(Fully Qualified Domain Name)困惑了好久,今天专门抽时间把它们的使用细节弄清了. 一.设置hostname/fqdn 在Li ...

  2. python 获取日期

    转载   原文:python 获取日期 作者:m4774411wang python 获取日期我们需要用到time模块,比如time.strftime方法 time.strftime('%Y-%m-% ...

  3. python获取字母在字母表对应位置的几种方法及性能对比较

    python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...

  4. python获取文件大小

    python获取文件大小 # !/usr/bin/python3.4 # -*- coding: utf-8 -*- import os # 字节bytes转化kb\m\g def formatSiz ...

  5. python 获取一个列表有多少连续列表

    python 获取一个列表有多少连续列表 例如 有列表 [1,2,3] 那么连续列表就是 [1,2],[2,3],[1,2,3] 程序实现如下: 运行结果:

  6. [python实用代码片段]python获取当前时间的前一天,前一周,前一个月

    python获取当前时间的前一天,前一周,前一个月. 实用python的datetime.timedelta方法,避免了有的月份是30和31等不同的情况. 获取前一个月的时间,方法实现:首先datet ...

  7. Python获取目录、文件的注意事项

    Python获取指定路径下的子目录和文件有两种方法: os.listdir(dir)和os.walk(dir),前者列出dir目录下的所有直接子目录和文件的名称(均不包含完整路径),如 >> ...

  8. Python 获取 网卡 MAC 地址

    /*********************************************************************** * Python 获取 网卡 MAC 地址 * 说明: ...

  9. python 获取 mac 地址 的代码

    python 获取 mac 地址 的例子,有需要的朋友可以参考下. #!/bin/python import os import re def GetMac():     if os.name ==  ...

随机推荐

  1. iOS版微信开发小结(微信支付,APP跳转微信公众号)

    最近公司心血来潮,一心要搞微信.废话不多说,直接上干货. 开发前准备: 1.在微信开发者平台获取开发者认证:(一年300元人民币) PS:具体流程按照微信流程指示操作即可,在这就不废话了. 2.下载微 ...

  2. PHP蜘蛛爬虫开发文档

    <我用爬虫一天时间“偷了”知乎一百万用户,只为证明PHP是世界上最好的语言 >所使用的程序框架 编写PHP网络爬虫, 需要具备以下技能: 爬虫采用PHP编写 从网页中抽取数据需要用XPat ...

  3. 使用 window.getSelection() 方法获取鼠标划取部分的起始位置和结束位置的问题(高亮后不能正确获取)

    如果没有高亮等复杂处理,只需要获取一段文字中选取的字和位置,那么 使用window.getSelection()获取div中选中文字内容及位置 怎么获取textarea中选中文字 则可以满足需求: - ...

  4. [UOJ #51]【UR #4】元旦三侠的游戏

    题目大意:给$n$,一个游戏,给$a,b$,两个人,每人每次可以把$a$或$b$加一,要求$a^b\leqslant n$,无法操作人输.有$m$次询问,每次给你$a,b$,问先手可否必胜 题解:令$ ...

  5. [ZJOI2008]骑士 DP dfs

    ---题解--- 题解: 观察题面可以很快发现这是一棵基环内向树(然而并没有什么用...) 再稍微思考一下,假设将这个环中的任意一点设为root,然后去掉root到下面的特殊边(即构成环的那条边),那 ...

  6. 洛谷 P3084 [USACO13OPEN]照片Photo 解题报告

    [USACO13OPEN]照片Photo 题目描述 农夫约翰决定给站在一条线上的\(N(1 \le N \le 200,000)\)头奶牛制作一张全家福照片,\(N\)头奶牛编号\(1\)到\(N\) ...

  7. More on understanding sort_buffer_size

    There have been a few posts by Sheeri and Baron today on the MySQL sort_buffer_size variable. I want ...

  8. TOM的show_space

    show_space查看对像数据块的空闲情况 CREATE OR REPLACE PROCEDURE show_space(p_segname IN VARCHAR2, p_owner IN VARC ...

  9. APP本地服务安全测试

    一.安全测试基本分类: 1.系统安全 系统加固 安全加固:比如linux中关闭telnet端口,修改ssh端口 检测一些不必要的服务(需要卸载一个ping)--保证系统的最小集 app安全加固:加一层 ...

  10. dbcp基本配置和重连配置

    转载自:http://agapple.iteye.com/blog/772507 最近在看一些dbcp的相关内容,顺便做一下记录,免得自己给忘记了. 1. 引入dbcp (选择1.4) Java代码  ...