Linuxのsarファイルをグラフ化するツールを導入してみた
経緯
「sar」というServerのパフォーマンスを記録してくれる
プログラムがあります
inuxサーバのCPUやメモリ、DISK IOなど記録してくれて
何かあった時に調べる材料としていれています
細かい事は以下のサイトを参照
http://naoberry.com/tech/sar/
vmstatとほぼ同じなのですが
vmstatと違うのは過去データが見れる事です
過去が見れる事で比較し、調査がし易いのです
困った事
ただ問題は、sarが保存しているデータはバイナリー形式になっており
人間がみてもわからないのです
そこでテキスト化をおこなう事で見れるようになります
sar -f <ログファイル名>
テキストになって見ることは可能なのですが
データがズラズラ並んでいるだけで
わかりずらいです
対応
Linuxのsarファイルをグラフ化するツールを導入しました
ローカルPCにグラフ化のツールをインストール
ksarをダウンロード
http://osdn.jp/projects/sfnet_ksar/releases/
ダウンロードして展開するだけです
バイナリーデータをテキスト化(Ksarが読めるように)
デフォルトでは /var/log/sa/YYYYMM/saDD にあるバイナリ形式のsarファイルから
ksarで読み込めるテキスト形式に変換する
出力先は「/var/sar/」とする
(ログは1ヶ月単位でまとめます)
#!/bin/sh #昨日の日付を設定する CURRENTDATEYYYYMM=`date --date '1 day ago' +%Y%m` CURRENTDATEDD=`date --date '1 day ago' +%d` HOSTNAME=`hostname` #echo $CURRENTDATEYYYYMM #echo $CURRENTDATEDD env LANG=C sar -f /var/log/sa/$CURRENTDATEYYYYMM/sa$CURRENTDATEDD -s 00:00:00 -e 23:59:00 -A >> /var/sar/$HOSTNAME-$CURRENTDATEYYYYMM.sar.txt
このシェルをcronに設定することで
毎日のログができます
このシェルが動かなかった時の復旧用のシェルも用意しました
(私が悪いのです・・・)
復旧作業できがついたのですが
約30日以上が経過すると「bz2」形式で圧縮されるようです
bunzip2コマンドで解凍できます
#!/bin/sh #月単位で実行する場合は先月の1日と先月の最後の日を設定 #STARTDATE=`date -d "1 month ago" "+%Y-%m-01"` #echo $STARTDATE #ENDDATE=`date -d "1 second ago" "+%Y-%m-01"` #ENDDATE=`date -d "$ENDDATE -1day" "+%Y-%m-%d"` #echo $ENDDATE #トラブルがあって復旧する場合、日付指定する STARTDATE="2016-12-01" ENDDATE="2017-01-30" CURRENTDATE=$STARTDATE CURRENTDATE2=`date -d "$CURRENTDATE 1day" "+%Y%m%d"` CURRENTDATE2=`date -d "$CURRENTDATE2 -1day" "+%Y%m%d"` CURRENTDATE3=`date -d "$CURRENTDATE 1day" "+%Y%m%d"` CURRENTDATEYYYYMM=`date -d "$CURRENTDATE3 -1day" "+%Y%m"` CURRENTDATEDD=`date -d "$CURRENTDATE3 -1day" "+%d"` HOSTNAME=`hostname` echo $HOSTNAME while [ 1 ] ; do # 処理 #echo $CURRENTDATE #echo $CURRENTDATEYYYYMM #echo $CURRENTDATEDD #echo /var/log/sa/$CURRENTDATEYYYYMM/sa$CURRENTDATEDD if [ ! -e /var/log/sa/$CURRENTDATEYYYYMM/sa$CURRENTDATEDD ]; then echo "/var/log/sa/$CURRENTDATEYYYYMM/sa$CURRENTDATEDD is nothing" #ない場合は圧縮されている cp /var/log/sa/$CURRENTDATEYYYYMM/sa$CURRENTDATEDD.bz2 /tmp/$CURRENTDATE.bz2 bunzip2 /tmp/$CURRENTDATE.bz2 env LANG=C sar -f /tmp/$CURRENTDATE -s 00:00:00 -e 23:59:00 -A >> /var/backup/sar/$HOSTNAME-$CURRENTDATEYYYYMM.sar.txt rm -f /tmp/$CURRENTDATE else echo "/var/log/sa/$CURRENTDATEYYYYMM/sa$CURRENTDATEDD is Presence" env LANG=C sar -f /var/log/sa/$CURRENTDATEYYYYMM/sa$CURRENTDATEDD -s 00:00:00 -e 23:59:00 -A >> /var/backup/sar/$HOSTNAME-$CURRENTDATEYYYYMM.sar.txt fi if [ $CURRENTDATE = $ENDDATE ] ; then break fi CURRENTDATE2=`date -d "$CURRENTDATE 1day" "+%Y%m%d"` CURRENTDATEYYYYMM=`date -d "$CURRENTDATE 1day" "+%Y%m"` CURRENTDATEDD=`date -d "$CURRENTDATE 1day" "+%d"` CURRENTDATE=`date -d "$CURRENTDATE 1day" "+%Y-%m-%d"` done
2017/01/31
圧縮されている場合に解凍して収集するように修正しました
やっぱりグラフにした方が分かりやすいですね
特に上司に説明しやすい
2017/02/01
グラフに一部バグがある事に気がついた
CPUの数値が常に27.5になる・・・
\(^o^)/オワタ
バージョンを下げたら表示された
危ねえーーーー死ぬ所だった