Usar o Cloud Logging com o SO otimizado para contentores

O SO otimizado para contentores inclui um agente de registo que exporta alguns registos do sistema e do contentor para o Cloud Logging. Até ao SO otimizado para contentores 101, as imagens do SO otimizado para contentores baseadas em x86 usavam um agente de registo em contentores baseado no fluentd. O SO otimizado para contentores 105 começou a ser enviado com uma implementação de agente de registo alternativa, o fluent-bit. A partir do SO otimizado para contentores 109, o agente de registo fluent-bit é o predefinido. O agente de registo antigo, o fluentd, vai ser removido no SO otimizado para contentores 113.

Todas as versões de imagens do SO otimizado para contentores baseadas em ARM incluem o agente de registo fluent-bit.

Ative o agente de registo

O agente de registo está desativado por predefinição. Pode ativar esta funcionalidade quando criar uma nova instância ou atualizar uma instância existente.

Requisitos de acesso

O Cloud Logging fornece funções do IAM que pode usar para conceder o acesso adequado. Para ver os seus registos num projeto, tem de ter a função roles/logging.viewer e as aplicações têm de ter autorização para escrever registos. Pode conceder esta autorização atribuindo a função de IAM roles/logging.logWriter à conta de serviço de uma aplicação.

Para mais informações sobre autorizações e funções, consulte o artigo Funções predefinidas.

Crie uma instância com um agente de registo ativado

Consola

Para executar uma instância do Compute Engine no SO otimizado para contentores com o agente de registo fluent-bit ativado, faça o seguinte:

  1. Abra a página de criação de instâncias do Compute Engine na Google Cloud consola.

    Crie uma nova instância do Compute Engine

  2. Especifique um nome para a instância.

  3. Na secção Disco de arranque, selecione uma imagem do SO otimizado para contentores.

  4. Clique em Gestão, segurança, discos, trabalhar em rede, arrendamento único para expandir as opções adicionais.

  5. No separador Gestão, desloque a página até à secção Metadados. Adicione uma nova entrada de metadados com Key como google-logging-enabled e Value como true.

  6. Opcionalmente, especifique outras opções para o seu exemplo de utilização. Consulte o artigo Criar e configurar instâncias para ver mais detalhes.

  7. Clique em Criar para criar e arrancar a instância.

gcloud

Para executar uma instância do Compute Engine no SO otimizado para contentores com o agente de registo ativado, use o comando gcloud compute instances create e inclua google-logging-enabled=true nos metadados. Por exemplo:

gcloud compute instances create instance-name \
    --image image-name \
    --image-project cos-cloud \
    --zone compute-zone \
    --metadata google-logging-enabled=true

Substitua o seguinte:

  • instance-name: o nome da sua instância de VM.
  • image-name: o nome da imagem do SO otimizado para contentores para a instância. Por exemplo, --image=cos-113-18244-85-29.
  • compute-zone: a zona de computação da sua instância.

Para mais informações sobre o comando gcloud, consulte a documentação de referência gcloud compute instances create. Para mais detalhes sobre a criação de instâncias do SO otimizado para contentores, consulte o artigo Criar e configurar instâncias.

Selecionar o agente de registos

As imagens do SO otimizado para contentores 105 e 109 baseadas em x86 são enviadas com duas implementações do agente de registo: fluentd (antigo) e fluent-bit. O SO otimizado para contentores 105 usa o fluentd por predefinição e o SO otimizado para contentores 109 usa o fluent-bit por predefinição. Pode usar a entrada de metadados google-logging-use-fluentbit para alterar o comportamento predefinido.

Para usar o agente de registo fluent-bit no SO otimizado para contentores 105, defina o valor de google-logging-use-fluentbit como true.

Para usar o agente de registo fluentd no SO otimizado para contentores 109, defina o valor de google-logging-use-fluentbit como false.

Ative o agente de registo nos metadados do projeto

