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的報表
將他導出到我們本地