インフラ

CloudwatchLogsにログが取り込まれないときに確認すること

Cloudwatchlogトラブルシュート

どうも、ちゃりおです。

CloudwatchLogsでログが取り込まれないことがあったので、その際に試したことや
確認するべきことについて書きます。

コマンドは、AmazonLinux2を想定しています。
エージェントは統合CloudwatchAgentを使用しています。(推奨のため)

CloudwatchAgentインストール手順 コマンドライン
CloudWatch Logs の使用開始

Contents

確認するべきこと

EC2のIAMロールに適切な権限が付与されているか

CloudWatchAgentServerPolicy」が含まれているIAMロールが割り当てられているか確認する。

これがないとlogだけではなく、メトリクス系(メモリ、ディスク使用率など)もおくれません。
メモリ、ディスク使用率等をCloudwatch上で確認できて、Cloudwatchlogだけ確認できない場合権限周りの可能性は薄いと思われます。

Stateファイルを消してみる

StateファイルはCloudwatchAgentがどこまでログを読み込んだかを記録しているファイルです。

Stateファイルが削除することで、再度CloudwatchLogsにログを送ることができます。
ただ、すでにおくったものが2重で送られることになります。それが嫌な場合は、vi等で編集するといいそうです。

Stateファイルは、下記のパスにあります。

/opt/aws/amazon-cloudwatch-agent/logs/state/

Cloudwatchエージェントを止めた状態で作業したほうが安全です。

sudo systemctl stop amazon-cloudwatch-agent.service
sudo rm /opt/aws/amazon-cloudwatch-agent/logs/state/<ファイル名>
sudo systemctl start  amazon-cloudwatch-agent.service

エージェントのバージョンアップ

上記の手順でも解決しない場合はバージョンが起因の可能性もあるので
エージェントのアップデートを行いましょう。

rpm -qa | grep 'cloudwatch'
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
sudo rpm -U ./amazon-cloudwatch-agent.rpm
rpm -qa | grep 'cloudwatch'

デーモンのリロードと再起動。

sudo systemctl daemon-reload
sudo systemctl restart amazon-cloudwatch-agent.service
sudo systemctl status  amazon-cloudwatch-agent.service

まとめ

CloudwatchLogsについてでした。

AWS公式の手順通りに進めれば、だいたいは問題なく動きます。
ただ、環境によってはうまく行かないこともあるので参考になれば幸いです。

aws sso datadog
AWS SSOでDatadogにログインするこんにちは、ちゃりおです。 最近、Datadogを利用しています。 ユーザ管理どうしようか迷っていました。 漠然とSSOで行けたらい...
外形監視
Cloudwatch,NewRelic,Datadog外形監視Saasを比較してみるこんにちは、ちゃりおです。 サービスの外形監視いれていますか。 可用性のモニタリングやエンドポイント監視に外形監視サービスが便利です。...
Sysops
運用経験なしでも取れるAWS認定 SysOps(改訂版)の勉強法最近改訂された、AWS SysOpsの勉強法をまとめてみました。 対象 AWSソリューションアーキテクトアソシエイトの勉強法・概要...