직렬 포트 출력 보기

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

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

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

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

시작하기 전에

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

프로젝트 또는 인스턴스 수준 메타데이터를 설정하여 인스턴스가 Stackdriver에 직렬 포트 출력을 전송하도록 할지 여부를 제어할 수 있습니다. 또한 조직 정책을 설정하여 조직의 모든 사용자를 대상으로 이 기능을 사용 중지할 수도 있습니다.

프로젝트 및 인스턴스 메타데이터 설정

Stackdriver에 대한 직렬 포트 출력 로깅이 해당 조직에서 제한되지 않은 경우 메타데이터 serial-port-logging-enabletrue 또는 false로 설정하여 프로젝트 및 개별 VM 인스턴스에 직렬 포트 출력 로깅을 사용 설정하거나 사용 중지할 수 있습니다.

프로젝트 수준에서 serial-port-logging-enabletrue로 설정된 경우 프로젝트의 모든 VM 인스턴스가 해당 설정을 묵시적으로 상속합니다. VM 인스턴스 수준에서 true로 설정된 경우에는 프로젝트 설정에 관계없이 해당 VM에만 사용 설정된 것입니다.

반대로, 프로젝트 또는 인스턴스의 직렬 포트 출력 로깅을 사용 중지하려면 serial-port-logging-enable 메타데이터 값을 false로 설정하세요. 프로젝트 수준에서 이 메타데이터가 false로 설정되면 프로젝트의 모든 인스턴스에서 Stackdriver에 대한 직렬 포트 출력 로깅이 사용 중지됩니다. 인스턴스 수준에서 false로 설정되면 프로젝트 설정에 관계없이 해당 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-enablefalse로 설정하세요.

gcloud compute instances add-metadata instance-name \
    --metadata serial-port-logging-enable=false

제외 필터

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

logName = "projects/project-id/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"

조직 정책 설정

GCP 리소스의 특정 구성을 제한하는 조직 정책을 설정하여 전체 조직에서 Stackdriver에 대한 직렬 포트 출력 로깅을 사용 중지할 수 있습니다. 구체적으로 말해 constraints/compute.disableSerialPortLogging과 같은 부울 제약조건을 설정합니다. 자세한 내용은 조직 정책 만들기 및 관리를 참조하세요.

constraints/compute.disableSerialPortLoggingtrue로 설정하여 직렬 포트 로깅을 사용 중지해도 소급 적용되지 않습니다. Stackdriver에 대한 직렬 포트 로깅을 사용 설정하는 메타데이터가 있는 기존 VM 인스턴스의 경우 이러한 인스턴스의 메타데이터가 재설정되지 않는 한 Stackdriver에 계속 로깅합니다.

이러한 조직 제약조건을 true로 설정한 후에는 조직 내 어느 인스턴스에도 Stackdriver에 대한 직렬 포트 출력 로깅을 사용 설정하도록 인스턴스 또는 프로젝트 메타데이터를 설정할 수 없습니다.

직렬 포트 출력 보기

Console

  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://compute.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. 원하는 경우 모든 로그 수준 드롭다운 메뉴를 확장하여 보려는 심각도 수준 아래에 있는 로그를 숨깁니다. 예를 들어 '정보' 로그 수준을 선택하면 '디버그' 로그 항목이 숨겨집니다. '디버그' 항목은 일반적으로 부팅 시 BIOS에서만 사용합니다.

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

UTF8 이외의 문자 처리

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

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

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

Compute Engine 문서