re:dashでデータ分析その2 ログファイルも分析対象にしてみよう!!準備編

  • #技術ブログ 

4月7日、桜満開、入学式、サイトもリニューアル、気分もリニューアルのこの時期、
折角なのでブログも更新しよう!!!
という感じでちょっと季節的にテンションが上っている半人前エンジニアのうえピーです。

re:dashでデータ分析第2回は、ログファイルも分析対象にしてみようを目標に進めてみたいと思います。
とりあえず、データと名のつくものはぶっこんでしまえというノリで、まずはログを!!
というのが動機になります。

そういうわけで、今回は準備編ということで、re:dashで分析できるようMySQLサーバーにログファイル
をぶっこんでみたいと思います。

それではどうやって?ということで、まずはグーグル先生に聞いてみました。
「ログ収集 mysql」、、、検索。

nginxのログをtd-agentを利用して、MySQLに突っ込んでみた 〜アクセスログのデータベース化
※ブログ作者様、有益な情報有難うございます!!

おお、いいね!!!

ということで、男は即決!!

fluentd」and「fluent-plugin-mysql」でいってみます。

fluentdインストールは、「公式サイト」の手順でやったら一瞬です!!
※注意
くれぐれも、古いバーションのtd-agentはインストールしないでね!!
Rubyのバージョンが合わなくて、fluent-plugin-mysqlのインストールに失敗するよ。
(体験者うえピー談)

fluent-plugin-mysqlのインストールは、さくっとtd-agent-gemからやってしまいましょう!!
# /usr/sbin/td-agent-gem install fluent-plugin-mysql

よし、問題なくインストール完了。

では続いて何をMySQLにぶっこもうかな・・・、よし、Apacheのssl_access_logで!!

とここまで決まればあとは簡単。
サイトを見る限り、こんな感じで、/etc/td-agent/td-agent.confを編集すればOKなはず。
※ポイントは、formatです。「ここ」を参考にすれば、syslogとか他のログファイルでも応用可能!!
※format apache2でオッケーなのですが、他のログでも応用できるように正規表現にしてみました。
※README.mdには、mysql pluginは非推奨なのでmysql_bulk使ってねって書いてあったのに気付かず、mysqlを使っているのはご愛嬌ということで。
※本当は、コピペできるように、ブログに記載したかったのですが、HTML文字のエスケープ対応がすぐに出来ずタイムアップ、画像であしからず。

そして、td-agent.confに記載した定義で、テーブルもcreateすれば準備万端です。
※注意
ここで、体験者うえピーによる注意点を3つ。
1./var/log/httpdは、権限700になっているはずなので、711にするなどして、td-agentに実行権限を与えてくださいませ。
⇒さもないと、Permissionエラーで処理に失敗しちゃいます。
2./etc/td-agent/td-agent.conf matchエリアにinclude_time_key yesを記載するのをお忘れなく。
⇒テーブルのtime項目に値が設定されないです!!
3./etc/td-agent/td-agent.conf matchエリアにlocaltimeも記載して。お願い。
⇒折角、出力されたtime項目がUTC時間になっちゃいます。

では・・・・・・
# service td-agent start

どうだ・・・・

やったー!!書き込まれました~~~~~!

ん!?早速怪しい輩の痕跡が!!!

隊長!!オランダから何やら怪しいアクセスが!!!

というわけで、今回はこれにて。
次回「どう分析しようかな」に乞うご期待!!!