我想解决 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 管理控制台查看日志,请确保您拥有 logs:DescribeLogGroups、logs:DescribeLogStreams 和 logs:GetLogEvents 权限。
检查日志组配置
对于日志组,请确保适当设置保留期并检索保留期内存在的日志。保留期到期后删除的日志将被永久删除且无法恢复。