前回の記事「増えるログ、多様化するログをどう効率的に運用するか」では、fluentdの大まかなアーキテクチャについてご紹介しました。第2回では、fluentdがどういったものであるかをもう少し具体的に理解するために、実際の利用までの流れを紹介します。
fluentdを利用するには、各サーバーにfluentdをインストールし、どのプラグインを使って処理を行うかについての設定が必要になります。
fluentdはさまざまな方法でインストールできます。例えば、
といった具合です。
ここでは、CentOS(ver.6.4)上にfluentdをrpmパッケージで導入し、基本的な設定を行う手順を紹介します。なおrpmパッケージでは、CentOS、RHEL 5.0以上をサポートしています。
fluentdのrpmパッケージは「td-agent」と呼ばれるものです。td-agentは、fluentdを稼働させるために必要なRubyインタープリターを含んだ安定版パッケージです。ここでは、td-agentのバージョン1.1.18(fluentd 0.10.41)を使って手順を解説します。
といっても、インストール作業自体は非常に簡単です。公開されているパッケージインストール用スクリプトを実行するだけでインストールできます。
$ sudo curl -L http://toolbelt.treasure-data.com/sh/install-redhat.sh | sh
このインストールスクリプトには、fluentdの開発元であるトレジャーデータのパッケージリポジトリを登録し、td-agentパッケージをインストールするための処理が書かれています。td-agentパッケージのインストールを実行すれば、関連するrpmパッケージ類も全てインストールされます。
fluentdを実際に利用するには、前回も紹介したプラグインが必要です。プラグインには、fluentdに標準で組み込まれているものと、gemパッケージからインストールするものがあります。
上記の手順でtd-agentをインストールすると、標準組み込みプラグイン、および幾つかのプラグイン用gemパッケージも自動的にインストールされます。公開されているプラグインをそれ以外にもインストールしたい場合は、個別にgemコマンドでインストールします。
上記の手順でtd-agentをインストールした場合には、組み込まれているRubyに対してgemパッケージをインストールします。CentOS(64bit版)の場合、/usr/lib64/fluent/ruby/bin/fluent-gemを使ってパッケージ管理を行います。
例えば、fluent-plugin-zabbixというアウトプットプラグインをインストールする場合は、以下のように実行します。
$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-zabbix
これでこのプラグインが利用できるようになります。
続けて、fluentdの設定を行いましょう。
まず、fluentdの設定ファイルを作成します。rpmパッケージでインストールした場合、デフォルトでは/etc/td-agent/td-agent.confが読み込まれます。このデフォルトのファイルに設定を追加してもいいのですが、新たに設定ファイルを作って管理する場合は、以下のコマンドを用います。
$ td-agent --setup ~/fluent ←~/fluentディレクトリ以下にfluent.confが作成されます
続いて上記のファイルに、インプットに関する設定とアウトプットに関する設定を加えます。設定ファイルの記法は次の通りです。
・インプットプラグインに関する設定
インプットプラグインの設定は以下のようにsourceディレクティブに記載します。
<source> type インプットプラグインの種類の指定(tail、execなど) その他パラメーター(利用するインプットプラグインに応じて必要なパラメーターを追加指定) </source>
・アウトプットプラグインに関する設定
アウトプットプラグインの設定は、以下のようにmatchディレクティブに記載します。
<match タグパターン> type アウトプットプラグインの種類の指定(file、stdoutなど) その他パラメーター(利用するアウトプットプラグインに応じて必要なパラメーターを追加指定) </match>
matchの後ろにタグのパターンを指定し、特定のタグが付与されたログデータをどのアウトプットプラグインで処理するかを指定します。タグパターンの指定方法には以下の表のようなものがあります。
指定方法 | 説明 | 具体例 | ||
---|---|---|---|---|
設定例 | マッチするタグ例 | |||
タグ名を全て記述して指定 | 指定したタグ名に完全に一致したものが対象となる | <match no1.no2.no3> | no1.no2.no3のみ | |
*を利用した指定 | 「*」で指定した個所を任意の文字列に置き換えて一致したものが対象となる(*はドット区切りを含まない文字列のみ含むことが可能) | <match no1.*.no3> | no1.no2.no3やno1.no4.no3など(※no1.no2.no4.no3などno1.と.no3の間に複数の文字列が入るタグはアンマッチと見なされる) | |
**を利用した指定 | 「**」で指定した個所を任意の文字列に置き換えて一致したものが対象となる(**にドット区切りで複数の文字列を含むことが可能) | <match no1.**.no3> | no1.no2.no3やno1.no2.no4.no3など(※**のみ指定すると全てのタグにマッチする) | |
{}を利用した指定 | {}の中に指定した要素のうちいずれかを含むものが対象となる | <match no1.{no2,no3}> | no1.no2またはno1.no3 | |
タグのマッチングルール指定方法 |
これらの指定方法を組み合わせてマッチングルールを指定していくことになります。
matchディレクティブを設定する際は、順序に注意が必要です。matchディレクティブの設定は、設定ファイルの上から順に評価されます。そのため、全てのパターンを示す「<match **>」を他のmatchの設定よりも先に記述すると、全てのログデータが<match **>で指定した内容の処理を行うことになり、その他のmatchディレクティブには振り分けられません。matchの仕様に基づいて、正しくタグの設計および設定を行ってください。
td-agentをインストールすると、起動スクリプトも併せてインストールされます。
この起動スクリプトを、先ほど設定した設定ファイルを読み込んで起動するように変更し(デフォルトの設定ファイルを使う場合は変更の必要はありません)、td-agentを起動します。
$ sudo service td-agent start
Copyright© 2014 ITmedia, Inc. All Rights Reserved.