使用python获取整月每一天的系统监控数据生成报表

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的报表

将他导出到我们本地

 

转载于:https://www.cnblogs.com/benjamin77/p/9939331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Python可以轻松地从Oracle数据库中读取数据生成报表。以下是一些常用的Python库和步骤: 1. 安装必要的Python库:cx_Oracle、pandas、openpyxl等。 2. 连接到Oracle数据库,可以使用cx_Oracle库连接到Oracle数据库。 3. 通过SQL查询从Oracle数据库中数据使用pandas库可以将查询结果转换为DataFrame对象。 4. 使用openpyxl等库将数据写入Excel文件中。 以下是一个示例代码,用于从Oracle数据库中数据并将其写入Excel文件中: ```python import cx_Oracle import pandas as pd from openpyxl import Workbook # 连接Oracle数据库 conn = cx_Oracle.connect('username/password@host:port/service_name') # SQL查询语句 sql = 'SELECT * FROM table_name' # 取查询结果并转换为DataFrame对象 df = pd.read_sql(sql, conn) # 创建Excel文件 wb = Workbook() # 选择第一个工作表 ws = wb.active # 将DataFrame对象写入Excel文件中 for r in dataframe_to_rows(df, index=False, header=True): ws.append(r) # 保存Excel文件 wb.save('report.xlsx') # 关闭数据库连接 conn.close() ``` 以上代码中,需要替换的部分包括: - `username`和`password`:Oracle数据库的用户名和密码 - `host`:Oracle数据库的主机名或IP地址 - `port`:Oracle数据库的端口号 - `service_name`:Oracle数据库的服务名称 - `table_name`:需要查询的表名 - `report.xlsx`:生成的Excel文件名 当然,如果你需要生成其他格式的报表,可以使用不同的Python库来实现。例如,使用matplotlib库可以生成图表,使用reportlab库可以生成PDF报表等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值