A coleta de registros no Google Distributed Cloud (GDC) com isolamento físico permite agregar eventos operacionais
dos fluxos de trabalho do Kubernetes para monitoramento e solução de problemas. Implante
um recurso personalizado LoggingTarget no servidor da API de gerenciamento para extrair, indexar
e rotular registros de projetos de máquinas virtuais (VMs) de nós de trabalho do Kubernetes. Esse
pipeline não é compatível com a coleta de registros de VMs de usuário independentes.
Depois de configurar a coleta de registros, é possível consultar e visualizar registros no Grafana ou pela API Log Query. Para recomendações de instrumentação, consulte as diretrizes de geração de registros do Kubernetes.
Antes de começar
Para receber as permissões necessárias para gerenciar recursos personalizados do LoggingTarget, peça ao administrador da organização do IAM ou ao administrador do projeto do IAM para conceder a você um dos papéis do LoggingTarget associados.
Dependendo do nível de acesso e das permissões necessárias, é possível receber papéis de criador, editor ou leitor para esse recurso em uma organização ou um projeto. Para mais informações, consulte Preparar permissões do IAM.
Configurar o recurso personalizado LoggingTarget
O recurso personalizado LoggingTarget instrui o pipeline de geração de registros a coletar
registros no projeto do GDC. É possível especificar os
destinos para os quais você está coletando registros, um analisador de registros, níveis de acesso e outras
configurações.
Esse recurso define as seguintes configurações:
- Destinos: os critérios para selecionar os pods e contêineres de onde você quer coletar registros. É possível especificar nomes de clusters, prefixos de nomes de pods e prefixos de nomes de contêineres.
- Analisador de registros: um analisador predefinido para interpretar entradas de registro, mapear saídas de registro para rótulos e extrair campos relevantes.
- Identificação do serviço: o nome do serviço aplicado como um rótulo às entradas de registro para facilitar a identificação e a filtragem.
Autorização: o nível de acesso para entradas de registro, que controla quem pode visualizar os registros coletados.
Ao configurar esses parâmetros no recurso personalizado LoggingTarget, é possível controlar com precisão a coleta e a organização dos registros.
Siga estas etapas para coletar registros operacionais:
- Determine o projeto do GDC do qual você quer coletar registros.
Na configuração do
LoggingTarget, especifique os pods para coletar os registros operacionais, o namespace do projeto e outras configurações.O arquivo YAML a seguir mostra um exemplo de configuração de
LoggingTargetemmy-project-namespace, em que o prefixo do nome do pod para coletar registros émy-pod-prefix, o nível de acesso para entradas de registro é concedido a operadores de aplicativos (ao), o nome do serviço émy-service-namee o formato de registro é JSON:# Configures a log scraping job apiVersion: logging.gdc.goog/v1 kind: LoggingTarget metadata: # Choose a namespace that matches the namespace of the workload pods. namespace: my-project-namespace name: my-logging-target spec: selector: matchPodNames: - my-pod-prefix parser: json logAccessLevel: ao serviceName: my-service-nameConsulte a especificação completa de
LoggingTargete a documentação de referência da API para mais campos e opções.Aplique a configuração
LoggingTargetao servidor da API Management no mesmo namespace dos pods de destino:kubectl --kubeconfig KUBECONFIG_PATH apply -f LOGGING_TARGET_NAME.yamlSubstitua:
KUBECONFIG_PATH: o caminho para o arquivo kubeconfig do servidor de API Management.LOGGING_TARGET_NAME: o nome do arquivo de definição deLoggingTarget, comomy-logging-target.
O pipeline de geração de registros começa a coletar registros dos componentes adicionais do projeto.
É possível consultar os registros coletados usando a interface do usuário do Grafana ou a API Log Query. Para mais informações, consulte Consultar e visualizar registros.
Se você usa o Grafana para consultar seus registros, pode usar o recurso de codificação de cores integrado para diferentes níveis de registro. Para mais informações sobre como definir valores de nível de registro, consulte https://grafana.com/docs/grafana/latest/explore/logs-integration/.
Especificação completa de LoggingTarget
O arquivo YAML a seguir mostra um exemplo da especificação completa do recurso personalizado LoggingTarget. Para mais informações e uma descrição completa
dos campos, consulte a
documentação de referência da API.
# Configures a log scraping job
apiVersion: logging.gdc.goog/v1
kind: LoggingTarget
metadata:
# Choose a namespace that matches the namespace of the workload pods.
namespace: PROJECT_NAMESPACE
name: LOGGING_TARGET_NAME
spec:
# Choose a matching pattern that identifies the pods for this job.
# Optional.
# Relationship between different selectors: 'AND'
selector:
# The clusters to collect logs from.
# The default configuration is to collect logs from all clusters.
# The relationship between different clusters is an 'OR' relationship.
# Optional
matchClusters:
- my-cluster
- another-cluster
# The pod name prefixes to collect logs from.
# The logging platform scrapes all pods with names
# that start with the specified prefixes.
# The values must contain '[a-z0-9-]' characters only.
# The relationship between different list elements is an 'OR' relationship.
# Optional.
matchPodNames:
- my-pod-prefix
- another-pod-prefix
# The container name prefixes to collect logs from.
# The logging platform scrapes all containers with names
# that start with the specified prefixes.
# The values must contain '[a-z0-9-]' characters only.
# The relationship between different list elements is an 'OR' relationship.
# Optional.
matchContainerNames:
- my-container-prefix
- another-container-prefix
# Choose the predefined parser for log entries.
# Use parsers to map the log output to labels and extract fields.
# Specify the log format.
# Optional.
# Options: klog_text, klog_json, klogr, gdch_json, json
parser: klog_text
# Specify an access level for log entries.
# The default value is 'ao'.
# Optional.
# Options: ao, pa, io
logAccessLevel: ao
# Specify a service name to be applied as a label.
# For user workloads consider this field as a workload name.
# Required.
serviceName: my-service-name
# The additional static fields to apply to log entries.
# The field is a key-value pair, where the field name is the key and
# the field value is the value.
# Optional.
additionalFields:
app: workload2
key: value
Substitua:
PROJECT_NAMESPACE: o namespace do projeto.LOGGING_TARGET_NAME: o nome do arquivo de definiçãoLoggingTarget.