使用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的報表

將他導出到我們本地

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM