Como gerenciar registros do GKE

Nesta página, você encontra uma visão geral das opções de registro disponíveis no Google Kubernetes Engine (GKE).

Visão geral

Quando você ativa a integração de operações do Kubernetes Engine com o Cloud Logging e o Cloud Monitoring no cluster, os registros são armazenados em um armazenamento de dados dedicado e permanente. O próprio GKE armazena os registros, mas eles não são mantidos permanentemente. Por exemplo, os registros de contêiner do GKE são removidos quando o pod de host é removido, quando o disco no qual eles são armazenados fica sem espaço ou quando eles são substituídos por registros mais recentes. Os registros do sistema são periodicamente removidos para liberar espaço para novos. Os eventos de cluster são removidos após uma hora.

Em contêineres e registros do sistema, o GKE implanta, por padrão, um agente de geração de registros por nó que lê registros de contêineres, adiciona metadados úteis e os armazena. O agente de geração de registros verifica se há registros de contêiner nas fontes abaixo:

  • Saídas e registros de erros padrão de processos em contêiner

  • kubelet e registros de tempo de execução em contêiner

  • Registros de componentes do sistema, como scripts de inicialização de VM

Para eventos, o GKE usa uma implementação no namespace do kube-system que coleta eventos automaticamente e os envia para o Logging.

Quais registros são coletados

Por padrão, o GKE coleta registros das cargas de trabalho do sistema e do aplicativo implantadas no cluster.

  • Registros do sistema: incluem os registros de auditoria do cluster, incluindo os registros de atividade do administrador, de acesso a dados e de eventos. Para informações detalhadas sobre os registros de auditoria do GKE, consulte a documentação Registros de auditoria para GKE. Alguns registros do sistema são executados como contêineres, como os do kube-system, e eles são descritos em Como controlar a coleção de registros de aplicativos.

  • Registros de aplicativos: os contêineres do Kubernetes coletam registros para suas cargas de trabalho gravadas em STDOUT e STDERR.

Como coletar seus registros

Quando você cria um novo cluster do GKE, a integração das operações do Kubernetes Engine com o Cloud Logging e o Cloud Monitoring é ativada por padrão.

Para o Cloud Logging legado, siga a documentação sobre como ativar ou desativar a integração do Logging.

Padrões de registro

Quando ativado, um agente dedicado é implantado e gerenciado automaticamente. Ele é executado no nó do GKE para coletar registros, adiciona metadados úteis sobre o contêiner, o pod e o cluster e, em seguida, envia os registros para o Cloud Logging. Os registros do sistema e dos aplicativos de carga de trabalho são entregues ao roteador de registros no Cloud Logging.

A partir daí, os registros são ingeridos no Cloud Logging ou excluídos. O Roteador de registros também fornece uma etapa opcional para exportar os registros para o BigQuery, Pub/Sub ou Cloud Storage.

Como personalizar a coleta de registros apenas para registros do sistema

A partir da versão 1.15.7 do GKE, é possível configurar as operações do Kubernetes Engine para capturar apenas os registros do sistema e não coletar registros de aplicativos.

Coleta de registros com fluentd personalizado

O agente de geração de registros padrão do GKE fornece uma solução gerenciada para implantar e gerenciar os agentes que enviam os registros dos clusters para o Cloud Logging. Se você quiser alterar o comportamento padrão dos agentes fluentd, execute um agente fluentd personalizado.

Os casos de uso comuns incluem:

  • remover dados confidenciais dos registros

  • coletar registros adicionais não gravados em STDOUT ou STDERR

Como coletar registros auditd do Linux para nós do GKE

É possível ativar registros detalhados de auditoria do sistema operacional nos nós do Google Kubernetes Engine que executam o Container-Optimized OS. Os registros do sistema operacional nos nós fornecem informações valiosas sobre o estado do cluster e as cargas de trabalho, como mensagens de erro, tentativas de login e execuções binárias.Você pode usar essas informações para depurar problemas ou investigar incidentes de segurança.

Para saber mais, acesse Como ativar registros auditd do Linux em nós do GKE.

Registros de auditoria do GKE

Para informações detalhadas sobre entradas de registro que se aplicam aos tipos de recursos do cluster do Kubernetes e do GKE, acesse Geração de registros de auditoria.

Controle de acesso do Logging

Há dois aspectos de controle de acesso de registro: acesso a aplicativos e acesso de usuário. O Cloud Logging fornece papéis do IAM que você pode usar para conceder acesso apropriado.

Acesso ao aplicativo

Os aplicativos precisam de permissão para gravar registros que são concedidos por meio da atribuição do papel do IAM roles/logging.logWriter à conta de serviço de um aplicativo. Quando você cria um cluster do GKE, o papel roles/logging.logWriter é ativado por padrão.

Acesso de visualização do usuário

Você precisa ter o papel roles/logging.viewer para ver os registros no projeto. Se você precisa ter acesso aos registros de acesso a dados, precisa ter a permissão do IAM logging.privateLogViewer.

Para mais informações sobre permissões e papéis, acesse o guia Controle de acesso. Também é possível consultar o documento Práticas recomendadas para registros de auditoria do Cloud, que também se aplica ao Cloud Logging em geral.

Acesso de administrador do usuário

Os papéis do IAM roles/logging.configWriter e roles/logging.admin fornecem os recursos administrativos. O papel do IAM roles/logging.configWriter é necessário para criar um coletor de geração de registros que é comumente usado para direcionar os registros para um projeto específico ou centralizado. Por exemplo, talvez você queira usar um coletor de registro com um filtro de geração de registros para direcionar todos os seus registros de um namespace para um intervalo de registro centralizado.

Para saber mais, acesse o Controle de acesso do Cloud Logging.

Práticas recomendadas

  • Criação de registros estruturados: strings JSON de única linha escritas na saída padrão ou erro padrão serão lidas no pacote de operações do Google Cloud como entradas de registro estruturadas. Consulte Geração de registros estruturada para mais detalhes. É possível usar Filtros de registros avançados em registros com base nos campos deles.
  • Gravidades: por padrão, os registros gravados na saída padrão estão no nível INFO e os registros gravados no erro padrão estão no nível ERRO. Os registros estruturados podem incluir um campo severity, que define a gravidade do registro.
  • Como exportar para o BigQuery: é possível exportar registros para serviços externos, como o BigQuery ou o Pub/Sub, para realizar mais análises. Os registros exportados para o BigQuery mantêm o formato e a estrutura. Consulte Visão geral das exportações de registros para mais informações.
  • Alerta: use métricas com base em registros para configurar políticas de alertas quando o Logging registra um comportamento inesperado. Por exemplo, consulte Como criar uma política de alertas simples em uma métrica de contador. Consulte Visão geral de métricas com base em registros para informações mais detalhadas.
  • Relatórios de erros: é possível usar Error Reporting para coletar erros produzidos nos clusters.