"AWSPremiumSupport-TroubleshootEC2DiskUsage" 자동화 런북을 사용하여 EC2 디스크 사용과 관련된 문제를 해결하는 방법

4분 분량
콘텐츠 수준: 고급
2

본 기사는 AWS 지원 자동화 워크플로우(Support Automation Workflow)의 "AWSPremiumSupport-TroubleshootEC2DiskUsage" 런북을 통해 대상이 되는 EC2 인스턴스의 볼륨을 분석하고 파라미터를 기준으로 확장을 자동화하는 방법을 설명합니다.

개요

Amazon Elastic Block Store(Amazon EBS) 볼륨을 진단하고 확장하기 위해 AWS 지원 자동화 워크플로우의 "AWSPremiumSupport-TroubleshootEC2DiskUsage" 런북을 사용하여 EC2 인스턴스의 사용량을 조사하고 필요한 경우 확장할 수 있습니다.

중요

"AWSPremiumSupport-DiagnoseDiskUsageOnWindows" 와 같이 "AWSPremiumSupport-*" 런북에 액세스하려면 Enterprise 또는 Business 지원 구독이 필요합니다.

"AWSPremiumSupport-TroubleshootEC2DiskUsage" 런북은 볼륨과 파일 시스템을 확장하여 문제를 해결하며, 다음 두 단계로 실행됩니다.

  1. 디스크 진단 단계
  • "AWSPremiumSupport-DiagnoseDiskUsageOnWindows" 또는 "AWSPremiumSupport-DiagnoseDiskUsageOnLinux" 런북을 사용하여 볼륨을 확장하여 디스크 문제를 완화할 수 있는지 여부를 결정합니다.
  1. 볼륨 확장 단계
  • "AWSPremiumSupport-ExtendVolumesOnWindows" 또는 "AWSPremiumSupport-ExtendVolumesOnLinux"는 첫 번째 런북의 출력을 사용하여 볼륨을 수정하는 Python 코드를 실행합니다. 볼륨이 수정되고 난 후, 해당 런북은 영향을 받는 볼륨의 파티션과 파일 시스템을 확장합니다.

해결방법

권한 부여

런북을 사용하기 위해서는 아래와 같은 권한이 필요합니다. 먼저 대상 인스턴스에 연결된 Systems Manager용 AWS Identity 및 Access Management(IAM) 인스턴스 프로필이 있는지 확인하세요.

권한을 부여하려면 다음 단계를 수행하여 AssumeRole을 설정하고 자동화 문서 구성 프로세스에 대한 AutomationAssumeRole 파라미터를 지정하세요.

  1. JSON 옵션을 사용하여 다음 정책을 생성하세요.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": [
            "ec2:DescribeVolumes",
            "ec2:DescribeVolumesModifications",
            "ec2:ModifyVolume",
            "ec2:DescribeInstances",
            "ec2:CreateImage",
            "ec2:DescribeImages",
            "ec2:DescribeTags",
            "ec2:CreateTags",
            "ec2:DeleteTags"
          ],
          "Resource": "*",
          "Effect": "Allow"
        },
        {
          "Action": [
            "iam:PassRole"
          ],
          "Resource": "*",
          "Effect": "Allow"
        },
        {
          "Action": [
            "ssm:StartAutomationExecution",
            "ssm:GetAutomationExecution",
            "ssm:DescribeAutomationStepExecutions",
            "ssm:DescribeAutomationExecutions"
          ],
          "Resource": "*",
          "Effect": "Allow"
        },
        {
          "Action": [
            "ssm:SendCommand",
            "ssm:DescribeInstanceInformation",
            "ssm:ListCommands",
            "ssm:ListCommandInvocations"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ]
    }
    
  2. Assume role을 생성하고 정책을 연결하세요.

  3. "Resource": "*"를 Assume role의 ARN으로 바꿉니다.

    {
      "Action": [
          "iam:PassRole"
        ],
        "Resource": "*",
        "Effect": "Allow"
      },
    

런북 실행

