VM에 디버그 모드를 사용 설정할 수 있습니다. 디버그 모드에서 프로젝트에 대해 소유자, 편집자, App Engine 관리자 역할이 있는 주 구성원은 VM에 대해 루트 액세스 권한을 갖습니다. 디버그 모드가 사용되는 동안 운영체제 업데이트 및 보안 패치 자동 출시는 중지됩니다. 그러나 VM은 계속 부하 분산기 풀에서 외부 요청을 수신합니다.
디버깅을 사용 설정하거나 중지할 때마다 'VM 인스턴스 디버깅 사용 설정/중지' 이벤트가 Google Cloud 콘솔에 표시되고 이벤트가 VM의 /var/log/syslog.log
파일에 로깅됩니다.
디버그 모드 사용 및 중지
gcloud
를 사용하여 인스턴스의 디버그 모드를 사용 설정하거나 중지할 수 있습니다. 인스턴스를 디버깅하려면 해당 역할에 appengine.instances.enableDebug
권한이 있어야 합니다.
gcloud
에서 디버그 모드를 사용 설정 및 중지하려면 다음 안내를 따르세요.
-
다음과 같이 gcloud app instances enable-debug 명령어를 사용하여 특정 인스턴스와 버전의 VM을 디버깅합니다.
PROJECT-ID를 자체 프로젝트 ID로 바꾸고 안내에 따라 디버깅할 인스턴스 버전을 지정합니다.gcloud app --project PROJECT-ID instances enable-debug
-
디버깅을 마치면 다음과 같이 디버그 모드를 중지합니다.
표시되는 메시지에 따라 인스턴스 버전을 지정합니다.gcloud app --project PROJECT-ID instances disable-debug
디버그 모드를 중지하면 VM이 중지되고 앱의 새 인스턴스가 시작되어 새 VM에서 실행됩니다.
인스턴스에 연결
콘솔
콘솔에서 인스턴스에 연결하려면 다음 단계를 따르세요.
프로젝트의 Google Cloud 콘솔 인스턴스 페이지로 이동합니다.
액세스할 인스턴스가 포함된 행의 오른쪽 끝에 있는 SSH를 클릭합니다.
그러면 인스턴스가 디버그 모드로 전환되고 터미널 창에서 인스턴스의 SSH 세션이 열립니다.
다른 옵션을 선택하여 드롭다운 목록에서 SSH 세션을 시작할 수도 있습니다.
이때 사용자는 여러 개의 컨테이너가 실행 중인 인스턴스 호스트에 있습니다. 자세한 내용은 일반적인 컨테이너 이해를 참조하세요.
터미널 창에서 인스턴스에서 실행 중인 컨테이너를 나열합니다.
sudo docker ps
sudo docker ps
명령어 결과에서 각 컨테이너를 행별로 나열합니다. 여기서 프로젝트 ID가 포함된 행을 찾습니다. 이 행이 코드를 실행하고 있는 컨테이너입니다. 이 컨테이너 이름을 확인합니다.필요한 경우 다음을 호출하여 애플리케이션의 로깅 정보를 나열합니다.
sudo docker logs CONTAINER-NAME
코드를 실행 중인 컨테이너에서 셸을 시작합니다.
sudo docker exec -it CONTAINER-NAME /bin/bash
디버깅을 마치면
exit
를 입력하여 컨테이너를 종료한 후exit
를 다시 입력하여 SSH 세션을 종료합니다.인스턴스가 정상적인 작업을 다시 시작하도록 인스턴스의 디버깅을 중지합니다.
gcloud
gcloud를 사용하여 인스턴스에 연결하려면 다음 단계를 따르세요.
디버깅을 사용 설정한 인스턴스에서 다음 명령어를 호출합니다.
gcloud beta app instances --project PROJECT-ID ssh INSTANCE-NAME --service SERVICE --version VERSION
이때 사용자는 여러 개의 컨테이너가 실행 중인 인스턴스 호스트에 있습니다. 자세한 내용은 일반적인 컨테이너 이해를 참조하세요.
터미널 창에서 인스턴스에서 실행 중인 컨테이너를 나열합니다.
sudo docker ps
sudo docker ps
명령어 결과에서 각 컨테이너를 행별로 나열합니다. 여기서 프로젝트 ID가 포함된 행을 찾습니다. 이 행이 코드를 실행하고 있는 컨테이너입니다. 이 컨테이너 이름을 확인합니다.필요한 경우 다음을 호출하여 애플리케이션의 로깅 정보를 나열합니다.
sudo docker logs CONTAINER-NAME
코드를 실행 중인 컨테이너에서 셸을 시작합니다.
docker exec -it CONTAINER-NAME /bin/bash
디버깅을 마치면
exit
를 입력하여 컨테이너를 종료한 후exit
를 다시 입력하여 SSH 세션을 종료합니다.인스턴스가 정상적인 작업을 다시 시작하도록 인스턴스의 디버깅을 중지합니다.
일반적인 컨테이너 이해
인스턴스에는 애플리케이션 코드를 실행하는 컨테이너 외에 다음과 같은 컨테이너도 있을 수 있습니다.
컨테이너 및 소스 코드 | 설명 |
---|---|
cloud-sql | Cloud SQL 인스턴스에 대한 보안 연결을 보장합니다. |
fluentd_logger | Logging 에이전트 |
nginx_proxy | 애플리케이션에 대한 요청을 프록시합니다. |
opentelemetry-collector | 원격 분석 데이터를 수신 및 처리하고 내보냅니다. |
stackdriver-monitoring-agent | 시스템 정보를 수집, 저장, 모니터링합니다. |
이러한 사이드카 컨테이너는 예고 없이 변경될 수 있습니다.