Monitoring 에이전트 승인

이 가이드에서는 가상 머신(VM) 인스턴스에 설치하는 Monitoring 에이전트가 원격 분석 데이터를 Monitoring으로 전송하도록 승인했는지 확인하는 방법을 설명합니다.

승인 개요

승인은 인증된 클라이언트가 특정 리소스 집합에 대해 갖는 권한을 확인하는 프로세스를 의미합니다. Google Cloud는 애플리케이션 기본 사용자 인증 정보(ADC)를 사용하여 Compute Engine VM 인스턴스에서 Monitoring 에이전트를 승인합니다.

Monitoring 에이전트는 VM의 연결된 서비스 계정 또는 서비스 계정 키를 인증하는 ADC를 지원합니다.

  • 연결된 서비스 계정은 VM과 같은 특정 리소스와 관련된 서비스 계정을 나타냅니다. 서비스 계정에는 고유한 사용자 인증 정보가 있습니다. ADC는 VM의 메타데이터 서버를 사용하여 서비스의 사용자 인증 정보를 가져옵니다.
  • 서비스 계정 키는 프로젝트의 서비스 계정에서 키 쌍을 승인하는 데 사용되는 비공개 키를 나타내며 이를 통해 액세스 토큰을 만들 수 있습니다. 서비스 계정 대신 Google Cloud API와 상호작용할 수 있도록 토큰을 사용하여 ID를 제공합니다.

비공개 키에는 로컬 스토리지가 필요하며 스토리지가 손상될 수 있으므로 가능한 경우 연결된 서비스 계정을 사용하여 인증하도록 ADC를 구성하는 것이 좋습니다. 서비스 계정 키에 대한 자세한 내용은 서비스 계정 키 관리 권장사항을 참조하세요.

AWS EC2 VM 인스턴스의 경우 Monitoring 에이전트는 서비스 계정 키 메서드를 사용하는 인증만 지원합니다.

시작하기 전에

다음 중 한 가지에 해당된다면 이 가이드를 읽으세요.

  • 매우 오래된 Compute Engine 인스턴스를 실행 중이거나 Compute Engine 인스턴스의 액세스 범위 또는 서비스 계정 설정을 수정한 경우 에이전트를 설치하기 전에 이 가이드의 단계를 완료해야 합니다. 이러한 VM에는 필요한 서비스 계정 키 파일이 없을 수 있습니다. 인스턴스의 액세스 범위 및 서비스 계정 설정을 확인하는 방법은 Compute Engine 사용자 인증 정보 확인을 참조하세요.

    새로 생성된 Compute Engine VM 인스턴스에서는 액세스 범위 및 서비스 계정 설정으로 충분히 에이전트를 실행할 수 있습니다.

  • Amazon EC2(AWS VC2) VM 인스턴스를 실행하는 경우 에이전트를 설치하기 전에 다음을 수행합니다.

    1. EC2 인스턴스가 있는 AWS 계정의 AWS 호스팅 프로젝트를 식별합니다. 호스팅 프로젝트는 오로지 EC2 인스턴스의 측정항목과 로그를 AWS 계정에 저장하기 위한 Google Cloud 프로젝트입니다.

      계정에 대한 AWS 호스팅 프로젝트를 찾을 수 없는 경우 호스팅 프로젝트로 사용할 Google Cloud 프로젝트를 만드는 것이 좋습니다. 여러 AWS 계정에 EC2 인스턴스가 있으면 각 계정에 대해 Google Cloud 프로젝트를 만듭니다. 또한 이러한 프로젝트에 이름 지정 규칙을 사용하거나 프로젝트 라벨을 사용해서 호스팅 프로젝트를 식별할 수 있도록 하는 것이 좋습니다. 특히 Google Cloud 리소스가 포함된 경우 기존 Google Cloud 프로젝트는 다시 사용하지 않는 것이 좋습니다.

    2. 서비스 계정 키 파일을 사용하여 에이전트 승인 단계를 수행합니다.