다음 단계를 통하여 AWS 지원 자동화 워크플로우에서 제공되는 "AWSPremiumSupport-TroubleshootEC2DiskUsage" 런북을 통해 EC2 인스턴스의 볼륨을 분석하고 파라미터를 기준으로 확장이 필요하다면 확장할 수 있습니다.

  1. 볼륨 진단 및 확장이 필요한 EC2 인스턴스의 ID를 확인합니다.
  2. AWS Systems Manager 콘솔로 이동하여 왼쪽 네비게이션에서 자동화(Automation)을 선택합니다.
  3. 오른쪽의 자동화 실행(Execute automation) 버튼을 클릭합니다.
  4. 중앙의 자동화 런북에서 "TroubleshootEC2DiskUsage"를 입력하여 검색하고 결과에 표시된 "AWSPremiumSupport-TroubleshootEC2DiskUsage" 런북을 선택한 뒤 하단에서 다음(Next)를 클릭합니다. 참고로, 런북 검색시 "AWSPremiumSupport-TroubleshootEC2DiskUsage"를 전체 입력하면 입력 글자 수 제한으로 인해 오류가 발생됩니다.
    searchrunbook
  5. 입력 파라미터에서 다음 정보를 입력합니다.
    • InstanceId에 Amazon EC2 인스턴스 ID를 입력합니다.
    • AutomationAssumeRole의 경우 수임 역할의 ARN을 입력하여 자동화가 사용자 본인을 대신하여 작업을 수행하도록 허용합니다.
  6. 요구 사항이 기본값과 다를 경우 입력 파라미터에서 다음 입력을 지정합니다.
    • VolumeExpansionEnabled: 영향을 받는 볼륨과 파티션을 확장할지 여부를 제어합니다(기본값: True)
    • VolumeExpansionUsageTrigger: 확장을 트리거하는 데 필요한 사용된 파티션 공간의 최소 비율(기본값: 85)
    • VolumeExpansionCapSize: EBS 볼륨 증가 최대 크기(GiB)(기본값: 2048)
    • VolumeExpansionGibIncrease: 볼륨 증가(GiB)(기본값: 20)
    • VolumeExpansionPercentageIncrease: 볼륨 증가(백분율)(기본값: 20)
  7. 하단에 실행(Execute)을 선택합니다.
  8. 런북이 실행되는 동안 위에서 설명한 볼륨 분석 및 확장 작업이 자동으로 진행됩니다. execute runbook

예제 시나리오

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           475M     0  475M   0% /dev/shm
tmpfs           190M  456K  190M   1% /run
/dev/xvda1      8.0G  7.7G  311M  97% /
tmpfs           475M     0  475M   0% /tmp
/dev/xvda128     10M  1.3M  8.7M  13% /boot/efi
tmpfs            95M     0   95M   0% /run/user/1000

현재 볼륨은 8GB이고 7.7GB를 사용 중입니다. 이후 런북에 다음과 같은 파라미터를 입력하였습니다.

  • VolumeExpansionUsageTrigger: 85
  • VolumeExpansionGibIncrease: 20
  • VolumeExpansionPercentageIncrease: 20
  • VolumeExpansionCapSize: 2048

사용 공간이 VolumeExpansionUsageTrigger 에 대한 85% 임계값을 초과하였기 때문에 20GB 용량 증가가 완료되었습니다. 이러한 증가는 볼륨을 현재 볼륨 크기인 8GB의 20%는 1.6GiB이며 이는 VolumeExpansionGibIncrease의 20GiB보다 작으므로 20GiB를 증가시키는 것으로 결정되어 20GiB가 확장됩니다. 런북은 볼륨 확장 시 VolumeExpansionGibIncreaseVolumeExpansionPercentageIncrease을 비교하여, 둘 중 더 큰 증가량을 적용합니다. volume

참고 문서

[1] AWS 지원 자동화 워크플로우(AWS Support Automation Workflow - AWS SAW)
https://aws.amazon.com/ko/premiumsupport/technology/saw/

[2] How do I automatically evaluate and remediate the increasing volume on an Amazon EC2 instance when free disk space is low?
https://repost.aws/knowledge-center/ec2-volume-disk-space

[3] AWSPremiumSupport-TroubleshootEC2DiskUsage
https://docs.aws.amazon.com/ko_kr/systems-manager-automation-runbooks/latest/userguide/automation-awspremiumsupport-troubleshootEC2diskusage.html

1 댓글

유용한 정보 감사합니다!

답글을 게시함 7일 전

관련 콘텐츠