前幾天領導給了一台服務讓我每天監控以下服務器得流量情況,開始幾天每天上去用ifstat命令截圖。后來了解到dstat命令
dstat着個命令用法靈活,功能強大,先來簡單得介紹一下
dstat介紹
- dstat結合了vmstat,iostat,ifstat,netstat以及更多監控工具的信息,跟ifstat一樣,實時顯示監控狀態
- 基於python編寫,方便擴展各種定制功能
- 分組統計設備信息
- 可以定制時間和輸出間隔,比如
dstat -nf 2 5
表示輸出網絡設備 2秒一次 一共輸出5次 - 輸出信息單位按最大整數計算,用顏色顯示不同單位
- 可以輸出csv文件。
dstat --output /tmp/filename.csv 2 5
這條命令是將dstat輸出到/tmp/文件名.csv這個文件中 2秒一次 出書5次
這里要注意一下:dstat時間控制參數一定要在文件輸出后面,我就是因為這個地方改了好多次,先把時間參數加到前面了,導致輸出文件不成功
dstat安裝
yum -y install dstat
dstat參數介紹
dstat命令什么參數也不加的話默認輸出:
從左往右依次顯示的是:cpu狀態,磁盤讀寫狀態,網絡狀態統計,分頁狀態統計,系統狀態統計
man dstat
可以查看dstat的參數詳情
- -c:顯示cpu當前狀態
- -C:加cpu號分別顯示cpu
- -l:顯示負載統計量
- -m:顯示內存狀態包括used,buffer,cache,free
- -n:顯示網卡總狀態
- -nf:分頁顯示網卡裝填
- -r:顯示i/o統計
- -s:顯示交換分區的狀態
- -t:顯示時間
- -fs:顯示文件系統統計數據,包括文件總數和innodes值
- -nocolor:輸出不現實顏色
- -socket:統計網絡數據
- -tcp:顯示tcp統計
- -udp:顯示udp統計
還有很多功能沒有列出來,有需要的看man dstat
詳情
貼出我今天寫的一個用來監控每天固定時間的網絡狀態並生成csv文件發送到我自己的郵箱的小腳本:
#!/bin/bash
tname=`date +%Y-%-m-%-d`
echo ${tname}
dstat -tnf --output /tmp/eths_${tname}.csv 1 40 #顯示時間的分頁網卡狀態,因為我的服務器有5塊網卡,自動生成一個eths_(每天日期).csv的文件
echo "今天的備份" | mail -a /tmp/eths_${tname}.csv -s "今天的備份文件" xxxx@qq.com #發送文件到我得郵箱
最后把這個腳本寫進周期計划任務就行了,每天十點發送郵件給我:
crontab -e
0 10 * * * /usr/src/腳本名字.sh >/dev/null 2>&1
就醬!