SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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


  • X ポスト
  • このエントリーをはてなブックマークに追加

中継サーバーでの設定

 アプリケーションサーバーの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を使用して、これまで眠っていたログの有効活用を検討してみてはどうでしょうか。

参照ドキュメント

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6958 2013/02/25 20:34

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング