Yuto Blog

Yuto Blog

EC2 Ubuntu インスタンスに CloudWatch Logsエージェントをインストールして設定する

EC2 Ubuntu インスタンスに CloudWatch Logsエージェントをインストールして設定する

CloudWatch Logs エージェントをインストールすると CloudWatch Logs の画面でEC2インスタンスで実行されているアプリケーションのログがリアルタイムに閲覧できます。

IAMロール設定

まずは適切なロールが必要です。
下記のポリシーで新規ロールを作って、そのロールをEC2インスタンスに割り当てます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
    ],
      "Resource": [
        "*"
    ]
  }
 ]
}

ロールが作成できたらEC2インスタンス一覧画面で、インスタンスを右クリックして、セキュリティーの中に IAMロール変更を選択すると簡単にロールを割り当てることができます。

スクリーンショット 0003-10-31 16.18.13.png

CloudWatch Logs エージェント設定

まずはEC2にアクセスして、sudo apt-get updateを実行

インストールするコマンド:

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
sudo python ./awslogs-agent-setup.py --region ap-northeast-1

pythonコマンドで実行失敗だったらpython2もしくはpython3で試してください。

インストールに5つのステップがあります。

ステップ3では何も入力せずエンターを押して進めていいです。

スクリーンショット 0003-10-31 16.01.46.png

ステップ4では閲覧したいログファイルのパスを入力してから CloudWatch Logs のロググループ名を指定できます。
それから Stream名やタイムスタンプなど設定します。

スクリーンショット 0003-10-31 16.02.04.png

それでは CloudWatch Logs エージェントのインストールと設定が完了です。問題なければ CloudWatch Logsのロググループメニューからログを閲覧できるようになります。

スクリーンショット 0003-10-31 16.22.04.png

CloudWatch Logsエージェント自体のログを確認したい場合

tail -f /var/log/awslogs.log

Regionなど変更したい場合

/var/awslogs/etc/aws.conf
[plugins]
cwlogs = cwlogs
[default]
region = ap-northeast-1

ログファイルやロググループ名なの変更したい場合

/var/awslogs/etc/awslogs.conf
[crontab]
file = /deploy/apps/sample_app/shared/log/crontab.log
buffer_duration = 5000
log_stream_name = crontab
initial_position = start_of_file
log_group_name = prd-log

[production]
file = /deploy/apps/sample_app/shared/log/production.log
buffer_duration = 5000
log_stream_name = production
initial_position = start_of_file
log_group_name = prd-log

[puma_access]
file = /deploy/apps/sample_app/shared/log/puma_access.log
buffer_duration = 5000
log_stream_name = puma_access
initial_position = start_of_file
log_group_name = prd-log

[puma_error]
file = /deploy/apps/sample_app/shared/log/puma_error.log
buffer_duration = 5000
log_stream_name = puma_error
initial_position = start_of_file
log_group_name = prd-log

[nginx_access]
file = /deploy/apps/sample_app/shared/log/nginx.access.log
buffer_duration = 5000
log_stream_name = nginx_access
initial_position = start_of_file
log_group_name = prd-log

[nginx_error]
file = /deploy/apps/sample_app/shared/log/nginx.error.log
buffer_duration = 5000
log_stream_name = nginx_error
initial_position = start_of_file
log_group_name = prd-log

変更してから awslogs を再起動すると反映されます。

sudo service awslogs restart

スクリーンショット 0003-10-31 16.22.12.png

インストールして設定しても CloudWatch Logs に反映しない場合の調査

まずは tail -f /var/log/awslogs.log コマンドでエージェント自体のログを確認してください。もしかしたら /var/awslogs/etc/awslogs.confで設定したタイムスタンプのフォーマットはログファイルのと違う可能性があります。

実は datetime_format という設定が不要みたいなので、/var/awslogs/etc/awslogs.confdatetime_formatの設定を削除して、 awslogs を再起動すれば動くかもしれません。

Updated by Yuto at 2022-03-17 21:22
1
Like this article
Le Minh Thien Toan

Tác giả:Yuto Yasunaga

Xin chào các bạn. Mình là kỹ sư IT đang làm việc ở Nhật Bản. Mình tạo blog này để chia sẻ về cuộc sống và những kinh nghiệm trong quá trình học tập và làm việc.
Hy vọng bài viết này sẽ có ích cho bạn.