직렬 포트 출력 보기

가상 머신 인스턴스에는 4개의 가상 직렬 포트가 있습니다. 인스턴스의 운영체제, BIOS, 기타 시스템 수준 항목은 종종 직렬 포트에 출력을 쓰므로 직렬 포트는 비정상 종료, 부팅 실패, 시작 문제 또는 종료 문제 해결에 유용합니다.

이 페이지에서는 인스턴스가 중지되거나 삭제된 후에도 Stackdriver Logging을 사용하여 직렬 포트 출력을 보관하는 방법을 포함하여 직렬 포트 출력을 보는 방법을 설명합니다. 인스턴스가 실행 중일 때 직렬 포트에 명령어를 전송해야 하는 경우, 직렬 콘솔과 상호작용을 참조하세요.

직렬 포트 출력은 GCP Console, gcloud 도구, API를 통해 액세스할 수 있으며, VM 인스턴스가 실행 중이고, 로그가 포트당 최근 1MB 출력으로 제한된 경우에만 액세스할 수 있습니다.

Stackdriver에 직렬 포트 출력 로깅을 사용 설정하면 기본적으로 30일 동안 로그가 보관되며, Stackdriver는 매달 첫 50GB의 로깅을 무료로 제공합니다. 자세한 내용은 Stackdriver 가격 책정을 참조하세요.

시작하기 전에

Stackdriver에 직렬 포트 로깅 사용 설정 및 사용 중지

이 기능을 사용 설정하려면 serial-port-logging-enable 메타데이터 속성을 true로 설정하세요. 이 키-값 메타데이터가 프로젝트 수준에서 설정되면 프로젝트의 모든 인스턴스에 대해 Stackdriver에 직렬 포트 출력 로깅이 사용 설정됩니다. VM 인스턴스 수준에서 설정되면 프로젝트 설정에 관계없이 해당 VM에 대해서만 사용 설정됩니다.

Google Cloud Platform Console, gcloud 도구 또는 API를 통해 커스텀 메타데이터를 설정할 수 있습니다. 전체 세부 사항은 커스텀 메타데이터 설정을 참조하세요.

예를 들어 다음 gcloud 명령어를 사용하여 기존 인스턴스에 대해 Stackdriver에 직렬 포트 출력 로깅을 사용 설정할 수 있습니다.

gcloud compute instances add-metadata [INSTANCE_NAME] \
    --metadata serial-port-logging-enable=true

Stackdriver에 직렬 포트 출력 로깅을 사용 중지하려면 serial-port-logging-enable을 false로 설정하세요.

gcloud compute instances add-metadata [INSTANCE_NAME] \
    --metadata serial-port-logging-enable=false

또는 Stackdriver 안에서 제외 필터를 만들어 특정 직렬 포트 항목을 로그 뷰어에서 제거할 수 있습니다. 예를 들어 프로젝트 수준에서 serial-port-logging-enable=true로 설정된 상태에서 다음과 같은 고급 필터를 사용하여 특정 VM 인스턴스에 대해 직렬 포트 출력 로깅을 사용 중지할 수 있습니다.

logName = "projects/google.com:serial-output-logging-demo/logs/serialconsole.googleapis.com%2Fserial_port_1_output"
resource.type = "gce_instance"
resource.labels.instance_id != "[INSTANCE_1_ID]"
resource.labels.instance_id != "[INSTANCE_2_ID]"

직렬 포트 출력 보기

콘솔

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 직렬 포트 출력을 보려는 VM 인스턴스를 선택합니다.
  3. 로그에서 직렬 포트 1, 2, 3 또는 4를 클릭합니다. 시스템 수준 항목은 일반적으로 직렬 콘솔이라고도 하는 첫 번째 직렬 포트(포트 1)를 사용합니다.

gcloud

gcloud instances get-serial-port-output 명령어를 사용하세요.

gcloud compute instances get-serial-port-output [INSTANCE_NAME] \
  --port [PORT] \
  --start [START] \
  --zone [ZONE]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 인스턴스의 이름입니다.
  • [PORT]는 출력을 보려는 포트의 번호(1, 2, 3 또는 4)입니다. 시스템 수준 항목은 일반적으로 직렬 콘솔이라고도 하는 첫 번째 직렬 포트(포트 1)를 사용합니다. 기본적으로 첫 번째 직렬 포트의 출력이 반환됩니다.
  • [START]는 반환되기를 원하는 첫 번째 바이트의 바이트 색인(0부터 시작)을 지정합니다. 너무 길어서 한 번에 반환할 수 없는 이전 요청의 출력을 계속 받으려면 이 플래그를 사용하세요.

API

API에서 instances.getSerialPortOutput 메소드에 대한 get 요청을 만듭니다.

GET https://www.googleapis.com/compute/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/serialPort

Stackdriver

  1. Stackdriver에 직렬 포트 로깅을 사용 설정합니다.
  2. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  3. 시작 에이전트 로그를 보려는 VM 인스턴스를 선택합니다.
  4. 로그에서 Stackdriver Logging을 클릭하여 Stackdriver 로그를 봅니다.

  5. 모든 로그 드롭다운 메뉴를 펼치고 보려는 직렬 포트 출력을 선택합니다. 시스템 수준 항목은 일반적으로 직렬 콘솔이라고도 하는 첫 번째 직렬 포트(포트 1)를 사용합니다. 드롭다운 메뉴에 포트가 나타나지 않으면 사용할 수 있는 출력이 없는 것입니다.

  6. 기본 필터링과 고급 필터링을 비롯한 자세한 내용은 로그 보기에 대한 Stackdriver 문서를 참조하세요.

UTF8 이외의 문자 처리

직렬 포트 출력은 오픈소스 Abseil C++ 라이브러리의 CHexEscape() 메소드를 사용하여 이스케이프 처리되므로 UTF8 이외의 문자는 16진수 문자열로 인코딩됩니다. 해당 CUnescape() 메소드를 사용하여 직렬 포트로 내보낸 정확한 출력을 얻을 수 있습니다.

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

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

Compute Engine 문서