Amazon

2012年11月6日火曜日

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
$





0 件のコメント: