linux中利用rrdtool爲vmstat輸出繪圖

下面我來爲各位介紹一個linux中利用rrdtool爲vmstat輸出繪圖的例子,希望此例子可以幫助到各位朋友.

1、查看vmstat的輸出

[root@361way ~]# vmstat 1 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 1479452 420588 5600548 0 0 0 3 0 5 0 0 100 0 0
0 0 0 1479444 420588 5600548 0 0 0 0 40 37 0 0 100 0 0


2、爲vmstat的輸出結果建表

rrdtool create vmstat.rrd --step 1 \
DS:r:GAUGE:5:U:U \
DS:b:GAUGE:5:U:U \
DS:swpd:GAUGE:5:U:U \
DS:free:GAUGE:5:U:U \
DS:buff:GAUGE:5:U:U \
DS:cache:GAUGE:5:U:U \
DS:si:GAUGE:5:U:U \
DS:so:GAUGE:5:U:U \
DS:bi:GAUGE:5:U:U \
DS:bo:GAUGE:5:U:U \
DS:in:GAUGE:5:U:U \
DS:cs:GAUGE:5:U:U \
DS:us:GAUGE:5:U:U \
DS:sy:GAUGE:5:U:U \
DS:id:GAUGE:5:U:U \
DS:wa:GAUGE:5:U:U \
DS:st:GAUGE:5:U:U \
RRA:AVERAGE:0.5:1:100000

DS:r:GAUGE:5:U:U 中的5表示兩次更新最大心跳時間秒數。第一個U表示最小值,第二個U表示最大值,使用U(ulimit)表示值不限制。

3、將vmstat的輸出各項值都存入vmstat.rrd文件中

vmstat 1 600 | awk -v time=`date +%s` '/^.[0-9]/{ n++; print "rrdtool update vmstat.rrd "time+n":" $1 ":" $2 ":" $3 ":" $4 ":" $5 ":" $6 ":" $7 ":" $8 ":" $9 ":" $10 ":" $11 ":" $12 ":" $13 ":" $14 ":" $15 ":" $16 ":" $17 }' >vmstat.output
bash <./vmstat.output
收集最近10分鍾的數據並將其導到的vmstat.rrd 庫文件中。

4、利用rrdtool graph彙圖

rrdtool自帶有彙圖參數,可以利用rrdtool graph爲剛剛輸入的數據繪圖

#圖1
rrdtool graph physical_consumed.gif \
--title "Physical CPU Consumed" \
--vertical-label "CPUs" \
--height 300 \
--start 1422606034 \
--end 1422606333 \
DEF:st=vmstat.rrd:st:AVERAGE LINE2:st#00FF00:"Physical Consumed"
#圖2
rrdtool graph cpu_util.gif \
--rigid --lower-limit 0 --upper-limit 100 \
--title "CPU Util" \
--vertical-label "Percent Stacked" \
--start 1422606034 \
--end 1422606333 \
--height 300 \
DEF:us=vmstat.rrd:us:AVERAGE AREA:us#00FF00:"User" \
DEF:sy=vmstat.rrd:sy:AVERAGE STACK:sy#0000FF:"System" \
DEF:wa=vmstat.rrd:wa:AVERAGE STACK:wa#FF0000:"Wait" \
DEF:id=vmstat.rrd:id:AVERAGE STACK:id#FFFFFF:"Idle"
注:

1、上需的start和end時間,可以從vmstat.output文件中的第四列的值中獲取;

2、lower-limit和upper-limit爲cpu_util 圖表的縱坐標指定了上下限。

生成的效果圖如下:

linux中利用rrdtool爲vmstat輸出繪圖
linux中利用rrdtool爲vmstat輸出繪圖

5、完整的腳本如下

