fluentd(td-agent)を監視する(Treasure Agent Monitoring Serviceとetc.)

こんにちは、SSTDの髙橋です。 今回の記事は、Fluentd Advent Calendar 2013の最終日の記事として投稿しております。 最終日ですが、今後もfluentdユーザが増え、増々活発に開発されていくことを目指して、初心者向けの記事となっております。

さて、先日開催されたfluentd casual talk#3にて,トレジャーデータからfluentd(td-agent)自体の状態を監視するサービス「Treasure Agent Monitoring Service(beta)」が発表されました。 私もベータ版の利用をさせて頂けることになったので、その利用方法やfluentdを監視するということについて色々と紹介して行きます。


1. fluentdの監視の切り分け

fluentdを監視することを考える上で重要な要素として、二つ挙げます。 一つ目は、fluentd自体の監視情報を出力するためのfluentdのプラグイン、 二つ目は、fluentdから出力された監視情報を元に可視化やアラートを行うソフトウェアです。 今回の記事では、二つ目の可視化やアラートを行うソフトウェアについて比較します。


2. 監視対象について

監視対象とする情報が、どんな内容にすべきかについての検討は、記事が長くなってしまうため、今回は省きます。 そのため、fluentdの監視について紹介している下記のスライドを参考にさせて頂きます。


3. 監視サービスの比較

表1に監視サービスの比較を示します. 表1に示しているアラートと異常検知の違いとしては、アラートは異常値であるという閾値を任意で設定するのに対して、異常検知は自動で判別する機能を 持つことと定義します。

以降では、表1のTreasure Agent Monitoring Serviceとその組み合わせて利用することが容易なMonitの導入方法について説明致します。

表1. 監視機能と監視サービスの比較表
プロセス監視 リソース監視 アラート 異常検知 コメント
Treasure Agent
Monitoring Service(Beta)

(自動復旧×)
× Fluentdに特化した監視ログを半リアルタイムにグラフ生成
monit × × × Fluendのプロセス復旧が可能
Munin
(プラグインベース)
× × 性能測定対象(munin-node)のシステムの状態の数値をmuninサーバが取得,記録し,グラフ化
Nagios × × システムの停止や危険状態な状態などを通知したり記録する機能
Zabbix × × 性能測定と記録、グラフ作成と、監視による通知をWebUIを使って実行可能


3.1. Treasure Agent Monitoring Service

3.1.1. 概要

fluetndのプラグインであるin_monitor_agentを使うことで、Fluentdデーモンの状態をTreasureDataPlatformに送り、 その情報を元にTreasureDataのWebConsole上にてモニタリングサービスをクラウド上にて提供しています。 Treasure Agent Monitoring Serviceの外観を図1に示します。 図1では、pluginを導入したインスタンスの情報について、時系列でリアルタイムに表示するグラフを示しています。 (注意:現在のところベータ版のため、利用するためには、TreasureDataさんへの確認連絡が必要です。)


図1. Treasure Agent Monitoring Serviceの外観

3.1.2. 実行環境

事前準備として、下記の情報が必要です。
  • TreasureDataのサインアップで得られるTD_API_KEY

サーバとして、今回はEC2上で2台を用意しました。

  • OS: Amazon Linux AMI 2013.09.2 64bit
  • Instance: t1.micro

3.1.3. 環境構築

下記の3ステップでTreasureData上のMonitoring項目にインスタンスが追加されます。
  1. td-agentのインストール
    インストール方法については、こちらを参照ください。
  2. /etc/td-agent/td-agent.confへの追記
    YOUR_INSTANCE_IDは、モニタリングサービス上でのサーバの表記名となりますので、任意の文字列を記述します。
  3. td-agentの再起動
    $ service td-agent start
    

3.1.4. 特徴

メリット
  • 導入が容易
    td-agent.configに3行追記するだけで良い
  • 監視用リソースが不必要

デメリット

  • 自由にグラフのカスタマイズができない
  • アラートを詳細に設定できない


3.2. Monit

3.2.1. 概要

総合監視デーモンとしてファイルシステムからHTTPレスポンス内容・プロセス監視などの機能を持ったソフトウェアです. プロセスが応答しない場合やリソースの消費量が多いときに,再起動したり停止したりすることが可能です. WebUIを持っており,ブラウザからプロセスのモニタリングや制御が可能となっています. 図2にMonitのWebUIを示します.


図2. MonitのWebUI

3.2.2. 実行環境

  • OS: Amazon Linux AMI 2013.09.2 64bit
  • Instance: t1.micro
  • httpdをインストール済み

3.2.3. 環境構築

# monitのインストール
$ yum install monit
# monitのWebUI起動用の設定ファイルの編集
$ vi /etc/monit.conf
# td-agent監視用の設定ファイルの編集
$ vi /etc/monit/conf.d/td-agent.conf
# monitの起動
$ /etc/init.d/monit start
/etc/monit.confの設定ファイル /etc/monit/conf.d/td-agent.confの設定ファイル
こちらのサイトを設定を参考にさせて頂きました。

3.2.4. 動作確認方法

httpdが実行されている状態にて、下記URLにアクセスすると、monitのコンソールを利用することができます。
http://(hostname):2812/

4. 動作確認方法

上記のモニタリングツールの動作をチェックするために、こちらのFluentdのベンチマークテストに使えるdummy_log_generatorを利用しました。このツールはメッセージ生成を任意のフォーマットで生成し続けるツールとなっており、これを転送するデータとして利用しました。インストール方法は、上記のリンクをご確認下さい。

4.1. dummy_log_generatorの設定方法

4.2. fluentd(dummyを実行するサーバと同一)のtd-agent.conf設定方法

4.3. fluentd(dummyを転送されてくるサーバ)のtd-agent.conf設定方法

4.4. 実行方法

4.1.のconfigファイルを用意し、configファイル内の指定のパスにログが出力されます。
$ dummy_log_generator -c dummy_log_generator.conf
=>  0039,2013-12-23 09:59:29 +0000,WARN


5. まとめ

fluentd自体を監視するためには、数多くあるソフトウェアのそれぞれの特徴を捉えて扱うことが必要そうですね。 そのため、監視という観点において、fluentd以外のリソースが不要であり、fluentdだけでfluentdを監視することができるTreasure Agent Monitoring Serviceはシンプルで良さそうです。

今回、nagiosやzabbixを比較として挙げていますが、本当の比較対象としては、GrowthForecastなどのグラフを自在に生成できるツールとすべきでした。 その理由は、fluentdからログを送信することで、メトリクスを自在に作るという機能を持たないため、2.で述べた監視対象全てについてビジュアライズすることが難しいためです。今回掲載したソフトウェアは、それぞれ共存して、補完しあうことができるのだと思います。


以上、今回の記事は終了ですが、引き続き、GrowthForecastなどの導入方法についても紹介していきたいと思います。

髙橋