ちょっと話題の記事

td-agent2をAmazon Linuxで実行する

2015.04.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。
Fluentdディストリビューション Treasure Agent(td-agent2)のAmazon Linuxに対応した最初のリリース、2.2.0が昨日公開されました。EC2でのtd-agent2のインストール方法と、td-agent2に同梱されているWebインターフェースのfluentd-uiの様子をご紹介します。

EC2(Amazon Linux)でのセットアップ手順

公式ドキュメントのインストール手順にある、"RHEL/CentOS 5,6,7"と共通です。ダウンロードされるスクリプト内でYumリポジトリファイルのインポートとtd-agentパッケージのインストールが実行されます。Amazon Linuxでは既定でec2-userユーザーでログインするため、ダウンロードしたスクリプトをsudoコマンドで実行するところに注意します。以下のコマンドを実行します。

curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sudo sh

実行例

$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sudo sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   660  100   660    0     0    964      0 --:--:-- --:--:-- --:--:--   964
This script requires superuser access to install rpm packages.
You will be prompted for your password by sudo.
読み込んだプラグイン:priorities, update-motd, upgrade-helper
treasuredata/latest/x86_64                                                                                                                      | 2.9 kB     00:00
treasuredata/latest/x86_64/primary_db                                                                                                           | 6.3 kB     00:00

aws-cfn-bootstrap.noarch                                                         1.4-7.1.amzn1                                                             amzn-updates
  :(略)
読み込んだプラグイン:priorities, update-motd, upgrade-helper
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ td-agent.x86_64 0:2.2.0-0 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=======================================================================================================================================================================
 Package                                アーキテクチャー                     バージョン                               リポジトリー                                容量
=======================================================================================================================================================================
インストール中:
 td-agent                               x86_64                               2.2.0-0                                  treasuredata                                58 M

トランザクションの要約
=======================================================================================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 58 M
インストール容量: 202 M
Downloading packages:
td-agent-2.2.0-0.x86_64.rpm                                                                                                                     |  58 MB     00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : td-agent-2.2.0-0.x86_64                                                                                                                1/1
adding 'td-agent' group...
adding 'td-agent' user...
Installing default conffile...
Configure td-agent to start, when booting up the OS...
  検証中                  : td-agent-2.2.0-0.x86_64                                                                                                                1/1

インストール:
  td-agent.x86_64 0:2.2.0-0

完了しました!
$ rpm -q td-agent
td-agent-2.2.0-0.x86_64
$

簡単にインストールできました!

fluentd-uiによるtd-agent 2の設定

今回は、td-agentの設定をfluend-uiのWeb画面から行ってみます。試しにFluentdのドキュメントにあるApacheアクセスログをAmazon S3に送る構成を試すためにあらかじめ以下の設定を済ませます。

  • S3バケットの作成
  • S3アップロードの権限を付与したIAMロールの作成と設定
  • My IPからTCP 80番(Apache)、9292番(fluentd-ui)を許可するセキュリティグループの作成と設定

Amazon LinuxではApacheをインストールし、起動しておきます。td-agentからアクセスログが参照できるように、パーミッションを調節します。

$ sudo yum install -y httpd
  :(略)
$ sudo service httpd start
Starting httpd:                                            [  OK  ]
$ sudo chgrp -R td-agent /var/log/httpd
$ sudo chmod 2750 /var/log/httpd

Webブラウザでアクセスできることを確認しておきます。

tdagent-al01_1

以下のコマンドを実行してfluentd-uiを起動します。

$ sudo /opt/td-agent/usr/sbin/td-agent-ui start
Puma 2.11.0 starting...
* Min threads: 0, max threads: 16
* Environment: production
* Listening on tcp://0.0.0.0:9292

ターミナルはそのままにし、Webブラウザでhttp://EC2のパブリックIP:9292/にアクセスするとfluentd-uiのログイン画面が表示されます。以下の初期アカウントでログインします。

  • アカウント名 : admin
  • パスワード : changeme

tdagent-al02

ログインすると、セットアップ画面に進みます。[td-agentをセットアップ]ボタンをクリックします。

tdagent-al03

設定ファイルの入力画面が表示されます。今回は特に変更せずに[作成]ボタンをクリックします。

tdagent-al04

これでtd-agentの初期設定は完了です。ダッシュボードに画面が遷移します。続いて、ログの入力/出力を設定するために[ソースと出力先の追加]ボタンをクリックします。

tdagent-al05

Apacheは[入力] - [ファイル]、S3は[出力] - [AWS S3]をそれぞれクリックし、以下の通り設定します。ドキュメントそのままの設定なので、必要に応じてカスタマイズしてください。

tdagent-al06

入力(Apacheアクセスログ)の設定

ファイル選択画面になるので、リストからhttpdaccess_logの順に選択します。

tdagent-al07

画面右下にファイルのプレビューが出てわかりやすいですね。[次へ]ボタンをクリックします。

tdagent-al08

続いてファイルフォーマットを選択します。[format]のドロップダウンから「apache2」を選択します。フォーマットに従い色づけされたファイルが表示されます。これもわかりやすいですね。[次へ]をクリックします。

tdagent-al09

その他の設定画面では、任意のタグ(今回はs3.httpd.access)を入力し[次へ]をクリックします。

tdagent-al10

画面右下が切り替わり、ここまでの設定を反映したコンフィグが表示されます。[設定する]をクリックして反映します。

tdagent-al11

出力(S3)の設定

出力先としてS3の設定を行います。メニューの[ソースと出力先の追加]から[出力] - [AWS S3]をクリックし、以下を設定します。

  • Match : s3.*.*
  • Aws key / Aws sec key : 今回はIAMロールを利用するため、空のまま
  • S3 region / S3 bucket : あらかじめ作成したバケットのリージョン名、パケット名を入力

残りの詳細設定はドキュメントの設定からそのまま引っ張ってきました。

tdagent-al12

tdagent-al13

tdagent-al14

[設定する]ボタンをクリックすると設定が更新されます。

td-agentの起動

メニューから[ダッシュボード] - [開始]ボタンをクリックすればtd-agentが起動します。

tdagent-al15

しばらく待つと、S3バケットにApacheのログファイルが出力されます。

tdagent-al16

gzip形式で圧縮されているので、展開し中身を見てみます。以下のようにログが記録されていますね!

2015-04-07T05:14:49Z	s3.httpd.access	{"host":"XX.XX.XX.XX","user":null,"method":"GET","path":"/","code":403,"size":3839,"referer":null,"agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"}
2015-04-07T05:14:50Z	s3.httpd.access	{"host":"XX.XX.XX.XX","user":null,"method":"GET","path":"/icons/apache_pb2.gif","code":304,"size":null,"referer":"http://52.68.XX.XX/","agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"}
2015-04-07T05:14:51Z	s3.httpd.access	{"host":"XX.XX.XX.XX","user":null,"method":"GET","path":"/","code":403,"size":3839,"referer":null,"agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"}
2015-04-07T05:14:51Z	s3.httpd.access	{"host":"XX.XX.XX.XX","user":null,"method":"GET","path":"/icons/apache_pb2.gif","code":304,"size":null,"referer":"http://52.68.XX.XX/","agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"}

まとめ

Amazon Linuxでのtd-agentの導入と、Webインターフェースのfluentd-uiをご紹介しました。Elastic Beanstalkのインスタンスには現時点では対応していない *1ことに注意しつつ、活用していただければと思います。

参考URL

脚注

  1. Elastic Beanstalkのインスタンスは$releaseverが固定で201409などになっていてlatestではないため、インストールでエラーになる