ApacheLogPatch

Apache の ログ を、リアルタイムに QuartzComposer で表示するものをつくりました。 tail -f /var/log/httpd/access.log の代わりにつかう、みたいな。

Download

httpd2qc package (Universal Binary, tested on Tiger)

Screencast

プライバシーをまもるために、リモートホストのIPアドレスは “xxx.xxx.xxx.xxx” にしています。実際にはばっちり表示されます。

Quick Start

  • ApacheLogPatch.plugin を、/Library/Graphics/Patches にコピー
  • Apacheの設定ファイル (httpd.conf とか) に、filter.rb へ カスタムログ を パイプするような設定を加える
    例:
      LogFormat "%h \"%{Referer}i\" %U" httpd2qc
      CustomLog "|/opt/local/httpd2qc/filter.rb" httpd2qc
  • ApacheLogDisplay.qtz を 開く
  • Apache を restart
  • 眺める

Detail

overview.png

  1. ApacheのカスタムログをパイプでRubyスクリプトに流しこむ
  2. Rubyスクリプト (filter.rb) は、文字列のURI デコードなどをして、QuartzComposerのカスタムパッチ用にデータをつくる (ここでもうちょっと賢いことができそう)
  3. QuartzComposerのカスタムパッチ (ApacheLogPatch) は、流れてきたデータをQCStructureのスロット (とりあえず3つ) に詰め込む

ApacheLogPatch は、QCStructureのオブジェクトを出力します。実際には、[リクエストパス、リモートホストのアドレス、リファラー、検索キーワード] の要素をもつQCStructure の配列になっています。

より詳しくはソースを。

ToDo

  • 背景に世界地図を描いておいて、ログが来たときにIPアドレスから地理情報を取得して、それらしき場所を点滅させる (IP2Location とかをつかえばよさそう)
  • もうちょっとカスタマイザブルに
  • もうちょっとかっこよく

きっかけ

Google本社では、検索キーワードがリアルタイムに画面を流れているのが見れるとか聞きました。僕が行ったときには、そんなディスプレイは見当たらなかったのだけれど。

せっかく自宅サーバをMacで動かしているのだし、なにか面白いことはできないもんかなー、と風呂でぼんやり考えていて、最近遊んでいる QuartzComposer の CustomPatch と組み合わせてみたら? と。

blog comments powered by Disqus