先日、メモリ使用率の調査に関して記事をかいたのですが、今度はそのログの収集や抽出をおこなってみようかと思います。
やりたいこと
yyyy/MM/dd-HH:mm:ss メモリ使用率(少数2桁まで) スワップ使用率(メモリ2桁まで)の形式で15分毎に吐かれているログがあるとします。
このログから、
- 前日の最高のメモリ使用率
- 前日の最低のメモリ使用率
- 分布 60%台が何割、70%台が何割・・
といったデータを取り出したいとします。
とりあえず今回は1,2に関して。
まずログの調査をする場合、大体
- ログ自体の取り込み、入力
- 抽出(特定の文字列を含む)
- 算出(最大、最小、平均など)
- 算出したものを出力
という流れになるかと思います。
まずログ自体の取り込み、入力はcatで行い、次に特定の日(前日)を含むはgrepで取り出します。最大値(最小値)ということはメモリ使用率でソート(or逆ソート)した1番目になりますのでsort+headで行けます。これらをパイプでつなげばよいので、
最小値
1 |
cat ファイル名 | grep `date --date '1 day ago' +%Y/%m/%d` | sort -nk2 | head -1 |
最大値
1 |
cat ファイル名 | grep `date --date '1 day ago' +%Y/%m/%d` | sort -rnk2 | head -1 |
で取り出せます。
参考リンク
[…] ログ抽出コマンド特集 その1 cat+grep+sort […]