VM Manager 문제 해결


이 문서에서는 VM Manager 관련 문제 해결 방법을 설명합니다.

VM Manager에 대한 자세한 내용은 VM Manager를 참조하세요.

시작하기 전에

  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

개요

문제를 해결하려면 먼저 VM Manager가 올바르게 설정되어 있는지 확인합니다. 설정이 올바르지만 여전히 문제가 있으면 로그를 검토할 수 있습니다. 로그를 검토할 때 VM 또는 VM Manager 워크플로(예: 명령어 또는 스크립트의 오류)에서 격리하고 해결할 수 있는 문제를 식별할 수 있습니다.

로그에서 다음 정보를 수집할 수 있습니다.

  • VM에서 로깅한 모든 오류 메시지 또는 경고 이는 VM 수준 오류 또는 VM에서 실행 중인 다른 서비스의 오류를 식별하는 데 적합합니다. 이러한 로그를 검토하려면 Cloud Logging 검사를 참조하세요.
  • OS 구성 에이전트에서 로깅한 상세 디버그 정보. 이 정보는 VM Manager에서 실행하는 모든 작업의 문제를 파악하는 데 유용합니다. OS 구성 에이전트의 디버그 로그를 검사하려면 디버그 로그 검사를 참조하세요.

문제 또는 오류를 식별한 후 일반적인 오류 섹션에서 가능한 해결 방법을 검토할 수도 있습니다.

Cloud Logging 검사

각 기능에 Google Cloud 콘솔 빠른 링크를 사용하여 특정 VM의 로그를 볼 수 있습니다.

OS 패치

  1. Google Cloud 콘솔에서 OS 패치 관리 페이지의 패치 작업 탭으로 이동합니다.

    패치 작업으로 이동

  2. 디버그할 패치 작업의 이름을 클릭합니다.
  3. 업데이트된 VM 인스턴스까지 아래로 스크롤합니다.
  4. 특정 VM의 경우 로그에서 보기를 클릭합니다.

OS 설정

이 절차는 OS 설정 관리(미리보기)에 지원됩니다. OS 설정 관리(베타)의 경우 다음 섹션의 디버그 로그 옵션을 사용하세요.

  1. Google Cloud 콘솔에서 OS 설정 관리 페이지의 VM 인스턴스 탭으로 이동합니다.

    VM 인스턴스로 이동

  2. 디버그할 VM의 이름을 클릭합니다.
  3. 정책까지 아래로 스크롤합니다.
  4. 로그에서 보기를 클릭합니다.

디버그 로그 검사

OS 구성 에이전트에 디버깅을 사용 설정하고 디버그 로그를 보면 VM Manager 기능의 문제를 식별할 수 있습니다.

OS 구성 에이전트에 디버그 로깅 사용 설정

VM 인스턴스 또는 프로젝트에서 메타데이터 osconfig-log-level=debug를 설정하여 디버그 로깅을 사용 설정할 수 있습니다.

VM에서 디버그 로그를 사용 설정하려면 다음 단계를 완료하세요.

콘솔

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 메타데이터 값을 설정하려는 VM의 이름을 클릭합니다.

  3. 인스턴스 세부정보 페이지에서 수정을 클릭하여 설정을 수정합니다.

  4. 커스텀 메타데이터 아래에 다음 메타데이터 항목을 추가합니다.

    키: osconfig-log-level
    값: debug

  5. 저장을 클릭하여 VM에 변경사항을 적용합니다.

gcloud

instances add-metadata 명령어를 --metadata=osconfig-log-level=debug 플래그와 함께 사용합니다.

gcloud compute instances add-metadata VM_NAME \
    --metadata=osconfig-log-level=debug

VM_NAME을 VM 이름으로 바꿉니다.

REST

인스턴스 메타데이터의 설정 방법은 인스턴스 메타데이터 설정의 API 안내를 참조하세요.

메타데이터 속성의 일부로 다음 키-값 쌍이 필요합니다.

키: osconfig-log-level
값: debug

디버그 로그 보기

디버그 로깅이 사용 설정되면 OS 구성 에이전트는 Cloud Logging 및 직렬 포트 콘솔에 로그 항목을 씁니다.

VM에서 디버그 로깅을 사용 설정하면 OS 구성 에이전트가 Cloud Logging에서 디버그 메시지 작성을 시작하는 데 약 10분이 걸립니다. 에이전트를 다시 시작하거나 VM을 재부팅하여 이 대기 시간을 줄일 수 있습니다. Cloud Logging에 대한 자세한 내용은 Cloud Logging 로그 보기를 참조하세요.