액세스 범위를 확인하려면 다음 안내를 따르세요.

  1. Compute Engine 인스턴스에서 다음 명령어를 실행하여 액세스 범위를 쿼리합니다.
    curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
  2. 명령어 출력에서 액세스 범위 https://www.googleapis.com/auth/cloud-platform이 나열된 경우 승인이 충분합니다.

    https://www.googleapis.com/auth/cloud-platform이 나열되지 않으면 다음 '로깅' 및 '모니터링' 쌍에 대해 각각 하나씩 2개의 액세스 범위가 필요합니다.

    • https://www.googleapis.com/auth/logging.write 또는
      https://www.googleapis.com/auth/logging.admin
    • https://www.googleapis.com/auth/monitoring.write 또는
      https://www.googleapis.com/auth/monitoring.admin

액세스 범위를 수정하려면 다음 안내를 따르세요.

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

    VM 인스턴스로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Compute Engine인 결과를 선택합니다.

  2. 필요한 경우 Google Cloud 프로젝트의 드롭다운 목록을 클릭하고 프로젝트 이름을 선택합니다.
  3. 탐색 메뉴에서 VM 인스턴스를 선택하고 인스턴스 탭을 선택한 다음 VM의 이름을 선택합니다.
  4.  중지를 클릭하여 VM을 종료합니다.
  5. VM이 중지되면  수정을 클릭합니다.
  6. 페이지의 ID 및 API 액세스 섹션에서 액세스 범위를 찾은 다음 각 API에 액세스 설정을 선택합니다.
  7. Stackdriver Logging APIStackdriver Monitoring API 항목에서 쓰기 전용을 선택합니다.
  8. 저장을 클릭한 후  시작/재개를 클릭하여 VM을 다시 시작합니다.

서비스 계정 사용

인증은 클라이언트의 ID를 확인하는 프로세스입니다. 인증에는 서비스 계정을 사용하는 것이 좋습니다. 서비스 계정은 일반적으로 사용자가 아니라 애플리케이션 또는 워크로드에서 사용되는 특수한 종류의 계정입니다. 자세한 내용은 서비스 계정 개요를 참조하세요.

서비스 계정은 코드가 실행되는 위치가 Compute Engine이든 App Engine이든 또는 온프레미스이든 관계없이 인증에 사용할 수 있습니다. 자세한 내용은 Google 인증을 참고하세요.

이 섹션에서는 새 서비스 계정을 만들고 필요한 역할을 부여하는 방법과 필요한 역할이 없을 때 기존 서비스 계정을 업데이트하는 방법을 설명합니다.

서비스 계정 만들기

서비스 계정을 만들려면 다음 정보로 서비스 계정 만들기 절차를 완료하세요.

  • 서비스 계정을 만들 Google Cloud 프로젝트를 선택합니다.

    • Compute Engine 인스턴스의 경우 인스턴스를 만든 프로젝트를 선택합니다.

    • Amazon EC2 인스턴스의 경우 AWS 호스팅 프로젝트를 선택합니다.

  • 역할 드롭다운 메뉴에서 다음 역할을 선택합니다.

    • 모니터링 > 모니터링 측정항목 작성자. 이 역할은 Monitoring 에이전트에 권한을 부여합니다.

    Logging 에이전트도 설치하는 경우에는 해당 에이전트에 다음 역할을 추가합니다.

    • 로깅 > 로그 작성자. 이 역할은 Logging 에이전트를 승인합니다.
  • 서비스 계정 키를 사용하여 인증하려면 키 유형으로 JSON을 선택하고 만들기를 클릭합니다.

    만들기를 클릭하면 서비스 계정 키가 포함된 파일이 로컬 시스템에 다운로드됩니다. 자세한 내용은 서비스 계정 키 만들기 및 삭제를 참조하세요.

그런 다음 연결된 서비스 계정 또는 서비스 계정 비공개 키를 사용하여 승인할지 여부를 기준으로 서비스 계정과 설정을 구성합니다.