A partir da milestone 97, o registo pode ser ativado nos metadados do projeto:

  gcloud compute project-info add-metadata \
    --metadata google-logging-enabled=true

Registos de acesso

Consola

  1. Aceda à página de instâncias de VM.

    Aceda à página de instâncias de VM

  2. Clique no nome da instância do SO otimizado para contentores a partir da qual quer aceder aos registos.

  3. Na secção Registos, clique em Cloud Logging.

  4. Esta ação abre o Explorador de registos para a instância especificada. Para mais informações, consulte o artigo Usar o Explorador de registos.

gcloud

Para aceder aos registos, use o comando gcloud logging read. Por exemplo:

gcloud logging read \
"resource.type=gce_instance AND resource.labels.instance_id=instance-id" \
    --limit 10 \
    --format json \
    --freshness 30d

Substitua o seguinte:

  • instance-id: o ID da sua instância de VM.

Este comando tenta ler registos da instância de VM com instance-id, limitando-se a 10 registos, no formato JSON, dos últimos 30 dias.

Para mais informações sobre o comando gcloud, consulte a documentação de referência gcloud logging read.

Como funciona?

O agente de registo está configurado por predefinição para enviar registos de determinados serviços críticos do sistema e contentores de aplicações do utilizador para o back-end do Cloud Logging. Por exemplo, registos de contentores Docker, serviços systemd selecionados, registos de auditoria, erros de registo do jornal, etc. Consulte a origem de configuração específica do SO otimizado para contentores (imagens x86 e imagens Arm) para a configuração de registo predefinida completa.

Para imagens x86 do Container-Optimized OS 105 e mais antigas, o agente de registo é o agente de registo antigo contentorizado do Google Cloud Observability. O comando docker que inicia o agente de registo está definido na origem do SO otimizado para contentores para o serviço systemd stackdriver-logging. A versão do agente em contentores que está a ser executada é definida no diretório app-admin/stackdriver da app de origem do SO otimizado para contentores.

Para imagens Arm de todas as versões e imagens x86 para o SO otimizado para contentores 109 e posteriores, o agente de registo é um pacote de SO incorporado denominado fluent-bit. O agente está integrado no SO e é atualizado juntamente com as imagens do SO.

Limitações conhecidas

Compatibilidade com o controlador gcplogs

A partir da milestone 89, se o agente de registo incluído no SO otimizado para contentores estiver ativado e o controlador de registo do Docker gcplogs estiver ativado para um ou mais contentores, o agente de registo incluído pode gerar um número excessivo de registos de aviso. Isto pode criar ruído de registo e/ou aumentar os encargos relacionados com o Cloud Logging.

Uma solução alternativa é não usar o gcplogs como um controlador de registo do Docker e, em vez disso, usar o controlador predefinido conforme configurado pelo SO otimizado para contentores. Tenha em atenção que o agente de registo incluído no SO otimizado para contentores exporta registos de contentores para o Cloud Logging, pelo que não é necessário usar ambas as soluções em simultâneo.

Compatibilidade da configuração do agente de registos

O agente de registo é um contentor baseado no fluentd em imagens do SO otimizado para contentores baseadas em x86 e um binário fluent-bit em imagens do SO otimizado para contentores baseadas em Arm. As configurações dos dois agentes não são compatíveis. Isto não é um problema se depender apenas da configuração de registo predefinida incorporada nas imagens do SO. No entanto, se tiver uma configuração de registo personalizada, pode ter problemas ao migrar cargas de trabalho para imagens baseadas numa arquitetura diferente ou para uma versão mais recente do SO otimizado para contentores.

Referências

  • Documentação do agente Logging antigo do Google Cloud Observability. O agente de registo em contentores incluído no SO otimizado para contentores é um subconjunto do agente de registo antigo, pelo que esta documentação pode fornecer contexto sobre o agente de forma mais geral, fora do âmbito do SO otimizado para contentores.
  • Documentação do Google Cloud Observability. Página inicial da documentação do Google Cloud Observability; pode ser útil para contexto.