다음 옵션을 사용하여 디버그 로그를 볼 수 있습니다.

  • Cloud Logging: Google Cloud 콘솔 또는 Google Cloud CLI 사용
  • 직렬 포트 콘솔

콘솔

  1. Google Cloud 콘솔에서 Logging > 로그 탐색기(로그 탐색기) 페이지로 이동합니다.

    로그 탐색기로 이동

  2. 필요한 경우 페이지 상단에서 기존 Google Cloud 프로젝트를 선택하거나 새 프로젝트를 만듭니다.

  3. 리소스 드롭다운 목록에서 VM 인스턴스를 선택합니다. 사용 가능한 VM(instance_id) 목록이 표시됩니다.

  4. 보려는 VM을 클릭합니다.

  5. Add(추가)를 클릭합니다.

  6. 로그 이름 드롭다운 목록에서 OSConfigAgent를 선택합니다.

  7. Add(추가)를 클릭합니다.

  8. 쿼리는 다음과 유사해야 합니다.

    resource.type="gce_instance" resource.labels.instance_id="136126869923081757"
    logName="projects/my-vm-manager-project/logs/OSConfigAgent"
    
  9. 쿼리 실행을 클릭합니다.

gcloud

gcloud logging read 명령어를 실행합니다.

 gcloud logging read "resource.type=gce_instance AND logName=projects/PROJECT_ID/logs/OSConfigAgent"
 

PROJECT_ID를 프로젝트 ID로 바꿉니다.

직렬 포트

직렬 포트 콘솔에서 디버그 로그 정보를 보려면 직렬 포트 출력 보기를 참조하세요.

일반적인 오류

인증 문제

VM Manager가 작동하려면 다음이 필요합니다.

  • 연결된 서비스 계정. VM Manager는 이 서비스 계정을 사용하여 API 서비스에 대한 요청에 서명합니다.
  • 연결된 서비스 계정에 Logging API에 로그를 작성할 수 있는 roles/logging.logWriter 역할이 있는지 확인합니다.
  • Google Cloud OS 구성 서비스 에이전트. VM Manager는 패치 작업을 시작할 때 이 서비스 에이전트를 만들고 Cloud OS 구성 서비스 에이전트 역할을 부여합니다. OS 정책을 만들기 위해 이 서비스 에이전트를 구성할 필요는 없습니다.

VM Manager를 사용하고 연결된 서비스 계정 또는 Google Cloud OS 구성 서비스 에이전트가 없는 경우 패치 작업을 사용하는 동안 다음 오류가 표시될 수 있습니다.

Service account permissions are missing. Verify that the service account has the correct permissions and try again.
OSConfigAgent Error main.go:88: error getting token from metadata: metadata: GCE metadata "instance/service-accounts/default/identity?audience=osconfig.googleapis.com&format=full" not defined
message: "Error running OPERATION_NAME: error calling OPERATION_NAME: code: "PermissionDenied", message: "The caller does not have permission", details: []"

인증 문제로 인해 VM 인스턴스가 패치 대시보드에 표시되지 않을 수도 있습니다.

이 문제를 해결하려면 다음 중 하나 또는 모두를 시도해보세요.

  • 모든 VM에 연결된 서비스 계정이 있는지 확인합니다.
  • Cloud OS 구성 서비스 에이전트 역할(roles/osconfig.serviceAgent)이 Google Cloud OS 구성 서비스 에이전트에 설정되어 있는지 확인합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com' \
      --role='roles/osconfig.serviceAgent'
    

    다음을 바꿉니다.

패치 업데이트용 패키지 제외 시 오류

패치 작업에서 패키지를 제외할 때 패키지 이름에 와일드 카드나 특수 문자를 지정하면 OS 패치 관리에서 목록을 무시하고 모든 패키지를 업데이트할 수 있습니다.

이 문제를 해결하려면 20220829.00 버전으로 OS 구성 에이전트를 업데이트하고 슬래시(/)를 사용하여 패키지 이름을 래핑합니다.

다음 예시에서 OS 패치 관리는 패키지 이름에 프리픽스 google-이 있는 yum 패키지를 제외합니다.

      gcloud compute os-config patch-jobs execute --instance-filter-all
--yum-excludes=/google-.*/

다음 단계