2021년 State of DevOps 설문조사에 참여하여 소프트웨어 작업의 미래를 설계하고 의견을 들려주세요.

Google Cloud 외부에서 실행되는 애플리케이션 프로파일링

이 페이지에서는 Google Cloud 외부에서 실행되는 애플리케이션을 프로파일링하는 방법을 설명합니다.

이 시나리오에서는 애플리케이션과 Cloud Profiler 에이전트가 Google Cloud 외부에서 실행되지만 Cloud Profiler 인터페이스를 사용하여 프로파일링 데이터를 분석합니다.

Profiler 인터페이스를 사용하여 프로파일링 데이터를 분석하려면 Google Cloud 프로젝트가 필요합니다. 외부에서 실행 중인 프로파일링 에이전트는 분석용 프로필을 다시 보낼 수 있어야 합니다. 이 기능을 사용 설정하려면 다음을 수행해야 합니다.

  1. Google Cloud 프로젝트를 만들고 API를 사용 설정합니다.
  2. 프로필을 업로드할 때 사용할 프로파일링 에이전트의 사용자 인증 정보를 가져옵니다.
  3. Google Cloud 프로젝트의 사용자 인증 정보와 ID를 사용하도록 에이전트를 구성합니다.

Google Cloud 프로젝트 만들기

Google Cloud Console의 프로젝트 선택기 페이지에서 프로젝트 만들기를 클릭하여 새 Google Cloud 프로젝트를 만듭니다.

프로젝트 선택기로 이동

Profiler API 사용 설정

새 프로젝트의 Cloud Console 페이지에서 API 및 서비스 페이지로 이동합니다.

  1. API 및 서비스 대시보드로 이동합니다.

    API 및 서비스로 이동

  2. API 및 서비스 추가 버튼을 클릭합니다.

    API 및 서비스 추가

  3. Profiler API를 검색합니다.

  4. 검색결과에서 Cloud Profiler API를 선택합니다.

  5. API 사용 설정됨이 표시되어 있으면 API가 이미 사용 설정된 것입니다. 그렇지 않으면 사용 설정 버튼을 클릭합니다.

에이전트의 사용자 인증 정보 가져오기

에이전트에서 사용할 사용자 인증 정보를 가져오는 방법은 2가지입니다.

  • 에이전트가 비공개 키 인증으로 서비스 계정을 사용하도록 합니다.
  • 에이전트가 애플리케이션 기본 사용자 인증 정보(ADC)를 사용하도록 합니다.

서비스 계정 사용

에이전트가 비공개 키 인증으로 서비스 계정을 사용하도록 하려면 다음을 수행해야 합니다.

  1. 서비스 계정을 만듭니다. 예를 들어 다음 Cloud SDK 명령어를 사용합니다.

    gcloud iam service-accounts create MY_SVC_ACCT_ID --display-name "my service account"
    

    자세한 내용은 서비스 계정 만들기를 참조하세요.

  2. 서비스 계정이 프로파일링 데이터를 기록할 수 있도록 서비스 계정에 roles/cloudprofiler.agent 역할을 부여합니다. 예를 들어 다음 Cloud SDK 명령어를 사용합니다.

     gcloud projects add-iam-policy-binding GCP_PROJECT_ID \
         --member serviceAccount:MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com \
         --role roles/cloudprofiler.agent
    

    자세한 내용은 서비스 계정에 역할 부여를 참조하세요.

  3. 서비스 계정의 JSON 키를 만듭니다. 예를 들어 다음 Cloud SDK 명령어를 사용합니다.

     gcloud iam service-accounts keys create \
         ~/key.json \
         --iam-account MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com
    

    자세한 내용은 서비스 계정 키 만들기를 참조하세요.

  4. 프로파일링 에이전트가 실행될 머신에서 다음을 수행합니다.

    1. 방금 만든 JSON 키가 포함된 파일의 복사본을 저장합니다.
    2. GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 JSON 키가 포함된 파일의 정규화된 이름으로 설정합니다. 이 환경 변수는 프로파일링 에이전트를 실행 중인 프로세스에 표시되어야 하므로 스크립트 또는 Dockerfile을 사용하여 프로세스를 실행할 경우 스크립트 또는 Dockerfile에 환경 변수를 포함합니다.

애플리케이션 기본 사용자 인증 정보 사용

에이전트가 애플리케이션 기본 사용자 인증 정보를 사용하도록 하려면 웹 흐름을 통해 사용자 액세스 인증 정보를 가져와서 애플리케이션 기본 사용자 인증 정보 라이브러리에서 요구하는 위치에 저장합니다. 이러한 사용자 인증 정보는 서비스 계정의 프록시 역할을 합니다.

애플리케이션 기본 사용자 인증 정보를 사용하려면 다음 Cloud SDK 명령어를 실행합니다.

 gcloud auth application-default login

그리고 이 명령어가 안내하는 단계를 따릅니다.

에이전트를 Google Cloud 프로젝트에 연결

프로파일링 에이전트는 Google Cloud 프로젝트의 ID를 지정하여 프로필을 업로드할 수 있도록 구성되어야 합니다. 이 작업의 메커니즘은 언어별로 다릅니다.

Go

Go 애플리케이션 프로파일링에 설명된 profiler.Config 객체에 추가 매개변수 ProjectID를 지정합니다.

 profiler.Config{ProjectID: "GCP_PROJECT_ID", ...}

자바

자바 호출에 추가 자바 에이전트 구성 플래그 cprof_project_id를 지정합니다.

 -cprof_project_id=GCP_PROJECT_ID

애플리케이션이 Compute Engine 메타데이터 서버에 액세스할 수 없으면 다음과 같은 메시지가 표시됩니다.

     Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
이러한 메시지를 중지하려면 에이전트 구성 플래그에 -cprof_zone_name=VALUE를 추가하고 애플리케이션을 다시 시작합니다. 이 시나리오에서는 VALUE를 'test'와 같이 내용을 알 수 있는 문자열로 바꿉니다.

Node.js

Node.js 애플리케이션 프로파일링에 설명된 serviceContext 객체에 추가 매개변수 projectID를 지정합니다.

projectId: 'GCP_PROJECT_ID',
serviceContext: {
  ...
}

Python

Python 애플리케이션 프로파일링에 설명된 start 메서드 호출에서 추가 매개변수 project_id를 지정합니다.

googlecloudprofiler.start(..., project_id='GCP_PROJECT_ID')

다음 단계

Profiler 그래프와 컨트롤에 대한 자세한 내용은 Cloud Profiler 인터페이스 사용을 참조하세요. 고급 정보는 다음을 참조하세요.