QlikViewやQlikSenseを使ってIISログファイルを分析する-その1 基本データの取り込み

QlikView(クリックビュー)

WEBサイトを運用していると必要となってくるのはアクセス解析
アクセス解析といえば、Google Analytics(http://www.google.com/intl/ja_jp/analytics/)
無料で使えるし、解析内容もバツグン!

ブログの運用とかで人気のページを見たいだけならGoogle Analyticsなどのアクセス解析ツールを使えばいいです
しかし、企業サイトを運営している場合。特にショップ機能がある場合には本当にこれだけでいいのか。という疑問が沸いてくる
もちろんショップを運営している場合にはWAF(Web Application Firewall)を入れたりとセキュリティには気を配ってはいますが、最近流行のブルートフォースアタックされているかどうかまでは分かりにくかったりします
だってJavaScriptを無効にされていたりブラウザのアドオンを使用されてしまうとアクセス解析には痕跡が残らなくなってしまうからです

WEBサイト(サーバー)へのアクセス状況を判断するのに一番いいのはWEBサーバーが吐き出すログファイルです
IIS(Microsoft Internet Information Services)やApache、nginxなどのログファイル自体を観察することによって異常なアクセスを把握することが可能になります

Apacheのログファイル解析は『ApacheLogViewer』や『wlog』というフリーソフトもありますのでなんとかなりそうな気もしますが、IISのログファイルに関してはさすがMicrosoft様です。ファイルの中身がいまいち扱いにくい
なんせファイルのヘッダーがこんな感じになっている

分かるよ。言いたいことは分かるよ。伝わってるよ

だけど、このままAccessとかに普通に突っ込もうとすると面倒なわけですよ
しかもログファイルの中身は1日で30~40万行にもなるのでAccessに取り込んでる場合でもない
Log ParserというツールもあるけどGUIが・・・
GUIならLog Parser Studioもあるけど欲しい情報はSQLで絞りこまなければいけなかったり・・・
状態が直感的に分かりやすく且つ視認もできるツールはないものかなと数年探していました

そこで思いついたのが、BIツール(Business Intelligence)の活用です
30~40万行のファイルを1週間分取り込めば100万行を超えるデータ量になります
ということは所謂ビッグデータといっても過言ではないのではないか

ならばBIツールを使えば様々な切り口で分析することすら可能になる
Accessで作り込んだり、DBを別に用意して取り込ませたりとするよりもお手軽なツールがある

それは、QlikTechが提供するQlikViewやQlikSense
一番の特徴はインメモリ型で、メモリ上にデータを展開するので動作が早い
QlikViewは構築に数百万かかってしまうが、先日リリースされたQlikSenseはなんと無料で使えることを前提に配布されたツール

QlikSenseはQlikViewに比べて劣るところも多いけど、ちょっとしたデータの分析にはもってこいのツールです
QlikViewには個人向けとしてのパーソナル版ですが無料版が用意されているので、QlikViewの導入を検討するいい機会になるかもしれません

前置きが長くなりましたが、QlikViewを使ってIISのログファイルを分析していく手順を綴っていきます
QlikViewの基本的な使い方は頑張って慣れてください
習うより慣れろ。向き不向きが大きく関わってきます

こんな感じにできあがります
QlikView(クリックビュー)WEBログ解析完成図


用意するもの
1.QlikViewパーソナル版もしくはQlikSense(64bit対応しかない)
2.IISログファイル

手順1:ロードスクリプトを起動する

ロードスクリプトを起動する

手順2:自動で付与される時間情報を削除しておく

QlikViewは日付データに対して時間情報を付与してしまいます。
不要なのに付与されてしまうと【2014-09-16 00:00:00】のように視認しづらくなってしまいますので、不要な場合は時間情報を付与しないようにSETから事前に削除します

自動で付与される時間情報を削除001
自動で付与される時間情報を削除002

手順3:ファイルの取り込み その1

ロードスクリプト画面の下部にある『テーブルファイル』というボタンをクリック
ファイルの取り込み

手順4:ファイルの取り込み その2

ファイルを指定して選択します
ファイルの取り込み その2

手順5:ファイルウィザード 種類

下記のように設定して次へ進みます

区切り記号を スペース
ヘッダーサイズを 行 と 4
列見出しを なし
ファイルウィザード 種類

手順6:ファイルウィザード 変換

特に何もしないので次へ進みます
ファイルウィザード 変換

手順7:ファイルウィザード オプション

特に何もしないので次へ進みます
ファイルウィザード オプション

手順8:ファイルウィザード ロードスクリプト

スクリプト内容が表示されます
カラム名が@になりますが後で修正します
ファイルウィザード ロードスクリプト

手順9:ロードスクリプト記述が挿入されます

ウィザードで設定したファイルの取り込み内容が表示されます
ロードスクリプト記述が挿入されます

手順10:カラム名の修正
ヘッダー情報を除外したのでカラム名が@になっています。
分かりやすく修正します
自分の分かりやすい項目名にして構いません
カラム名の修正

手順11:ロード文の修正

このままではヘッダーとして記述されている不要な部分も取り込まれてしまうので、取得する条件を設定します
今回はWEBサーバーのログなのでHTTPメソッドを利用します

WHERE句でHTTPメソッド部分に必要な記述を流し込みます

本来はHTTPメソッドには
GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT
がありますので全部指定してもいいです。
ロード文の修正

蛇足:取り込み設定内容の記述について

挿入されたロードスクリプトの取り込み設定内容ですが、ここを修正することで変更することもできます

蛇足:取り込み設定内容の記述について

手順12:データを取り込む

左上の『リロード』を押下してデータを実際に取り込みます
※開発途中なんかはデバッグでテストしてからの方がいいですね
データを取り込む

手順13:データの取り込み完了

正しくデータが取り込まれたか確認しましょう
※今回は4行分のデータがtest.logに入っていました
データの取り込み完了

手順14:リストボックスの表示

カラム名を自分で設定しているので誤りがないか取り込まれたデータを確認します
リストボックスの表示

ログファイルの取り込みに使用したロードスクリプトは下記となります

基本的な取り込みは以上です

これだけでは味気ないので、これからロードスクリプトをちょっと変更することで、データを分かりやすく整理していきます

もうちょっと先になりますが、今回と同じようにApacheのログファイルをQlikViewを使って解析する流れも載せる予定です