中継サーバーでの設定
アプリケーションサーバーの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に値を登録しています。
<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)。
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-datacounter
グラフ描画サーバーの準備
JSONでデータを登録するグラフ描画ミドルウェアのGrowthForecastは、Fluentdと相性が良いため、よく使用されています。ここでは簡単にインストール方法のみを紹介しておきます。GrowthForecastの詳細については、公式サイトを参照してください。
GrowthForecastは、依存パッケージをインストールした後、cpanmコマンドでインストールします(リスト12)。
$ 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のようにグラフが描画されます。
まとめ
Fluentdという基盤では、さまざまなログを一元的に収集し、各種データストアに格納することが実現できるようになりました。設定ファイルも分かりやすいので導入しやすく、リアルタイムに近い早さで画一的にログを取り扱うことができます。Fluentdを使用して、これまで眠っていたログの有効活用を検討してみてはどうでしょうか。
参照ドキュメント
- 修正履歴
-
- 2013/02/25 20:34 誤字を修正しました
この記事は参考になりましたか?
既に会員の方はを行ってください。
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 大和屋 貴仁(ヤマトヤ タカヒト)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

