Python용 Stackdriver Debugger 설정

App Engine 표준 환경

Python 2.7을 사용 중인 경우 기본적으로 디버거가 사용 설정되며 구성할 필요가 없습니다.

Python 3.7을 사용 중인 경우 App Engine 가변형 환경 안내에 따라 디버거 에이전트를 수동으로 사용 설정해야 합니다.

GCP Console의 디버그 페이지에는 앱 소스 코드와 일치하는 배포된 파일이 자동으로 표시됩니다. 소스 코드 일치에 대한 자세한 내용은 소스 코드 자동으로 선택을 참조하세요.

App Engine 가변형 환경

App Engine Python 런타임 또는 커스텀 런타임에서 디버거를 사용할 수 있습니다.

  1. App Engine 가변형 VM 인스턴스가 실행 중인지 확인합니다.

    • 64비트 Debian Linux 이미지
    • Python 2.7 또는 3.6
  2. app.yaml 파일에 다음 줄이 포함되어 있는지 확인합니다.

    runtime: python
    env: flex
    
    # The Python runtime uses Python 3.6 by default.
    # To use Python 2.7 add the following lines.
    # runtime_config:
    #   python_version: 2
    

    커스텀 런타임을 사용 중인 경우 runtime: custom을 사용하세요.

  3. google-python-cloud-debuggerrequirements.txt에 추가합니다.

  4. main 함수와 같은 초기화 코드에 가능한 빨리 다음 줄을 추가합니다. Django 웹 프레임워크(버전 1.*만 해당)를 사용할 경우 manage.py에 추가합니다.

    try:
      import googleclouddebugger
      googleclouddebugger.enable()
    except ImportError:
      pass
    

이제 디버거를 앱에서 사용할 수 있습니다.

GCP Console의 디버그 페이지에 배포된 앱과 일치하는 소스 코드를 자동으로 표시하려면 소스 코드 자동으로 선택을 참조하세요.

GKE

  1. 클러스터가 다음 액세스 범위 중 하나로 만들어졌는지 확인합니다.

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger

    예:

    gcloud container clusters create EXAMPLE-CLUSTER-NAME \
        --scopes https://www.googleapis.com/auth/cloud-platform
    
  2. Compute Engine 안내를 따릅니다.

Compute Engine

  1. Compute Engine VM 인스턴스가 실행 중인지 확인합니다.

    • 64비트 Debian Linux 이미지
    • Python 2.7 또는 3.7
  2. Compute Engine VM 인스턴스가 액세스 범위의 선택사항인 모든 Cloud APIs에 대한 전체 액세스 허용으로 만들어졌거나 다음 액세스 범위 중 하나인지 확인합니다.

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger
  3. 디버거 에이전트를 다운로드합니다.

    pip를 사용하면 Python Stackdriver Debugger를 가장 간편하게 설치할 수 있습니다.

    pip install google-python-cloud-debugger
    
  4. main 함수와 같은 초기화 코드에 가능한 빨리 다음 줄을 추가합니다. Django 웹 프레임워크를 사용할 경우 manage.py에 추가합니다.

    try:
      import googleclouddebugger
      googleclouddebugger.enable(
        module='[MODULE]',
        version='[VERSION]'
      )
    except ImportError:
      pass
    

    또는... 코드를 변경할 수 없으면 Debugger 에이전트를 모듈로 실행합니다.

    python -m googleclouddebugger \
          --module=[MODULE] \
          --version=[VERSION] \
          -- \
          myapp.py
    

    두 경우 모두에서 각 항목의 의미는 다음과 같습니다.

    • [MODULE]은 앱 이름입니다.
      GCP Console 디버그 페이지에서 버전과 함께 디버그 대상을 식별하는 데 사용됩니다.
      예: MyApp, Backend, Frontend
    • [VERSION]은 앱 버전(예: 빌드 ID)입니다.
      GCP Console 디버그 페이지는 실행 중인 버전을 [MODULE] - [VERSION]으로 표시합니다.
      값 예: v1.0, build_147, v20170714

