Stackdriver Logging

Nesta página, você vê como usar o Stackdriver Logging para coletar e consultar registros de clusters do Google Kubernetes Engine (GKE).

Visão geral

Quando o Logging está ativado no cluster, seus registros são mantidos em um armazenamento de dados permanente e dedicado. O projeto do Google Cloud inclui vários registros que são relevantes a um cluster do GKE. Isso inclui o registro de atividades do administrador, de acesso a dados e de eventos.

Um registro é um conjunto de entradas de registro, e cada uma delas se aplica a um determinado tipo de recurso. Estes são os tipos de recursos mais relevantes para os clusters do GKE:

Tipo de recurso Nome de exibição
k8s_cluster Cluster do Kubernetes
gke_cluster Operações de cluster do GKE
gke_container Contêiner do GKE
gke_nodepool Operações de pool de nós do GKE

Para informações detalhadas sobre entradas de registro que se aplicam aos tipos de recursos do cluster do Kubernetes e às operações do cluster do GKE, consulte Registro de auditoria.

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 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 ambiente de execução do contêineres
  • Registros de componentes do sistema, como scripts de inicialização de VM

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

O Logging é compatível com o formato JSON. Os registros ficam armazenados por até 30 dias.

Antes de começar

Prepare-se para a tarefa seguindo essas etapas:

  • Verifique se você ativou a API Google Kubernetes Engine.
  • Ativar a API do Google Kubernetes Engine
  • Verifique se o SDK do Cloud está instalado.
  • Defina o ID do projeto padrão:
    gcloud config set project [PROJECT_ID]
  • Se você estiver trabalhando com clusters zonais, defina a zona do Compute padrão:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Se você estiver trabalhando com clusters regionais, defina a região do Compute padrão:
    gcloud config set compute/region [COMPUTE_REGION]
  • Atualize gcloud para a versão mais recente:
    gcloud components update

Como ativar o Logging

É possível criar um cluster com o Logging ativado ou habilitá-lo em um cluster atual.

Como criar um cluster com o Logging

gcloud

Quando você cria um cluster, a sinalização --enable-cloud-logging é definida automaticamente. Isso ativa o Logging no cluster.

Para desativar esse comportamento padrão, defina a sinalização --no-enable-cloud-logging.

Console

  1. No Console do Cloud, acesse a página Kubernetes Engine > Clusters do Kubernetes:

    Acessar os clusters do Kubernetes

  2. Clique em Criar cluster.

  3. Configure o cluster conforme necessário.

  4. Clique em Opções avançadas. Na seção Recursos extras, ative o serviço do Stackdriver Logging.

  5. Clique em Criar.

Como ativar o Logging para um cluster atual

gcloud

Para ativar o Logging em um cluster atual, execute o comando a seguir, em que [CLUSTER-NAME] é o nome do cluster.

gcloud container clusters update [CLUSTER_NAME] --logging-service logging.googleapis.com

console

  1. No Console do Cloud, acesse a página Kubernetes Engine > Clusters do Kubernetes:

    Acessar os clusters do Kubernetes

  2. Clique em Editar.

  3. Defina o valor da lista suspensa Stackdriver Logging como Ativado.

  4. Clique em Salvar.

Como visualizar registros

É possível ver os registros no Visualizador de registros do Stackdriver no Console do Google Cloud.

Para saber mais sobre a visualização de registros, incluindo como criar consultas básicas e avançadas, consulte Como visualizar registros na documentação do Logging.

Consultas de exemplo

  • Registros de consulta dos pods rotulados como nginx-deployment:

    resource.type="container"
    resource.labels.pod_id:"nginx-deployment-"
  • Registros de consulta no namespace prod com gravidade WARNING ou superior:

    resource.type="container"
    resource.labels.namespace_id="prod"
    severity>WARNING

    Para mais informações sobre os níveis de gravidade, consulte Log Severity.

  • Registros de consulta de um contêiner específico, my-container, em um pod específico, my-pod, com um payload de texto:

    resource.type="container"
    resource.labels.container_name="my_container"
    resource.labels.pod_id="my_pod"
    textPayload:"abracadabra"

Limitações

As entradas de várias linhas (entradas com caracteres de avanço de linha) podem não ser processadas corretamente. Para evitar esse problema, incorpore seus registros em objetos JSON de uma única linha.

Práticas recomendadas

  • Geração de registros estruturada: objetos JSON de uma única linha gravados em saída ou erro padrão serão lidos no Stackdriver 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 o Stackdriver Error Reporting para coletar erros produzidos nos clusters.

Como desativar a geração de registros

gcloud

Para desativar o Stackdriver legado de um cluster atual, execute o comando a seguir, em que [CLUSTER_NAME] é o nome do cluster.

gcloud beta container clusters update [CLUSTER_NAME] --logging-service none

Ao executar o Stackdriver Kubernetes Engine Monitoring no cluster, é preciso desativar o monitoramento e a geração de registros. Para isso, use a gcloud beta para definir as sinalizações a seguir no cluster:

gcloud beta container clusters update [CLUSTER_NAME] --logging-service none --monitoring-service none

Console

  1. No Console do Cloud, acesse a página Kubernetes Engine > Clusters do Kubernetes:

    Acessar os clusters do Kubernetes

  2. Clique em Editar no cluster que você quer alterar.

  3. Defina o valor da lista suspensa do Stackdriver Logging como Desativado.

  4. Clique em Salvar.

A seguir