Como usar o Cloud Logging com o Container-Optimized OS

O Container-Optimized OS inclui um agente de registro que exporta alguns registros do sistema e do contêiner para o Cloud Logging. Até o Container-Optimized OS 101, as imagens do Container-Optimized OS baseadas em x86 usavam um agente de registro de contêineres baseado no fluentd. O Container-Optimized OS 105 começou a enviar uma implementação alternativa do agente de geração de registros, o fluent-bit. A partir do Container-Optimized OS 109, o agente de geração de registros do fluent-bit é o padrão. O agente de registro legada, fluentd, será removido no Container-Optimized OS 113.

Todas as versões das imagens do Container-Optimized OS baseadas em Arm enviam o agente de registro fluent-bit.

Ativar o agente do Logging

O agente do Logging está desativado por padrão. É possível ativar esse recurso ao criar uma nova instância ou atualizar uma instância existente.

Requisitos de acesso

O Cloud Logging fornece papéis do IAM que você pode usar para conceder o acesso apropriado. Para conferir seus registros em um projeto, é necessário ter a função roles/logging.viewer e os aplicativos precisam ter permissão para gravar registros. Para conceder essa permissão, atribua o papel do IAM roles/logging.logWriter à conta de serviço de um aplicativo.

Para mais informações sobre permissões e papéis, consulte Papéis predefinidos.

Criar uma instância com um agente de registro ativado

Console

Para executar uma instância do Compute Engine no Container-Optimized OS com o agente de registro do fluent-bit ativado, faça o seguinte:

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

    Crie uma nova instância do Compute Engine

  2. Especifique um Nome para sua instância.

  3. Na seção Disco de inicialização, selecione uma imagem do Container-Optimized OS.

  4. Clique em Gerenciamento, segurança, discos, rede, locatário único para expandir outras opções.

  5. Na guia Gerenciamento, role até a seção Metadados. Adicione uma nova entrada de metadados, com Chave como google-logging-enabled e Valor como true.

  6. Se quiser, especifique qualquer outra opção para seu caso de uso. Consulte Como criar e configurar instâncias para mais detalhes.

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

gcloud

Para executar uma instância do Compute Engine no Container-Optimized OS com o agente de registro ativado, use o comando gcloud compute instances create e inclua google-logging-enabled=true nos metadados. Exemplo:

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

Substitua:

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

Para mais informações sobre o comando gcloud, consulte a documentação de referência de gcloud compute instances create. Para mais detalhes sobre como criar instâncias do Container-Optimized OS, consulte Como criar e configurar instâncias.

Como selecionar o agente de registro

As imagens do Container-Optimized OS 105 e 109 baseadas em x86 enviam duas implementações do agente de registro: fluentd (legado) e fluent-bit. O Container-Optimized OS 105 usa o fluentd por padrão, e o Container-Optimized OS 109 usa o fluent-bit por padrão. É possível usar a entrada de metadados google-logging-use-fluentbit para mudar o comportamento padrão.

Para usar o agente de registro do fluent-bit no Container-Optimized OS 105, defina o valor google-logging-use-fluentbit como true.

Para usar o agente de registro do fluentd no Container-Optimized OS 109, defina o valor de google-logging-use-fluentbit como false.

Ativar o agente de geração de registros nos metadados do projeto

A partir da fase 97, a geração de registros pode ser ativada nos metadados do projeto:

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

Registros de acesso

Console

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

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

  2. Clique no nome da instância do Container-Optimized OS da qual você quer acessar os registros.

  3. Na seção Registros, clique em Cloud Logging.

  4. Isso abre o Explorador de registros da instância especificada. Para mais informações, consulte Como usar o Explorador de registros.

gcloud

Para acessar os registros, use o comando gcloud logging read. Exemplo:

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

Substitua:

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

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

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

Como funciona?

O agente de registro é configurado por padrão para enviar registros de determinados serviços fundamentais do sistema e contêineres de aplicativos do usuário para o back-end do Cloud Logging. Por exemplo, registros de contêineres do Docker, serviços systemd selecionados, registros de auditoria, erros de registro de diário etc. Consulte a fonte de configuração específica do Container-Optimized OS (imagens x86 e imagens Arm) para ver a configuração completa de geração de registros padrão.

Para imagens x86 do Container-Optimized OS 105 e anteriores, o agente de registro é o agente de registro legado contêinerizado da Observability do Google Cloud. O comando do docker que inicia o agente de registro é definido na fonte do Container-Optimized OS para o serviço systemd stackdriver-logging. A versão do agente contêinerizado que está sendo executada é definida no diretório de origem app-admin/stackdriver do Container-Optimized OS.

Para imagens Arm de todas as versões e imagens x86 para o Container-Optimized OS 109 e versões mais recentes, o agente de registro é um pacote integrado do SO chamado fluent-bit. O agente é integrado ao SO e atualizado junto com as imagens do SO.

Limitações conhecidas

Compatibilidade com o driver gcplogs

A partir do março 89, se o agente do Logging incluído no Container-Optimized OS estiver ativado e o driver de geração de registros do gcplogs no Docker estiver ativado para um ou mais contêineres, os registros de aviso excessivos podem ser emitidos pelo agente do Logging incluído. Isso pode criar ruídos de registro e/ou aumentar as cobranças relacionadas ao Cloud Logging.

Uma solução alternativa é não usar gcplogs como um driver de geração de registros do Docker e, em vez disso, usar o driver padrão, conforme configurado pelo Container-Optimized OS. O agente do Logging incluído no Container-Optimized OS exportará os registros de contêiner para o Cloud Logging. Portanto, não é necessário usar as duas soluções simultaneamente.

Compatibilidade da configuração do agente do Logging

O agente de registro é um contêiner baseado em fluentd em imagens do SO otimizado para contêineres baseadas em x86 e um binário de fluent-bit em imagens do SO otimizado para contêineres baseadas em Arm. As configurações dos dois agentes não são compatíveis. Isso não é um problema se você depender apenas da configuração de registro padrão integrada às imagens do SO. No entanto, se você tiver uma configuração de registro personalizada, poderá ocorrer uma falha ao migrar cargas de trabalho para imagens baseadas em uma arquitetura diferente ou para uma versão mais recente do Container-Optimized OS.

Referências

  • Documentação do agente do Logging legado do Google Cloud Observability. O agente de geração de registros contêinerizado incluído no Container-Optimized OS é um subconjunto do agente de geração de registros legada. Portanto, esta documentação pode fornecer contexto sobre o agente de maneira mais geral, fora do escopo do Container-Optimized OS.
  • Documentação do Google Cloud Observability. Página inicial da documentação do Google Cloud Observability. Pode ser útil para o contexto.