Amazon CloudWatch のログが空となる問題を解決したいです。
解決策
CloudWatch のログが空となる問題を解決するには、次の手順を実行します。
ロググループのメトリクスを確認する
データが CloudWatch に取り込まれると、CloudWatch Logs はロググループメトリクスを生成します。ロググループレベルのメトリクス IncomingLogEvents と IncomingBytes は、ロググループがデータを受信したときにデータポイントを受け取ります。指定された期間にデータポイントがない場合、ロググループはソースからデータを受信していません。
ソースがデータを発行していることを確認する
統合 CloudWatch エージェントを使用してログデータを CloudWatch に発行する場合は、CloudWatch エージェントがエラーなしで実行されていることを確認してください。エージェント構成に正しいソースログファイルパスが含まれていることを確認してください。ソースログファイルには、CloudWatch にプッシュするログがあることも確認してください。詳細については、「統合 CloudWatch エージェントがログイベントをプッシュしない問題を解決する方法を教えてください」を参照してください。
ソースからログエンドポイントへの接続をテストするには、次のコマンドを実行します。
注: example-region は、必要な AWS リージョンに置き換えてください。
telnet logs.<example-region>.amazonaws.com 443
nc -zv logs.<example-region>.amazonaws.com 443
上記のコマンドで接続の問題が発生した場合は、次の点を確認してください。
アクセス許可を確認する
ソースに、必要なロググループにデータを公開するためのアクセス許可があることを確認します。ソースの AWS Identity and Access Management (IAM) ポリシーで使用できるポリシーの例を次に示します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"logs:PutLogEvents"
],
"Resource": [
"*"
]
}
]
}
データが CloudWatch にプッシュされたときに、ログソースが新しいロググループとログストリームを作成する場合は、ポリシーの Action パラメータを確認してください。logs:CreateLogGroup および logs:CreateLogStream アクセス許可が含まれている必要があります。
ログの読み取り時に AccessDenied エラーが発生するのを防ぐには、必要な IAM ユーザーまたはロールに logs:GetLogEvents 用の最小特権が必要です。AWS Management Console を使用してログを確認する場合は、logs:DescribeLogGroups、logs:DescribeLogStreams、logs:GetLogEvents アクセス許可が必要です。
ロググループの設定を確認する
ロググループについては、保持期間が適切に設定されていることと、保持期間内に存在するログを取得していることを確認してください。保持期間の終了後に削除されたログは完全に削除され、復元することはできません。