내용으로 건너뛰기

Amazon MWAA에서 “logs_group의 원격 로그를 읽을 수 없음” 오류를 해결하려면 어떻게 해야 합니까?

4분 분량
0

Apache Airflow용 Amazon Managed Workflows에서 “logs_group에 대한 원격 로그를 읽을 수 없음” 오류를 해결하고 싶습니다.

간략한 설명

Amazon MWAA 환경에서 작업 또는 DAG를 실행할 때 다음과 같은 오류 또는 유사한 오류가 나타날 수 있습니다.

"오류: Reading remote log from Cloudwatch log_group : Could not read remote logs from log_group *** exception from MWAA task log group"

위의 오류를 해결하려면 다음을 확인하십시오.

  • AWS Identity and Access Management(IAM) 권한
  • 로깅 구성 설정
  • 네트워크 연결
  • 로그 그룹
  • 요구 사항 설치
  • 로그 지연
  • 오토 스케일링
  • CPU 사용률 및 메모리 경합

해결 방법

logs_group에서 원격 로그를 읽을 수 없음 오류 문제를 해결하려면 다음을 확인하십시오.

IAM 권한

IAM 권한을 확인하려면 다음 단계를 완료하십시오.

  1. Amazon MWAA 환경에서 작업 로그가 INFO/WARN/ERROR 수준 로깅으로 설정되어 있으며 celery.sync_parallelism1로 설정되어 있는지 확인합니다. 자세한 내용은 Amazon MWAA에서 Apache Airflow 구성 옵션 사용을 참조하십시오.

  2. 연결된 IAM 역할의 권한 정책을 확인합니다. 해당 정책에서 다른 AWS 서비스의 리소스를 호출할 수 있는 권한을 부여하는지 확인합니다. 자세한 내용은 Amazon MWAA 실행 역할을 참조하십시오.

  3. 연결된 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"
        }
      ]
    }
  4. 이전 키 정책에 다음과 같은 권한이 있는지 확인하십시오.

    참고:****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 로그와 통신할 수 없습니다. CloudWatch 로그에 대한 Amazon VPC 엔드포인트가 있는지 확인합니다. 자세한 내용은 프라이빗 라우팅으로 Amazon VPC에 필수 VPC 서비스 엔드포인트 생성을 참조하십시오.

로그 그룹

로그 그룹을 확인하려면 다음 단계를 따르십시오.

  • Amazon MWAA 환경과 연결된 CloudWatch 로그 그룹이 삭제되거나 이름이 변경되었는지 확인합니다. 로그 그룹을 삭제하거나 이름을 변경한 경우 해당 로그 그룹에 액세스하려는 시도가 실패합니다. 수동으로 로그 그룹의 이름을 바꾸거나 삭제하는 것은 권장하지 않습니다.
  • Amazon MWAA의 CloudWatch 로그 그룹에 지정된 ARN이 올바르지 않거나 오래되었는지 확인합니다. ARN이 올바르지 않거나 오래된 경우 MWAA는 로그 그룹을 찾아 액세스할 수 없습니다. 이 오류는 ARN을 잘못 입력하거나 로그 그룹을 다른 AWS 계정으로 이동할 때 발생합니다.
  • CloudWatch 로그 그룹의 retention policy(보존 정책)를 확인합니다. 보존 정책에 의해 만료된 로그 그룹에 액세스하려고 하면 읽기 실패가 발생합니다. 보존 정책 설정을 수정하여 로그 그룹이 만료되지 않게 하거나 로그 그룹을 더 오랫동안 보관합니다.

**참고:**기본적으로 로그는 무기한 보관되며 만료되지 않습니다.

요구 사항 설치

요구 사항 설치를 확인합니다. 버전이 호환되지 않아 발생하는 오류가 없는지 확인합니다. 요구 사항 설치 실패를 확인하려면 Amazon MWAA 환경에서 워커 로그 그룹으로 이동합니다. 사용자 지정 플러그인과 Python 종속성을 테스트하려면 aws-mwaa-local-runner를 사용합니다. 자세한 내용은 GitHub 웹사이트에서 aws-mwaa-local-runner를 참조하십시오.

종속성 불일치를 확인하려면 CloudWatch 로그 경로에서 다음 요구 사항 설치를 검토하십시오.

  • Log groups(로그 그룹) > airflow-MyMWAAenvironment-WebServer requirements_install_xxxx.ec2.internal_xxxx.log
  • Log groups(로그 그룹) > airflow-MyMWAAenvironment-Scheduler requirements_install_xxxx.ec2.internal_xxxx.log
  • Log groups(로그 그룹) > airflow-MyMWAAenvironment-Worker requirements_install_xxxx.ec2.internal_xxxx.log

로그 지연

매시간 또는 가끔 실행되는 작업의 지연 시간이 긴 경우 celery.worker_autoscale 설정을 확인합니다. 오류율을 줄이려면 celery.worker_autoscale 설정 두 번째 값을 0으로 설정합니다. 예를 들어 대규모 환경은 20, 0으로, 중간 환경은 10, 0으로, 소규모 환경은 5, 0으로 설정합니다.

오토 스케일링

워커 노드 수를 늘리거나 줄이는 오토 스케일링으로 인해 logs_group에서 원격 로그를 읽을 수 없음 오류가 발생할 수 있습니다. 오토 스케일링으로 인해 이 오류가 발생하면 Amazon MWAA 오토 스케일링을 비활성화합니다. Amazon MWAA 오토 스케일링링을 비활성화하려면 min-workers 설정을 max-workers 설정과 동일한 값으로 설정합니다. 또는 max-workers 설정값을 늘리십시오. 자세한 내용은 Amazon MWAA 워커 오토 스케일링 구성을 참조하십시오.

CPU 사용률 및 메모리 경합

MWAA 환경 내의 높은 CPU 사용률과 메모리 경합은 원격 로그 읽기 기능에 영향을 미칠 수 있습니다. 높은 CPU 사용률 또는 메모리 경합으로 인한 문제를 해결하려면 다음 단계를 수행하십시오.