#!/bin/bash
rrdtool create vmstat.rrd --step 1 \
DS:r:GAUGE:5:U:U \
DS:b:GAUGE:5:U:U \
DS:swpd:GAUGE:5:U:U \
DS:free:GAUGE:5:U:U \
DS:buff:GAUGE:5:U:U \
DS:cache:GAUGE:5:U:U \
DS:si:GAUGE:5:U:U \
DS:so:GAUGE:5:U:U \
DS:bi:GAUGE:5:U:U \
DS:bo:GAUGE:5:U:U \
DS:in:GAUGE:5:U:U \
DS:cs:GAUGE:5:U:U \
DS:us:GAUGE:5:U:U \
DS:sy:GAUGE:5:U:U \
DS:id:GAUGE:5:U:U \
DS:wa:GAUGE:5:U:U \
DS:st:GAUGE:5:U:U \
RRA:AVERAGE:0.5:1:100000
$TIME=`date +%s`
vmstat 1 600 | awk -v time=$TIME '/^.[0-9]/{ n++; print "rrdtool update vmstat.rrd "time+n":" $1 ":" $2 ":" $3 ":" $4 ":" $5 ":" $6 ":" $7 ":" $8 ":" $9 ":" $10 ":" $11 ":" $12 ":" $13 ":" $14 ":" $15 ":" $16 ":" $17 }' >vmstat.output
$ENDTIME=`date +%s`
bash <./vmstat.output
rrdtool graph physical_consumed.gif \
--title "Physical CPU Consumed" \
--vertical-label "CPUs" \
--height 300 \
--start $TIME \
--end $ENDTIME \
DEF:st=vmstat.rrd:st:AVERAGE LINE2:st#00FF00:"Physical Consumed"
rrdtool graph cpu_util.gif \
--rigid --lower-limit 0 --upper-limit 100 \
--title "CPU Util" \
--vertical-label "Percent Stacked" \
--start $TIME \
--end $ENDTIME \
--height 300 \
DEF:us=vmstat.rrd:us:AVERAGE AREA:us#00FF00:"User" \
DEF:sy=vmstat.rrd:sy:AVERAGE STACK:sy#0000FF:"System" \
DEF:wa=vmstat.rrd:wa:AVERAGE STACK:wa#FF0000:"Wait" \
DEF:id=vmstat.rrd:id:AVERAGE STACK:id#FFFFFF:"Idle"

更多相關文章
  • linux中利用python腳本可以快速實現備份mysql.redis.mongodb數據庫或者media目錄哦,下面我們把代碼名字寫成bakdata吧,下面一起來看看幾個實用的例子吧.安裝可以直接用pip執行: 代碼如下 pip install yunbk github地址如下:https://g
  • exec函數在windows環境下是沒有任何問題的,但在linux中返回值不能爲負數.string exec ( string $command [, array &$output [, int &$return_var ]] )第三個參數, 怎麽不能接收負數?? 這裏的&$ ...
  • 下面來看一篇Linux中利用openssl生成SSL證書給nginx使用的教程,希望此教程能幫助到各位朋友.這裏說下Linux 系統怎麽通過openssl命令生成 證書. 首先執行如下命令生成一個4096位的key 代碼如下 openssl genrsa -des3 -out hupohost.ke ...
  • 下面來給大家介紹一篇linux中利用ControlPersist提升SSH的連接速度,有需要了解的朋友可參考一下.背景介紹:目前,專案中伺服器的配置管理已經全部從Puppet遷移到了Ansible,而之前一直認爲不會帶來困擾的SSH通道慢的問題則暴露的很明顯了.因爲很多時候需要同時更新幾百台伺服器, ...
  • 下面我們一起來看看關于linux中利用shell腳本查看占用swap的進程,希望此文章對各位同學會帶來幫助.查看進程在占用swap分區的腳本命令腳本如下: 代碼如下 for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ; ...
  • 本文章來給各位同學介紹關于linux中利用Systemtap注入延遲模擬IO設備抖動,SystemTap是監控和跟蹤運行中的Linux內核的操作的動態方法.這句話的關鍵詞是動態,因爲SystemTap沒有使用工具構建一個特殊的內核希望此教程對各位同學會有所幫助.當我們的IO密集型的應用懷疑設備的IO
  • 雲主機Linux中環境搭建及WDCP安裝圖解
    下面給大家介紹一篇關于雲主機Linux中環境搭建及WDCP安裝圖解,希望此文章對使用阿裏雲主機的同學會有幫助哦.一.分區挂載,下面的操作將會把數據盤劃分爲一個分區來使用. 代碼如下 1.查看數據盤在沒有分區和格式化數據盤之前,使用 “df –h”命令,是無法看到數據盤的,可以使用“fdisk -l” ...
  • jsp中利用jfreechart實現統計效果圖
    本文章詳細的介紹了關于jsp中利用jfreechart實現統計效果圖,有需要的同學可以參考一下下哦.1 preparation1.1 sample introductionJFreeChart是JAVA平台上的一個開放的圖表繪制類庫.I完全使用JAVA語言編寫,是爲applications, app ...
一周排行