Linux管理をはじめて数年、これまでPleskにお任せして避けてきた自力サーバー管理をはじめることになった。自宅サーバーもやってみたいし。
アクセスログを解析したい!というケースが多いのだが、UNIXコマンドを使ってcronバッチで処理するというのがお手軽だ。
例えば特定のURLに対するアクセスのリファラ(参照元)を、ドメインごとに分けたい!などというケースであれば
こんな感じのコマンドで実現可能。
このコマンドでやっていることは
・grep 対象となるファイル(index.php)に対する行だけをアクセスログから抽出する
・cut アクセスログの中から、参照元(リファラ)だけを抽出
・sort ソートする
・sed 最後のスラッシュまでを取得する
・uniq 重複した行を1行にまとめて、重複回数を表示する
・sort アクセスが多かったドメインから表示したいので降順にする
このような処理だ。
このコマンドでは
http://aaa.jp/dir/index.php
http://aaa.jp/dir/top.php
この2つのURLは同じものとして扱われるが、
http://aaa.jp/dir/index.php
http://aaa.jp/dir2/index.php
この2つのURLは別ものとして扱う。単純にドメインごとにしてしまうと、ブログからのアクセスなどがわけわからなくなるので、ディレクトリ単位で集計するイメージだ。
これによってどのサイトから、どのブログからどれくらいアクセスが発生しているかが分かる。
例えば特定のURLに対するアクセスのリファラ(参照元)を、ドメインごとに分けたい!などというケースであれば
grep index.php access_log | cut -d " " -f 11 | sort | sed 's/\\(.*\\)\\/[^/]*$/\\1\\//' | uniq -c | sort -r
こんな感じのコマンドで実現可能。
このコマンドでやっていることは
・grep 対象となるファイル(index.php)に対する行だけをアクセスログから抽出する
・cut アクセスログの中から、参照元(リファラ)だけを抽出
・sort ソートする
・sed 最後のスラッシュまでを取得する
・uniq 重複した行を1行にまとめて、重複回数を表示する
・sort アクセスが多かったドメインから表示したいので降順にする
このような処理だ。
このコマンドでは
http://aaa.jp/dir/index.php
http://aaa.jp/dir/top.php
この2つのURLは同じものとして扱われるが、
http://aaa.jp/dir/index.php
http://aaa.jp/dir2/index.php
この2つのURLは別ものとして扱う。単純にドメインごとにしてしまうと、ブログからのアクセスなどがわけわからなくなるので、ディレクトリ単位で集計するイメージだ。
これによってどのサイトから、どのブログからどれくらいアクセスが発生しているかが分かる。
この記事にコメントする