워크로드 모니터링 및 디버깅


워크로드를 빌드, 테스트, 실행할 때 진행 상황을 모니터링하여 문제를 디버그하는 것이 유용할 수 있습니다. 다음 도구를 사용하여 모니터링 및 디버깅할 수 있습니다.

  • Cloud Logging: Confidential Space 워크로드 문제 해결의 첫 번째 단계로 STDOUTSTDERR를 Cloud Logging으로 리디렉션한 후 워크로드 반환 코드를 확인하여 실패가 발생한 위치를 확인할 수 있습니다.

  • 디버그 Confidential Space 이미지: 디버그 Confidential Space 이미지는 워크로드가 완료된 후 워크로드를 실행하는 컨피덴셜 VM을 작동 상태로 유지하고 SSH 서버를 실행합니다. 이렇게 하면 원격으로 VM에 로그인하여 문제를 진단할 수 있습니다. 코드가 예상대로 작동한다고 확신할 때까지는 디버그 이미지를 사용하는 것이 좋습니다. 민감한 프로덕션 데이터 작업을 시작할 때는 프로덕션 Confidential Space 이미지로 전환하세요.

  • 메모리 사용량 모니터링: Cloud Logging 또는 측정항목 탐색기에서 워크로드의 메모리 사용량을 볼 수 있습니다. 메모리 사용량을 추적하려면 워크로드 작성자가 허용하고 워크로드 운영자가 사용 설정해야 합니다.

  • 대화형 셸: SSH를 사용하여 워크로드 컨피덴셜 VM에 연결한 후 sudo ctr task exec -t --exec-id shell tee-container bash 명령어를 사용하여 컨테이너 내에서 대화형 셸을 입력하여 워크로드 문제를 진단할 수 있습니다.

로깅

모든 명령줄 프로그램과 마찬가지로 워크로드 STDOUTSTDERR은 콘솔에 표시할 수 있습니다. 워크로드 운영자가 Confidential Space VM에서 tee-container-log-redirect 메타데이터 키를 true 또는 cloud_logging로 설정하고 워크로드를 실행하는 서비스 계정이 logging.logWriter 역할을 갖도록 함으로써 Cloud Logging으로 리디렉션할 수도 있습니다.

리디렉션은 워크로드 작성자가 log_redirect 실행 정책을 사용하여 방지할 수 있습니다.

위험 프로필을 줄이려면 최소한의 정보만 로깅하고 민감한 정보는 로깅하지 마세요.

Confidential Space 로그 보기

Confidential Space VM에 연결된 서비스 계정에 logging.logWriter 역할이 부여되고 로그를 Cloud Logging으로 리디렉션한 경우 VM 로그를 확인하여 오류를 문제 해결할 수 있습니다.

  1. Google Cloud 콘솔의 워크로드 운영자 프로젝트에서 로깅으로 이동합니다.

    Logging으로 이동

  2. 쿼리 탭 옆에 있는 시간 범위를 클릭하여 확인할 로깅 기간을 설정합니다.

  3. 사용 가능한 경우 다음 로그 필드로 로그를 필터링합니다.

    • 리소스 유형: VM 인스턴스

    • 인스턴스 ID: 컨피덴셜 VM의 인스턴스 ID

    • 로그 이름: confidential-space-launcher

  4. 오류 메시지를 읽고 문제가 무엇인지 확인합니다. 리소스가 올바르게 설정되지 않았거나, 데이터 공동작업자의 WIP 제공자의 속성 조건이 Confidential Space 워크로드에서 수행된 클레임과 일치하지 않거나, 워크로드 자체에 오류가 있을 수 있습니다.

반환 코드

반환 코드는 런처와 워크로드를 실행할 때 콘솔에 표시되며 Cloud Logging으로 리디렉션될 수 있습니다.

반환 코드는 다음 표에 설명되어 있습니다.

코드 정의 VM 중지 동작
0 프로덕션 이미지를 사용할 때 워크로드가 성공적으로 완료됨 워크로드가 완료되면 VM이 중지됩니다.
1 프로덕션 이미지를 사용할 때 워크로드 또는 런처가 오류를 반환함 VM이 오류를 반환한 후 중지됩니다.
3 tee-restart-policy로 인한 실패 후 런처가 다시 시작됨 VM이 다시 시작됩니다.
4 디버그 이미지를 사용할 때 워크로드 또는 런처 실행이 완료되었고, 이제 VM이 유휴 상태임 워크로드가 완료되거나 오류가 반환된 후 VM이 중지되지 않습니다. 이렇게 하면 SSH를 통해 워크로드를 디버그할 수 있습니다.

워크로드가 실패하면 워크로드 운영자는 추가 컨텍스트 없이 workload finished with a non-zero return code 메시지만 수신합니다. 프로덕션 이미지의 경우 tee-restart-policy=OnFailure를 사용하여 실패 시 런처를 다시 시작하도록 설정할 수 있습니다.