이제 디버거를 앱에서 사용할 수 있습니다.

GCP Console의 디버그 페이지에 배포된 앱과 일치하는 소스 코드를 자동으로 표시하려면 소스 코드 자동으로 선택을 참조하세요.

로컬 및 기타 위치

  1. 워크스테이션이 실행 중인지 확인합니다.

    • 64비트 Debian Linux 이미지
    • Python 2.7 또는 3.7
  2. 디버거 에이전트를 다운로드합니다.

    pip를 사용하면 Python Stackdriver Debugger를 가장 간편하게 설치할 수 있습니다.

    pip install google-python-cloud-debugger
    
  3. 서비스 계정 사용자 인증 정보를 다운로드합니다.
    Google Cloud Platform에서 호스팅되지 않은 머신에서 Python용 Stackdriver Debugger 에이전트를 사용하려면 에이전트에서 GCP 서비스 계정 사용자 인증 정보를 사용하여 Stackdriver Debugger Service에 인증해야 합니다.

    GCP Console 서비스 계정 페이지를 사용하여 기존 또는 새 서비스 계정의 사용자 인증 정보 파일을 만듭니다. 서비스 계정에는 Stackdriver Debugger Agent 이상의 역할이 있어야 합니다.

    서비스 계정 JSON 파일을 Python용 Stackdriver Debugger 에이전트와 함께 저장합니다.

  4. main 함수와 같은 초기화 코드에 가능한 빨리 다음 줄을 추가합니다. Django 웹 프레임워크를 사용할 경우 manage.py에 추가합니다.

    try:
      import googleclouddebugger
      googleclouddebugger.enable(
          module='[MODULE]',
          version='[VERSION]'
          service_account_json_file='/opt/cdbg/gcp-svc.json')
    except ImportError:
      pass
    

    또는... 코드를 변경할 수 없으면 Debugger 에이전트를 모듈로 실행합니다.

    python \
        -m googleclouddebugger \
        --module=[MODULE] \
        --version=[VERSION] \
        --service_account_json_file=/opt/cdbg/gcp-svc.json \
        -- \
        myapp.py
    

    두 경우 모두에서 각 항목의 의미는 다음과 같습니다.

    • [MODULE]은 앱 이름입니다.
      GCP Console 디버그 페이지에서 버전과 함께 디버그 대상을 식별하는 데 사용됩니다.
      예: MyApp, Backend, Frontend
    • [VERSION]은 앱 버전(예: 빌드 ID)입니다.
      GCP Console 디버그 페이지는 실행 중인 버전을 [MODULE] - [VERSION]으로 표시합니다.
      값 예: v1.0, build_147, v20170714
    • service_account_json_file을 지정하는 대신 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 사용할 수 있습니다.

이제 디버거를 앱에서 사용할 수 있습니다.

GCP Console의 디버그 페이지는 로컬 개발용 로컬 소스 파일을 업로드하지 않고 표시할 수 있습니다. 소스 코드 수동으로 선택을 참조하세요.

문제해결

google-python-cloud-debugger Python 패키지에는 python2.7-dev Linux 패키지와 setuptoolswheel Python 패키지가 필요합니다. 이러한 패키지는 일반적으로 모든 권장 종속 항목과 pip를 설치할 때 함께 설치되지만 일부가 누락되면 다음 오류가 발생할 수 있습니다.

  1. ImportError: No module named setuptools

    setuptools Python 패키지를 설치해야 합니다(예: pip install setuptools).

  2. invalid command 'bdist_wheel' 또는 Failed building wheel for '...'

    wheel Python 패키지를 설치해야 합니다(예: pip install wheel).

  3. ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

    python2.7-dev Linux 패키지를 설치해야 합니다(예: apt-get install python2.7-dev).

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Stackdriver Debugger 문서