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 $