ログ解析(データ解析)のプラットフォームに関して

エンジニアとして、様々な形式のログを扱うことがあるかと思います。
システムログしかり、データ分析しかり。
それこそ、Webサーバのアクセスログは膨大な量になりますし、
上手に取り扱わないと結構面倒です。

昨今は、データサイエンティストの需要というのも大きく
今まで以上にデータの解析という仕事をする人が増えていると思います。

私はインフラエンジニアなので、データ解析というよりはログ解析の目線ではあるのですが、
基本的に類似点が多いと思います。
システムログにはタイムスタンプがあり、各時刻ごとのデータが記載されています。
データ解析でいる時系列データ解析に近いです。

そんなログ解析・データ解析ですが、皆様はどのようなプラットフォームで作業していますか。

SIerなんかだと、Excelでピボットテーブル使っているよというエンジニアいると思います。
ピボットテーブルは便利ですが、Excelには扱える行数に限りがあります。
大量のアクセスを受け付けるWebサーバのアクセスログ解析ではどうしましょう?

他に、集計用のスクリプト作っている方もいると思います。
SQLが得意なので、一度DBにインポートしてからSQLで解析していますという人もいるかと思います。
または、R、Pythonなりデータ解析に特化したライブラリを有する環境を利用するという人もいるかと。

というわけで、目標は同じですが様々な手段があるかと思います。
自分も、ケースバイケースで使い分けています。
今回は、様々な方法に関して紹介していこうかと思います。
※一つ一つの細かい内容に関しては後日の記事にします。
 今回はサマリを。


Excelを利用してログ解析・データ解析
 こちらは定番中の定番です。
 どのような方にも抵抗なく?入れる方法かと思います。
 Excelのピボットテーブルしかり、統計解析用の関数然り非常に高機能です。

 私もExcelにはお世話になっており、便利で素晴らしいソフトウェアです。
 ですが、やはり大量のデータの解析には向かないですね。そこが最大の欠点でしょうか。

UNIXLinuxコマンドを利用
 サーバエンジニアたるもの、有事の際にはサーバにあるソフトウェアだけで戦える必要があります。
 普段からこのようにする必要はないとも思いますが、
 sort,awk,nkf,grep,wc,uniq etc..
 を利用してコマンドライン上で集計できるのがインフラエンジニアとしては望ましいです。
 この方法のいいことは、繰り返し処理が容易なこと、
 バッチ処理化可能なことです。
 つまり大量のデータ解析にも向いています。
 ※運用中のサーバでドカンと動かして、負荷かけないようにね。 

SQLを利用してログ解析・データ解析
 基本的に、業界標準の規格が定まっている技術というのが好きです。
 なぜなら、どのようなソフトウェア、環境に移行しても基本概念が変わることはありませんから。
 そういう方にはSQLでの解析がオススメです。
 SQLというエンジニアの共通言語で、どこでも利用できるとうのが最大の利点でしょう。

 サーバからアクセスログを取得してきて、
 ローカルのDB(SQLITEなり、PostgreSQLなり)にインポートして、
 SQLで集計するということを私はよくやります。
 一度インポートするし、面倒くさくない?ということを思う人もいるかと思いますが、
 その一度をやってしまえば、大量のデータに対して繰り返し施行錯誤できます。
 そして繰り返しますが、どのようなデータでもSQLの知識があれば戦えるという利点が大きいです。

 以下、私がよく利用するプラットフォームの紹介です。

 ■SQLITE
  言わずもがな。簡易DBとして便利ですね。
  SQLite Home Page

 ■PostgreSQL
  こちらも有名です。私はローカルのPCにインストールしてありますw
  PostgreSQLは分析関数が強力なのがいいですね。
  データ解析に向いているDBだと思います。
  PostgreSQLの分析関数の衝撃1 (モードとメジアン) (1/3):CodeZine(コードジン)
  Download PostgreSQL | EnterpriseDB

 ■LogParser
  Microsoftが提供するログ解析要のツールです。
  Windowsのイベント・ログの解析や、IISのログ解析では非常に強力です。
  一度解析用のSQL分を作成してしまえば、それを使い回せば良いので業務も効率化できます。
  また、一度に複数のログ・ファイルを指定して解析かけられるのも便利です。
  Log Parser 2.2 日本語版
  概要: Log Parser Studio - (旧) Exchange Team Blog 日本語版 - Site Home - TechNet Blogs
  Log Parserでログを統合的に扱い運用保守に役立てる(基本編) (1/4):CodeZine(コードジン)

 ■q - Text as Data
  先ほど一度、ログをDBにインポートすると言いました。
  人によってはめんどくさいと思うかもとも言いました。
  それなら、直接テキストファイルに対して
  SQL打てるようにすればいいじゃないかというわけですね。
  皆様、似たようなこと考えているのかもしれませんね。
  というわけで、テキストファイル、CSVファイルに対して直接SQLを発行できるツールです。
  Run SQL directly on CSV files | Text as Data | q

■統計、データ解析専用のプラットフォーム
 こちらは説明するほどではないのですが、
 統計を扱う方には定番のソフトウェアたち。
 こちらに関してはサラッと解説するのも難しい上、
 情報も多くインターネット上にあるので今回は名前の羅列だけ。
 ※もちろんここに紹介した以外のソフトウェアもあるとは思います。
  あくまで私が利用したことあるものだけです。


 ■R
  R: The R Project for Statistical Computing

 ■Python
  O'Reilly Japan - Pythonによるデータ分析入門

 ■Splunk
  皆様しっています?Splunkというソフトウェア。
  もしかしたら、Kibana+ElasticSearch+Fluentdとかいう構成なら
  知っている方がいるかもしれません。それに近いです。

  http://www.splunk.com/ja_jp
  http://eure.jp/blog/fluentd_elasticsearch_kibana/

  Splunkというのはあらゆるマシンデータをドカンと突っ込んで、
  データをラベリングし、分析可能な状態にしてくれるログ解析プラットフォームです。
  データの収集・分析・解析をこれ一つでできます。

  Web画面を通じて、Splunkに突っ込んだデータを閲覧でき、
  SDL言語というのを通じて、データの集計を実施できます。

  SPLというのがSQLとまたちょっと違う言語でなれが必要です。
  ですが、SQL・SPLの対応表があるのでこちらを参考にしてみてください。
  Splunk for SQL users - Splunk Knowledgebase


以上、簡単ですが一覧を記載してみました。
今後、少しづつ詳細に関して記載していこうと思います。