Como visualizar a saída da porta serial

Uma instância de máquina virtual tem quatro portas seriais virtuais. O sistema operacional da instância, o BIOS e outras entidades no nível do sistema costumam gravar a saída nas portas seriais, o que os torna úteis para solucionar falhas, inicializações com falha, problemas de inicialização ou problemas de desativação.

Nesta página, você saberá sobre os métodos para visualizar a saída da porta serial, incluindo o uso do Stackdriver Logging para reter a saída da porta serial mesmo depois que uma instância for interrompida ou excluída. Se você precisa enviar comandos para uma porta serial enquanto uma instância está em execução, consulte Como interagir com o console serial.

A saída da porta serial pode ser acessada por meio do Console do Cloud, da ferramenta gcloud e da API somente quando a instância da VM estiver em execução, e os registros são limitados ao 1 MB de saída por porta mais recente.

Se você ativar a geração de registros de saída da porta serial para o Stackdriver Logging, os registros serão retidos por 30 dias e o Stackdriver Logging fornecerá os primeiros 50 GB por mês de geração de registros gratuitamente. Consulte preços do Stackdriver Logging para mais detalhes.

Antes de começar

Como ativar e desativar a geração de registros de saída da porta serial

É possível controlar se as instâncias enviam a saída da porta serial para o Stackdriver Logging definindo metadados no nível da instância ou para envolvidos no projeto. Também é possível desativar o recurso para todos os usuários em sua organização definindo uma política da organização.

Como definir metadados de projeto e instância

Se a geração de registros de saída da porta serial para o Stackdriver Logging não for restrita para sua organização, será possível ativá-la ou desativá-la para projetos e instâncias de VM individuais definindo os metadados serial-port-logging-enable como true ou false.

Para envolvidos no projeto, se serial-port-logging-enable estiver definido como true, todas as instâncias de VM no projeto herdarão essa configuração implicitamente. Se estiver definido como true no nível da instância da VM, ele será ativado apenas para essa VM, seja qual for a configuração do projeto.

Por outro lado, para desativar a geração de registros de saída da porta serial para projetos ou instâncias, defina o valor de metadados serial-port-logging-enable como false. Quando esses metadados são definidos como false para envolvidos no projeto, a geração de registros de saída da porta serial para o Stackdriver Logging é desativado para todas as instâncias no projeto. Quando for definido como false no nível da instância, a geração de registros da porta serial será desativada somente para essa VM, seja qual for a configuração do projeto.

É possível definir metadados por meio do Console do Google Cloud, da ferramenta gcloud ou da API. Consulte os detalhes em Como configurar metadados personalizados.

Por exemplo, é possível usar o seguinte comando gcloud para ativar a geração de registros de saída da porta serial para o Stackdriver Logging em uma instância atual. O comando falhará se uma política organizacional impedir essa configuração.

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

Para desativar a geração de registros de saída da porta serial para o Stackdriver Logging, defina serial-port-logging-enable como false.

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

Filtros de exclusão

No Stackdriver Logging, é possível criar um filtro de exclusão para remover entradas de porta serial específicas do Visualizador de registros. Por exemplo, com serial-port-logging-enable=true para envolvidos no projeto, será possível desativar a geração de registros de saída da porta serial para instâncias de VMs específicas com um filtro avançado, como o seguinte:

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"

Como definir uma política da organização

Desative a geração de registros de saída da porta serial para toda a organização configurando uma Política da Organização, que restringe certas configurações de recursos do Google Cloud. Especificamente, defina a seguinte restrição booleana: constraints/compute.disableSerialPortLogging. Consulte Como criar e gerenciar políticas da organização para mais informações.

Desativar a geração de registros da porta serial definindo constraints/compute.disableSerialPortLogging como true não afeta as instâncias de VM atuais com metadados que ativam a geração de registros da porta serial no Stackdriver Logging. Elas continuarão registrando no Stackdriver Logging a menos que você redefina os metadados para essas instâncias.

Depois de definir essa restrição de organização como true, não será possível definir metadados de instância ou projeto para ativar a geração de registros de saída da porta serial no Stackdriver Logging em instâncias da organização.

Como visualizar a saída da porta serial

Console

  1. Acesse a página "Instâncias de VMs".

    Acessar a página "Instâncias de VMs"

  2. Selecione a instância de VM para visualizar a saída da porta serial.
  3. Em Registros, clique em Porta serial 1, 2, 3 ou 4. As entidades no nível do sistema geralmente usam a primeira porta serial (porta 1), que também é conhecida como console serial.

gcloud

Use o comando gcloud instances get-serial-port-output.

gcloud compute instances get-serial-port-output instance-name \
  --port port \
  --start start \
  --zone zone

em que:

  • instance-name é o nome da instância;
  • port é o número da porta (1, 2, 3, ou 4) da qual você quer visualizar a saída. As entidades no nível do sistema geralmente usam a primeira porta serial (porta 1), que também é conhecida como console serial. Por padrão, a saída da primeira porta serial é retornada;
  • start especifica o índice de bytes (base zero) do primeiro byte que você quer retornar. Use essa sinalização se quiser continuar recebendo a saída de uma solicitação anterior que era longa demais para ser retornada em uma tentativa.

API

Na API, crie uma solicitação get para o método instances.getSerialPortOutput.

GET https://compute.googleapis.com/compute/projects/project-id/zones/zone/instances/instance-name/serialPort

Stackdriver Logging

  1. Ative a geração de registros da porta serial para o Stackdriver Logging
  2. Acesse a página "Instâncias de VMs".

    Acessar a página "Instâncias de VMs"

  3. Selecione a instância de VM em que você quer ver os registros do agente de inicialização.
  4. Em Registros, clique em Stackdriver Logging para ver os registros do Stackdriver Logging.

  5. Expanda o menu suspenso Todos os registros e selecione a saída da porta serial que você quer ver. As entidades no nível do sistema geralmente usam a primeira porta serial (porta 1), que também é conhecida como console serial. Se uma porta não for exibida no menu suspenso, ela não terá saída disponível.

  6. Se quiser, expanda o menu suspenso Qualquer nível de registro para desativar os registros que estão abaixo do nível de gravidade que você quer ver. Por exemplo, se você selecionar o nível de registro "Informações", desativará as entradas de registro "Depurar". As entradas "Depurar" são normalmente usadas apenas pelo BIOS no momento da inicialização.

  7. Consulte a documentação do Stackdriver Logging em Como ver registros para mais detalhes, incluindo filtros básicos e avançados.

Como processar caracteres não UTF8

A saída da porta serial é marcada com escape usando o método de código aberto CHexEscape() da Biblioteca C++ do Abseil (links em inglês). Portanto, os caracteres não UTF8 são codificados como strings hexadecimais. É possível usar o método CUnescape() correspondente para ver a saída exata que foi emitida para a porta serial.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine