AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
如何解决 Amazon MWAA 中的“Could not read remote logs for the logs_group”(无法读取 logs_group 的远程日志)错误?
我想解决 Amazon Managed Workflows for Apache Airflow 中的“Could not read remote logs for the logs_group”(无法读取 logs_group 的远程日志)错误。
简短描述
当您在 Amazon MWAA 环境中运行任务或 DAG 时,可能会收到以下或类似的错误消息:
“Error: Reading remote log from Cloudwatch log_group : Could not read remote logs from log_group *** exception from MWAA task log group”(错误:从 Cloudwatch log_group 读取远程日志:无法从 log_group 读取远程日志 *** MWAA 任务日志组出现异常)
要对上述错误进行故障排除,请确认以下几个方面:
- AWS Identity and Access Management (IAM) 权限
- 日志记录配置设置
- 网络连接
- 日志组
- 必备组件安装情况
- 记录延迟
- 自动扩缩
- CPU 使用率和内存争用
解决方法
要对 Could not read remote logs from the logs_group(无法从 logs_group 读取远程日志)错误进行故障排除,请检查以下内容:
IAM 权限
要检查您的 IAM 权限,请完成以下步骤:
-
请确保将任务日志设置为 INFO/WARN/ERROR 级别的日志记录,并在 Amazon MWAA 环境中将 celery.sync_parallelism 设置为 1。有关更多信息,请参阅在 Amazon MWAA 上使用 Apache Airflow 配置选项。
-
检查关联的 IAM 角色的权限策略。请确保策略授予了调用其他 AWS 服务资源的权限。有关更多信息,请参阅 Amazon MWAA 执行角色。
-
检查关联的 Amazon CloudWatch 日志组是否有客户自主管理型密钥。如果日志组有客户自主管理型密钥,请确保授予 AWS Key Management Service (AWS KMS) 密钥的访问权限:
**注意:**请将 example-account-id 替换为您的账户 ID。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt" ], "Resource": "arn:aws:kms:*:<example-account-id>:key/*", "Effect": "Allow" } ] } -
请确保先前的密钥策略具有以下权限:
**注意:**请将 example-account-id 替换为您的账户 ID。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::example-account-id:root" }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion", "kms:GenerateDataKey", "kms:TagResource", "kms:UntagResource" ], "Resource": "*" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { /* Commented this line... "kms:ViaService": "s3.us-west-2.amazonaws.com", */ "kms:CallerAccount": "example-account-id" } } }, { "Sid": "Allow logs access", "Effect": "Allow", "Principal": { "Service": "logs.us-west-2.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-west-2:<example-account-id>:*" } } } ] }
日志记录配置设置
检查您的 Amazon MWAA 环境中的日志记录配置设置。请确保它们是正确的。如果配置设置或 Airflow DAG 不正确,会阻止访问指定日志组中的远程日志。例如,如果 DAG 中的日志记录配置设置为将日志写入到不同的日志组,则会发生读取失败。
网络连接
网络问题或用于 CloudWatch 的 Amazon Virtual Private Cloud (Amazon VPC) 端点遭到删除会导致远程日志读取失败。此失败会导致您的 Amazon MWAA 环境无法与 CloudWatch Logs 通信。请确保用于 CloudWatch Logs 的 Amazon VPC 端点存在。有关更多信息,请参阅使用私有路由在 Amazon VPC 中创建所需的 VPC 服务端点。
日志组
要检查您的日志组,请执行以下步骤:
- 检查与您的 Amazon MWAA 环境关联的 CloudWatch 日志组是否已删除或重命名。如果日志组已删除或重命名,则尝试访问这些日志组将失败。手动重命名或删除日志组不是最佳做法。
- 检查为 Amazon MWAA 中的 CloudWatch 日志组指定的 ARN 是否不正确或已过期。如果 ARN 不正确或已过期,则 MWAA 无法找到和访问日志组。当 ARN 输入错误或日志组移至其他 AWS 账户时,就会出现此错误。
- 查看 CloudWatch 日志组的保留策略。如果您尝试访问因保留策略而过期的日志组,则会出现读取失败。修改您的保留策略设置,使日志组永不过期或将日志组保留更长时间。
**注意:**默认情况下,日志无限期保存,永不过期。
必备组件安装情况
检查必备组件安装情况。请确保没有因版本不兼容而导致的故障。要检查必备组件的安装是否有问题,请在您的 Amazon MWAA 环境中导航到 Worker 日志组。要测试自定义插件和 Python 依赖关系,请使用 aws-mwaa-local-runner。有关更多信息,请参阅 GitHub 网站上的 aws-mwaa-local-runner。
要检查依赖关系是否不匹配,请查看 CloudWatch 日志路径下的以下必备组件安装情况:
- 日志组 > airflow-MyMWAAenvironment-WebServer requirements_install_xxxx.ec2.internal_xxxx.log
- 日志组 > airflow-MyMWAAenvironment-Scheduler requirements_install_xxxx.ec2.internal_xxxx.log
- 日志组 > airflow-MyMWAAenvironment-Worker requirements_install_xxxx.ec2.internal_xxxx.log
记录延迟
如果每小时的任务或偶尔运行的任务出现延迟时间较长的情况,请检查 celery.worker_autoscale 设置。要降低错误率,请将 celery.worker_autoscale 设置的第二个值设置为 0。例如,将大型环境设置为 20,0,将中型环境设置为 10,0,将小型环境设置为 5,0。
自动扩缩
自动扩缩时会增加或减少 Worker 节点数量,这可能导致 Could not read remote logs from logs_group(无法从 logs_group 读取远程日志)错误。如果是自动扩缩导致此错误,请关闭 Amazon MWAA 自动扩缩。要关闭 Amazon MWAA 自动扩缩,请将您的 min-workers 设置设为与 max-workers 设置相同的值。或者,增加 max-workers 设置值。有关更多信息,请参阅配置 Amazon MWAA Worker 自动扩缩。
CPU 使用率和内存争用
在 MWAA 环境中,CPU 使用率过高和内存争用可能会影响读取远程日志的能力。要解决 CPU 使用率高或内存争用造成的问题,请执行以下步骤:
- 将您的 Amazon MWAA 环境升级到新版本。
- 增加 max-workers 设置值。
- 监控 Amazon MWAA 的容器、队列和数据库指标。
- 调整 Amazon MWAA 环境的性能。
- 语言
- 中文 (简体)
