CodeZine(コードジン)

特集ページ一覧

Fluentdで始めるリアルタイムでのログ有効活用

ログ収集ミドルウェア「Fluentd」入門

  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

中継サーバーでの設定

 アプリケーションサーバーのFluentdから送信されてきたログを、forwardプラグイン(*4)で受信します。受信結果をfileプラグイン(*4)でファイルに書き出しするとともに、受信したログを分析しHTTPステータスコード別にカウントをdatacounterプラグイン(*4)でカウントします。

 リスト10では、<source>でforwardプラグインを指定して受信しています。受信したログのタグが、nginx.accessの場合、「<match nginx.access>」で指定した処理をします。受信したログに対し、ファイルへの書き込みとステータス別のカウントとの2通りの処理を実施するために、イベントログを複数のアウトプットプラグインに渡すプラグインであるcopyを使用して処理を分岐させます。

 copyの一つめのstoreで、「/var/log/fluentd」配下に接頭辞「access_log」を付けたファイルに書き込まれます。copyの2つめのstoreで、60秒区切りで「status」キーを正規表現で指定したパターンに合致するログ数をカウントし、タグ「nginx.status」をつけてFluentdに再投入しています。

 受信したログのタグが、nginx.statusの場合、「<match nginx.status>」で指定した処理をします。プラグインgrowthforecastを使用して、グラフ描画サーバーでリッスンしているAPIのURLを指定して、GrowthForecastに値を登録しています。

[リスト10]アウトプットの設定 /etc/td-agent/d-agent.conf
<source>
  type forward
  port 24224
</source>
<match nginx.access>
type copy
<store>
  type file
  path /var/log/fluentd/access_log
  time_slice_format %Y%m%d_%H%M
  time_slice_wait 30s
  time_format %Y-%m-%d %H:%M:%S
</store>
<store>
  type datacounter
  tag nginx.status
  count_interval 60s
  aggregate all
  count_key status
  pattern1 2xx ^2\d\d
  pattern2 3xx ^3\d\d
  pattern3 4xx ^4\d\d
  pattern4 5xx ^5\d\d
</store>
</match>
<match nginx.status>
  type growthforecast
  gfapi_url http://gf01/api/
  service nginx
  section example
  tag_for ignore
  name_key_pattern .*_(count|percentage)$
</match>

 datacounterプラグインは、ユーザーによって作成されたプラグインなので別途追加する必要があります。追加するには、fluent-gemを使用します(リスト11)。

[リスト11]fluent-plugin-datacounterプラグインの追加
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-datacounter

グラフ描画サーバーの準備

 JSONでデータを登録するグラフ描画ミドルウェアのGrowthForecastは、Fluentdと相性が良いため、よく使用されています。ここでは簡単にインストール方法のみを紹介しておきます。GrowthForecastの詳細については、公式サイトを参照してください。

 GrowthForecastは、依存パッケージをインストールした後、cpanmコマンドでインストールします(リスト12)。

[リスト12]GrowthForecastのインストール
$ sudo yum groupinstall "Development Tools" 
$ yum install pkgconfig glib2-devel gettext libxml2-devel pango-devel cairo-devel
$ cpanm -n https://github.com/downloads/kazeburo/GrowthForecast/GrowthForecast-0.31.tar.gz
$ growthforecast.pl --port 80 > /usr/local/growthforecast/log/gf.log 2>&1 &

 以上で準備が完了です。Nginxにアクセスがあり、アクセスログが書き込まれると、図5のようにグラフが描画されます。

図5:GrowthForecastのグラフ例
図5:GrowthForecastのグラフ例

まとめ

 Fluentdという基盤では、さまざまなログを一元的に収集し、各種データストアに格納することが実現できるようになりました。設定ファイルも分かりやすいので導入しやすく、リアルタイムに近い早さで画一的にログを取り扱うことができます。Fluentdを使用して、これまで眠っていたログの有効活用を検討してみてはどうでしょうか。

参照ドキュメント



  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2013/02/25 20:34 誤字を修正しました

著者プロフィール

  • WINGSプロジェクト 大和屋 貴仁(ヤマトヤ タカヒト )

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5