11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EC2のログをfluentdでCloudWatchに投げる

Last updated at Posted at 2019-11-12

概要

fluentd でEC2で動いているアプリケーションのログをGUI上で監視したいと思いました。
そのため、 CloudWatchLog に投げ、GUI上でログを見れるようにしていきます。

IAMロールの作成

IAMでロールを作成します。
今回はCloudWatchにフルアクセスできるロールを新規に作成しました。

IAMロールの作成

これをEC2にアタッチします。
アクション>インスタンスの設定 からIAMロールの割当を行ってください。

IAMの設定は以上で完了です。

導入

まずは公式サイトに沿って導入します。

$ curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent3.sh | sh

次にCloudWatchに投げたいので、プラグインを導入します。
プラグインは fluent-plugin-cloudwatch-logsを使います。

$ td-agent-gem install fluent-plugin-cloudwatch-logs

次にApacheをインストールします。
fluentdがアクセスできるように、ログディレクトリの権限変更も行います。

$ yum install -y httpd
$ chmod 777 -R /var/log/httpd

以上で導入は完了です。

設定

設定は /etc/td-agent/td-agent.conf に記載します。
今回はテストとして、Apacheのログをターゲットにします。

/etc/td-agent/td-agent.conf

# アクセスログ
<source>
  @type tail
  format apache
  path /var/log/httpd/access_log
  pos_file /var/log/td-agent/httpd.access.log.pos
  tag td.apache.access
</source>

# logsへログを転送
<match td.apache.**>
  @type cloudwatch_logs
  region ap-northeast-1
  log_group_name apache
  auto_create_stream true
  use_tag_as_stream true
</match>

これで設定はOKです。

では早速動かしてみます。

$ systemctl start td-agent

これで起動したので、ログを吐き出してみます。

$ curl -vvv http://127.0.0.1

するとCloudWatchのapacheロググループに、td.apache.accessというログストリームができ、Apacheのアクセスログがあることが確認できると思います。

スクリーンショット 2019-11-12 1.35.32.png

スクリーンショット 2019-11-12 1.37.33.png

個人的に詰まったポイント

AWSアカウントを読み込まない

プラグインでAWSアカウントが必要なので、設定しようとしましたが、苦戦しました。
最初はrootユーザのenvに設定しましたが読み込まず、設定ファイルにアカウントのキーとシークレットキーを記載して動かしました。
(FYI EC2のログをfluentdでCloudWatchに投げる - juve534のブログ)

最終的には「AWS的にはロールで管理した方が良い」というアドバイスを受け、EC2にロールを設定することで解決としました。

ログストリーム名が動的にならない

ログストリーム名をタグ名にしようと設定ファイルに、 log_stream_name {$tag} と設定しましたが、 {$tag} というストリーム名になってしました。
こちらはプラグインのREADMEを見直し、 use_tag_as_stream という設定値を見つけたので、これを設定して解決しました。

まとめ

EC2のログをCloudWatchに投げることができました。
fluentdを使うことで、サーバにsshしなくても、ログを確認できるようになりました。
自分の詰まったポイントと合わせ、参考になれば幸いです。

以上、最後まで読んでいただきありがとうございました。

11
11
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
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?