Chapter 4. The Unix Philosophy of Distributed Data / Simple Log Analysis with Unix Tools †
要約 †
- unix ツールのことはご存知だと思うけど、知らない人のために例を説明する
- リクエストをすべて記録する http サーバーがあるとしよう
- ログを解析してWebサイトのトラフィックを分析するツールはいろいろある
- ここでは、練習も兼ねてアクセスの多い順に5番目までを抽出するツールを自作してみよう。awk で。
- awk は nginx のアクセスログの書式を知らない
- 1行読み込んで空白で分割するだけ(Figure 4-1)
- というわけでこんなスクリプトを書くといいだろう
- #1 空白で分割して7つ目を取り出す
- #2 同じURLが並ぶようにする
- #3 同じURLの登場数を数える
- #4 登場数の降順で並び替える
- #5 先頭の5つを取り出す
awk '{print $7}' access.log | #1
sort | #2
uniq -c | #3
sort -rn | #4
head -n 5 #5
4189 /favicon.ico
3631 /2013/05/24/improving-security-of-ssh-private-keys.html
2124 /2012/12/05/schema-evolution-in-avro-protocol-buffers-thrift.html
1369 /
915 /css/typography.css
- 慣れていないと、コマンドの羅列に目がくらむかもしれないけど、これが unix ツールの強みなので頑張ろう
- このスクリプトは GB オーダーのログファイルを数秒で処理できる
- カスタマイズも簡単
- クライアントのIPアドレスが欲しければ awk '{print $1}' とすればよい
- awk sed grep sort uniq xargs を使いこなせばたいていの分析はすぐに終わる
- 一番有名なのは 1978 年に Doug McIlroy?, Elliot Pin‐ son, Berk Tague が表した次のもの
- これらの哲学は、プログラムをパイプで連結して複雑な処理を実現するための基礎となる
- 重要なこと
- プログラムは入力元のことを知らない
- プログラムは出力先のことを知らない
担当者のつぶやき †
みんなの突っ込み †