LoginSignup
8
9

More than 5 years have passed since last update.

EC2インスタンスのログをログ収集サーバに集約しS3に保存する

Posted at

構成

web1、web2のtomcatのログをcollect1に送り最終的にS3へ転送する設定をメモがてら記述します。

AwsImage.png

ログ送信側(web1、web2)の設定

前提:tomcatをインストール済み

1.td-agentをインストール

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

2.td-agentがログにアクセスできるようにtomcatログのgroupを変更

# chgrp td-agent /var/log/tomcat8/

3.書き込み権限は不要なので外しておく(※省略可)

# chmod g-w /var/log/tomcat8/

4.confに転送設定を記述する
下記の設定はjson形式で吐き出したカスタムデータ(sample.json)をmatch内のserverに
転送する設定となっています。
matchに記載されている属性とsourceのtagで関連付けしています。
match-serverに指定しているportはfluentdのデフォルトのポートを指定しています。
受信側と同じようになるように設定してください。

/etc/td-agent/td-agent.conf
<source>
 type tail
 format json
 path /var/log/tomcat8/sample.json
 tag tomcat.sample
 pos_file /var/log/td-agent/sample.pos
</source>
<match tomcat.**>
 type forward
 <server>
  host collect1のIPアドレスを指定
  port 24224
 </server>
</match>

5.td-agentを起動します。

# /etc/init.d/td-agent start

※起動に失敗するようでしたら、下記コマンドでログを確認してください。

cat /var/log/td-agent/td-agent.log

ログ受信側(collect1)の設定

ここでは収集サーバ用に新規でEC2を立ち上げることを前提に記述しています。

EC2インスタンスの設定
・IAMロール(AmazonS3FullAccessなどs3に書き込み可能な権限付き)※後付け不可、インスタンスの作成時につけること
・セキュリティグループにlistenするポート(ここでは24224)をカスタムUDPで許可するように設定追加
※fluentd間がUDPでメッセージやりとりするため

1.td-agentをインストール
※out_s3プラグインは始めから含まれているようなので別途インストールは不要です。
2.confに転送されてきたログをS3にアップロードする設定を記述する

送信側でタグをtomcat.〜という形式で定義しているのでmatchでtomcatが引っかかるように設定してます。
s3_bucketにBucket名を設定してください。
なお、設定はリージョンが東京のものです。Tokyoと書いても設定できませんので正確な名称?を指定してください。
対応表はこちらを参照してください。
buffer_pathにはs3に持って行く前のログをバッファリングしておくパスを定義しておきます。
送信側からのデータを正しく受信できれば/tmp/fluent/s3****.logみたいな形でログが出力されています。
またs3への転送が成功すれば/tmp/fluentの下はクリアされます。

/etc/td-agent/td-agent.conf
<source>
  type forward
  port 24224
</source>

<match tomcat.**>
 type s3
 s3_bucket sample-s3(ログをアップロードするs3の名称)
 s3_region ap-northeast-1
 s3_object_key_format %{path}%{time_slice}/%{index}.%{hostname}.%{file_extension}
 path logs/
 buffer_path /tmp/fluent/s3
 time_slice_format %Y%m%d-%H
 time_slice_wait 1m
 <instance_profile_credentials>
  retries 5
 </instance_profile_credentials>
</match>

いうまでもないことですが、最低限の設定なのでIAMロールの設定や穴あけなどはきちんと設計して設定する必要があります。

3.td-agentを起動します。

# /etc/init.d/td-agent start

これで送信側のサーバにアクセスしログを更新すると1時間くらい経過するとsample-s3のlogs配下にgzで圧縮されたログがアップロードされるようになります。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9