Edited at

負荷発生・事後調査のときに便利なワンライナー

今すぐalias登録すべきワンライナー by ゆめみ① Advent Calendar 2018 9日目の記事です。

前回は@szfさんのとにかく多用するワンライナーもといaliasesでした。


本日は、負荷発生時や事後調査時に便利に使えるワンライナーをご紹介していきます!

Ubuntu, Apacheを想定していますが、チョチョッと変えていただければ他の環境でも利用できるかと思います。


容量多いディレクトリ上位を調べる

du -m / | sort -rn | head -100

ディスク容量が足りなくなった際に重宝します。

(さすがにこの時代にそんな障害起きひんやろwと思いきや、たまに起きてしまうやつです・・・)

処理が終わるまで時間がかかるので、大体の目星がついている際はそのディレクトリ以下のみにするなど工夫してください。


容量多いファイル上位を調べる

du -ma / | sort -rn | head -100

こちらもディスク容量が足りなくなった際に重宝します。

ディレクトリ上位を調べたあとに、まだどの部分化特定できないようなら使うといいと思います。


30日以上経過しているファイル削除を調べる

find /fuga/cache -type f -mtime +30 -exec rm -rf {} \;

取り急ぎログファイルやキャッシュファイル等の古いファイルを手動で消したいときに重宝します。

(ログファイル等は、このワンライナーで手動削除するのではなく、きちんとrotateしたほうがいいです)


日別のログ行数出力を調べる

for file in `find -type f -name "access_log.2018112*.gz" | sort`; do echo $file `zcat $file | wc -l`; done

# access_log.201811201.gz 20000
# access_log.201811202.gz 24000
# access_log.201811203.gz 19000
# access_log.201811204.gz 12000
# access_log.201811205.gz 45000
# ...

負荷発生日時の前後のアクセス数、エラー数等をサクッと知りたいときに使えます。

ls -lでファイルサイズを見てもおおよその検討はつきますが、より具体的に調べていく過程で使うと便利です。


時毎のアクセス数を調べる

cut -d'[' -f2 /var/log/apache2/access_log.`date +%Y%m%d` | cut -d' ' -f1 | cut -d':' -f2 | sort | uniq -c

事後調査をする際、障害発生時刻の前後で比較したいときに便利です。


分毎のアクセス数を調べる

cut -d'[' -f2 /var/log/apache2/access_log.`date +%Y%m%d` | cut -d' ' -f1 | cut -d':' -f2,3 | sort | uniq -c | grep 12:

事後調査をする際、より具体的な発生時刻を特定するのに便利です。


秒毎のアクセス数を調べる

cut -d'[' -f2 /var/log/apache2/access_log.`date +%Y%m%d` | cut -d' ' -f1 | cut -d':' -f2,3,4 |  sort | uniq -c | grep 12:00:

# 2 12:00:00
# 10 12:00:01
# 22 12:00:02
# 27 12:00:03
# 10 12:00:04
# ...

事後調査をする際、分間のアクセス調査後にさらにブレークダウンして調べたいときに便利です。

負荷テスト(古いシステムから新しいシステムへ移行するような場合)に、最大秒間どれくらいさばければいいのかの指標を探すのにも使えます。


リクエスト別のアクセス数を調べる

cat /var/log/apache2/access_log.`date +%Y%m%d` | awk -F '"' '{print $2}' | awk '{print $2}' | sort | uniq -c | sort -n -r | head -n 5

# 13600 /api/entries/
# 10210 /api/images/
# 9000 /api/users/
# 6900 /api/categories/
# 5600 /api/likes/

どこへのリクエストが多いのか調べるときに便利です。


いかがだったでしょうか。

簡単なものばかりですが、これらを組み合わせて調査していくことである程度問題を特定できたりしますので、ぜひ使ってみてください。