ログ解析頑張ってみた

  • とある部署のデータがDBから消えて表示されなくなった
  • 処理した時間帯を含むと思われるアプリケーションログがある
  • ログにはデータの削除と追加したデータのキーコードが出力されている
  • ログにはいろいろな部署のデータが混在している
  • ユーザがどの様な操作をしたのかは不明
  • アプリケーションは一度古いデータを削除した後、新しいデータを格納しているはず

こんな感じ。
ログからアプリケーションの流れを追うしかないんだけど、ログを単純に上から下に追うだけではノイズが多すぎて把握できない。1時間ばかりログをあれこれ切ったり貼ったりしていたがどうもうまくいかなかった。

そこでひらめいた。「ログがあって何をしたのかが含まれているなら、その通りにデータを書き込んでみればいい。」と。

DB の代わりには MDB を使い、Ruby でログを解析しなが delete & insert していく。すると有る時点の処理でデータを削除したにもかかわらずその後の生成処理が行われていないのが分かった。結局ログからはそれだけしかわからなかったんだけど、それが分かるまでが長かった。正確にはプログラム使って再現処理を行おうと思いたつまでが長かった。

前置きはこんな感じだけど(長い)、何が言いたいかというと「I love Ruby」。単純とはいえログ解析プログラムが直ぐにできあがったのは、手になじむというか思考を形にしやすいからだと思う。メソッドだけ定義して使うこともできるし、class 定義してデータを扱いやすいように表すこともできる(これは Ruby だからってわけじゃないけど)。
Rails で成功しようが失敗しようがきっとみんなの手元には残っていくんだろうなぁと思う。