Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

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

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

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

 ログ収集基盤としてFluentdの知名度が向上するとともに、大規模Webサービス提供会社による使用事例も多く出てきました。本記事では、Fluentdとは何か、どのように使用するかを紹介していきます。

目次

はじめに

 Fluentdは、ログを収集し格納するためのログ収集基盤ソフトウェアです。Fluentdにインプットされた、すべてのログをJSONに変換し、アウトプットします。インプットとアウトプットはモジュール化されており、モジュールを追加することでインプット元とアウトプット先を追加できるようになっています。

 Fluentdは急速に知名度を高め、多くのWebサービス会社で実際に使用されるようになりました。従来のログが抱えていた問題も、Fluentdが適切な解決策となっていると認知され、かつ簡単に導入・スモールスタートできるミドルウェアであったことが大きかったと思います。

 本稿では、Fluentdの簡単な仕組みと導入方法、シンプルな動作事例について紹介します。

対象読者

  • システム管理者
  • データサイエンティスト

必要な環境

  • UNIX系OS
  • Ruby 1.9

ログを出力する理由

 システム運用を始めると、ログを出力するようになります。ログを出力する目的には、システムの正常性チェックや性能ボトルネックの特定、システムのバグ調査、ユーザー行動の分析など、さまざまなものが考えられます。

 目的を達成するために必要となるログは、それぞれに異なることが多いため、出力しなければならないログの種類も多くなります。出力するログには、システムログ、パフォーマンスログ、アクセスログ、アプリケーションログ、データベースログなどがあります。それらのログは、OS、データベース、アプリケーションフレームワーク、アプリケーション実行環境、ミドルウェア、プログラムといろいろな所から出力されます。

 収集したログをbashやperlスクリプトなどで、直接データの集計を実施したり、mongodbやHadoopなどのデータストアに格納したり、Nagiosなどの監視ソフトに渡したりしてシステム運用に利用します。

従来のログ運用の問題点

 Fluentdは、従来のログを活用するにあたって障壁となっていた問題点を解消するために開発されました。まずはFluentdを使用しない場合に生じていたログ活用の問題点について、振り返ってみましょう。

(1)ログの種類が多い

 多くの目的を実現するために、いろいろな所からログを出力しています。出力元が異なると、出力されるログフォーマットも異なることが多くなります。CSV形式、タブ区切り、スペース区切り、人間が見やすいような独自フォーマットで出力され、出力される項目も順番も異なることがあります。それらをスクリプトなどで扱うために、パースをしてパース結果をどこかに格納して利用する必要があります。結果として、ログの種類だけスクリプトが存在する場合があります。

 ログのフォーマットが何らかの理由で項目が増減したり、順番が変わったりした場合にスクリプトのメンテナンスが煩雑になります。ログごとにスクリプトを作りこむため、どのスクリプトが担当しているのか、どのように実装されているのかを改修時に調べなおす必要が生じることもあり、柔軟な対応がしにくいのです。

(2)ログを利用するまでの待ち時間が長い

 システムの異常検知や性能監視などの一部のログを除くと、1日に1回夜間バッチで収集してデータストアに格納したり、分析スクリプトを実行するケースが多くなっています。リアルタイムに分析したい場合は、直接収集しているログを確認しなければならないシステム構成になっていることも珍しくありません。

(3)ログの活用が不十分

 ログによっては、出力しているサーバー上に格納だけして普段は何もしていないことがあります。必要になった時に、サーバーから収集してきて、目視またはエディタの検索機能などを使用して必要な情報を探すという扱いになっているログがあります。

 ログを有効に活用したい、有効活用するまでの手間を省くために、システム異常や性能監視などの必要最低限のログ以外は出力だけにとどまってしまっていることがあるのです。

Fluentdの役割を知ろう

 Fluentdの役割を理解するには、Fluentdのメイン開発者であるTreasure Data社の古橋さんがFluentd meetup #2で使用したスライドが一番イメージしやすいので引用します(*1)。

 図1が従来のログを活用するためのシステム構成概念です。それぞれのログに対して、個別にスクリプトが用意されている状態です。これが従来のログの問題点で説明した「ログの種類が多い」状態を表しています。

図1:ログ活用のための従来のシステム構成概念
図1:ログ活用のための従来のシステム構成概念

 Fluentdを使用すると、図2のように個別に用意していたスクリプトをすべて置き換えて、Fluentdで一括して管理できるようになります。ログを収集し活用するための中心部分がFluentdのみになることで、構成がシンプルになります。

図2:Fluentdを使用したログ活用のためのシステム構成概念
図2:Fluentdを使用したログ活用のためのシステム構成概念
*1)

 オリジナルのスライドは、slideshareで公開されている。


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

修正履歴

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

著者プロフィール

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

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

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

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

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