기존 서비스 계정의 역할 확인 및 수정

Google Cloud 콘솔을 사용하여 기존 서비스 계정에 포함된 역할을 확인하고 누락된 필수 역할을 추가할 수 있습니다.

  1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

    IAM으로 이동합니다.

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 IAM 및 관리자인 결과를 선택합니다.

  2. 필요한 경우 Google Cloud 프로젝트의 드롭다운 목록을 클릭하고 프로젝트 이름을 선택합니다.

  3. IAM 주 구성원(사용자 및 서비스 계정) 목록이 표시되지 않으면 권한 탭을 선택합니다.

  4. 주 구성원별로 보기 목록에서 서비스 계정 항목을 찾습니다. 역할 열에 서비스 계정에 부여된 역할이 나열됩니다.

  5. 서비스 계정에 Monitoring 에이전트에 필요한 역할이 없으면 다음 단계에 따라 서비스 계정 만들기에 설명된 역할을 추가합니다.

    1. 서비스 계정 항목에서  수정을 클릭합니다.
    2. 다른 역할 추가를 클릭하여 누락된 역할을 추가합니다.
    3. 저장을 클릭합니다.

연결된 서비스 계정으로 승인

서비스 계정이 연결된 Compute Engine VM 인스턴스에 설치된 Monitoring 에이전트를 승인하려면 다음을 수행합니다.

  1. VM의 액세스 범위를 확인합니다.

  2. 서비스 계정에 가능한 최소 권한의 IAM 역할을 부여합니다. 필요한 역할은 이 페이지의 서비스 계정 만들기 섹션을 참조하세요.

  3. 에이전트가 실행 중인 VM에 서비스 계정을 연결합니다.

  4. 아직 에이전트를 설치하지 않았다면 설치합니다. 에이전트를 설치하는 방법은 에이전트 설치를 참조하세요.

서비스 계정 키로 승인

