ksaitoの日記

日々試したことの覚え書き

sarデータをzabbix_sender用のデータに加工する

移転しました。

自動的にリダイレクトします。

Debian/Ubuntuでsysstatパッケージを使ってサーバの統計情報を記録できます。
設定一つでsadcコマンドで10分間隔の情報収集を一ヶ月分保持することができます。
これを手間なくzabbixに送って長期間モニタしたいと考え、zabbix_senderからzabbixに読み込めるようにデータを加工するシェルを作りました。

ソース

Debian/Ubuntuのsysstatパッケージは、/var/log/sysstat/sa*からデータを読み込みます。
引数の一つ目にsarのオプション、二つ目に何番目のデータを使うか、三つ目に日付(デフォルトは今日)を指定するとzabbix_senderで読み込ませることができる形式のテキストファイルが出力されます。

#! /bin/sh                                                                                                                                        
# Convert sar data to zabbix_sender data.                                                                                                         
#                                                                                                                                                 
# Command                                                                                                                                         
# zabsar.sh saroption sarfield [day:-today]                                                                                                       

SARDATA_DIR=/var/log/sysstat

DAY=${3:-`date +%d`}
SAROP=${1:-u}
SARFIELD=${2:-3}
HOST=`hostname`

DATESTR=`date +%Y/%m/${DAY}`

LANG=c; sar -${SAROP} -f ${SARDATA_DIR}/sa${DAY} | grep \^[0-9] | tail -n +1 | \
awk -v DATESTR=${DATESTR} -v HOST=${HOST} -v SAROP=${SAROP} -v SARFIELD=${SARFIELD} 'NR == 1 {                                                    
  KEY=$SARFIELD                                                                                                                                   
}                                                                                                                                                 
NR > 1 {                                                                                                                                          
  datecmd=sprintf("date +\"%%s\" --date \"%s %s\"", DATESTR, $1)                                                                                  
  datecmd | getline time_stamp                                                                                                                    
  close(datecmd)                                                                                                                                  
  print HOST, "sar["SAROP","KEY"]", time_stamp, $3                                                                                                
}'

実行結果

sarコマンドの-rオプションで空きメモリ(kbmemfree)をzabbix_sender用のテキストファイルにしてみました。

$ hostname
ubuntu
$ ./zabsar.sh r 2 | head -2
ubuntu sar[r,kbmemfree] 1353113101 238092
ubuntu sar[r,kbmemfree] 1353113701 239504
$