서비스 계정 비공개 키를 사용하여 VM 인스턴스에 설치된 Monitoring 에이전트를 승인하려면 다음을 수행합니다.

  1. 로컬 시스템에서 VM 인스턴스로 서비스 계정 키 파일을 전송합니다.

    1. 로컬 시스템에서 서비스 계정 키 파일을 가리키는 환경 변수를 만듭니다. 다음 예시에서는 CREDS라는 변수를 만듭니다.

      CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
      
    2. 다음 표에 표시된 단계를 완료합니다.

      Compute Engine

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

        VM 인스턴스로 이동

        검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Compute Engine인 결과를 선택합니다.

        VM의 INSTANCE_NAMEINSTANCE_ZONE을 확인합니다.

      2. 로컬 시스템에서 Google Cloud CLI 명령어를 실행하여 키 파일을 로컬 시스템에서 VM 인스턴스로 복사합니다.

        REMOTE_USER="$USER"
        INSTANCE="INSTANCE_NAME"
        ZONE="INSTANCE_ZONE"
        gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"
        
      3. Compute Engine 인스턴스에서 서비스 계정 키 파일을 임시 위치에서 영구 위치로 이동합니다. Linux의 경우 root에서만 서비스 계정 키 파일을 읽을 수 있는지 확인합니다.

        에이전트에서 키 파일이 있을 것으로 예상하는 위치는 다음과 같습니다.

        • Linux VM: /etc/google/auth/application_default_credentials.json
        • Linux VM: 환경 변수 GOOGLE_APPLICATION_CREDENTIALS에 저장하는 모든 위치입니다. 에이전트 프로세스에 표시되어야 합니다. 구성 정보는 GOOGLE_APPLICATION_CREDENTIALS 설정을 참조하세요.

        예를 들어 Linux에서 서비스 계정 키 파일을 기본 위치로 이동한 후 적절한 권한을 설정하는 다음 스크립트를 실행할 수 있습니다.

        CREDENTIALS_FILE_LOCATION="/etc/google/auth/application_default_credentials.json"
        sudo mkdir -p /etc/google/auth
        sudo mv "$HOME/temp.json" "$CREDENTIALS_FILE_LOCATION"
        sudo chown root:root "$CREDENTIALS_FILE_LOCATION"
        sudo chmod 0400 "$CREDENTIALS_FILE_LOCATION"
        

      Amazon EC2

      1. VM의 경우 YOUR-INSTANCE'S-IDYOUR-INSTANCE'S-AWS-REGION을 식별합니다.

      2. 로컬 시스템에서 scp를 사용하여 로컬 시스템에서 VM 인스턴스로 서비스 계정 키 파일을 복사합니다.

        KEY="YOUR-SSH-KEY-PAIR-FILE"
        INSTANCE="ec2-YOUR-INSTANCE'S-ID.YOUR-INSTANCE'S-AWS-REGION.compute.amazonaws.com"
        # The remote user depends on the installed OS: ec2-user, ubuntu, root, etc.
        REMOTE_USER="EC2-USER"
        scp -i "$KEY" "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json"
        

        INSTANCE 환경 변수의 값은 EC2 인스턴스가 us-east-1 리전에 없다고 가정합니다. 인스턴스가 us-east-1 리전에 있을 때 INSTANCE 변수를 정의하는 방법은 Amazon에서 정의한 이름 지정 규칙을 참조하세요.

      3. EC2 인스턴스에서 서비스 계정 키 파일을 임시 위치에서 다음 위치 중 하나로 이동하고, Linux의 경우 root에서만 서비스 계정 키 파일을 읽을 수 있는지 확인합니다.

        에이전트에서 키 파일이 있을 것으로 예상하는 위치는 다음과 같습니다.

        • Linux VM: /etc/google/auth/application_default_credentials.json

        • Windows VM: C:\ProgramData\Google\Auth\application_default_credentials.json

        • Linux 및 Windows VM: 환경 변수 GOOGLE_APPLICATION_CREDENTIALS에 저장하는 모든 위치입니다. 에이전트 프로세스에 표시되어야 합니다. 구성 정보는 GOOGLE_APPLICATION_CREDENTIALS 설정을 참조하세요.

        예를 들어 Linux에서 서비스 계정 키 파일을 기본 위치로 이동한 후 적절한 권한을 설정하는 다음 스크립트를 실행할 수 있습니다.

        CREDENTIALS_FILE_LOCATION="/etc/google/auth/application_default_credentials.json"
        sudo mkdir -p /etc/google/auth
        sudo mv "$HOME/temp.json" "$CREDENTIALS_FILE_LOCATION"
        sudo chown root:root "$CREDENTIALS_FILE_LOCATION"
        sudo chmod 0400 "$CREDENTIALS_FILE_LOCATION"
        

  2. 이제 VM 인스턴스에 에이전트에 필요한 서비스 계정 키 파일이 있습니다. 그런 다음 에이전트를 설치하거나 다시 시작합니다.

GOOGLE_APPLICATION_CREDENTIALS 설정

이 섹션에서는 에이전트의 프로세스에 표시되도록 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정하는 방법을 보여줍니다.

Linux

  1. 다음 구성 파일을 수정하거나 파일이 없는 경우 파일을 만듭니다.

    /etc/default/stackdriver-agent
    
  2. 구성 파일에 다음을 추가합니다.

    GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE
    
  3. VM 인스턴스에서 다음 명령어를 실행하여 에이전트를 다시 시작합니다.

    sudo service stackdriver-agent restart
    

Windows

  1. PowerShell에서 다음 명령어를 관리자로 실행하여 운영 에이전트가 사용할 GOOGLE_APPLICATION_CREDENTIALS 시스템 환경 변수를 설정합니다.

    [Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")
    
  2. VM 인스턴스에서 다음 명령어를 실행하여 에이전트를 다시 시작합니다.

    Restart-Service -Name StackdriverMonitoring