Neste documento, explicamos como criar e gerenciar coletores de registros, que roteiam entradas de registro originadas em um projeto Google Cloud para destinos compatíveis.
Um coletor executa uma ação de gravação e, portanto, precisa de autorização para gravar no destino. Quando o destino é um bucket de registros no mesmo projeto que o coletor, ele é autorizado automaticamente. Para todos os outros destinos, o coletor precisa estar anexado a uma conta de serviço que tenha recebido as permissões necessárias para gravar dados no destino.
Quando uma conta de serviço é necessária, o Cloud Logging a cria e gerencia automaticamente. No entanto, talvez seja necessário modificar as permissões concedidas à conta de serviço. Não é necessário usar a conta de serviço criada pelo Logging. É possível criar e gerenciar uma conta de serviço usada por gravadores em vários projetos. Para mais informações, consulte Configurar gravadores de registros com contas de serviço gerenciado pelo usuário.
Visão geral
Nesta página, descrevemos como criar um gravador e configurar as opções que podem aparecer ao usar o console Google Cloud ou a API.
Os coletores pertencem a um determinado recurso Google Cloud : um projeto Google Cloud , uma conta de faturamento, uma pasta ou uma organização. Quando o recurso recebe uma entrada de registro, todos os coletores nele processam a entrada. Quando uma entrada de registro corresponde aos filtros do coletor, ela é roteada para o destino do coletor.
Normalmente, os coletores encaminham apenas as entradas de registro originadas em um recurso. No entanto, para pastas e organizações, é possível criar coletores agregados, que encaminham entradas de registro da pasta ou organização e dos recursos que ela contém. Este documento não aborda coletores agregados. Para mais informações, consulte Visão geral dos coletores agregados.
Para criar e gerenciar coletores, use o console Google Cloud , a API Cloud Logging e a Google Cloud CLI. Recomendamos que você use o console Google Cloud pelos seguintes motivos:
- É possível configurar destinos de coletor como parte do fluxo para criar um coletor.
- É possível visualizar quais entradas de registro correspondem aos filtros do coletor.
- Algumas etapas de autorização são simplificadas.
Recomendamos que você revise a configuração do coletor de registros ao fazer mudanças no armazenamento de registros. Por exemplo, se você excluir o destino de um coletor de registros, exclua o coletor de registros correspondente.
Para saber como ver e gerenciar seus coletores de registros, consulte a seção Gerenciar coletores deste documento.
Destinos possíveis
O destino de um coletor pode estar em um recurso diferente do coletor. Por exemplo, é possível usar um coletor de registros para encaminhar entradas de registro de um projeto para um bucket de registros armazenado em outro projeto.
Os seguintes destinos são compatíveis:
- Projeto doGoogle Cloud
Selecione esse destino quando quiser que os coletores de registros no projeto de destino redirecionem suas entradas de registro ou quando você tiver criado um coletor agregado de interceptação. Os coletores de registros no projeto que é o destino do coletor podem redirecionar as entradas de registro para qualquer destino compatível, exceto um projeto.
- Bucket de registros
- Selecione esse destino quando quiser armazenar os dados de registro em recursos gerenciados pelo Cloud Logging. Os dados de registro armazenados em buckets de registros podem ser visualizados e analisados usando serviços como a Análise de registros.
- Tópico do Pub/Sub
- Selecione esse destino quando quiser exportar os dados de registro de Google Cloud e usar uma integração de terceiros. As entradas de registro são formatadas em JSON e encaminhadas para um tópico do Pub/Sub.
Limitações de destino
Esta seção descreve limitações específicas do destino:
As seguintes limitações se aplicam quando o destino de um coletor de registros é um projeto do Google Cloud :
- Há um limite de um salto.
- As entradas de registro que correspondem ao filtro do
coletor de registros
_Requiredsó são encaminhadas para o bucket de registros_Requireddo projeto de destino quando são originadas nele. - Somente os coletores agregados que estão na hierarquia de recursos de uma entrada de registro processam essa entrada.
Por exemplo, suponha que o destino de um coletor de registros no projeto
Aseja o projetoB. Então, o seguinte é verdadeiro:- Devido ao limite de um salto, os coletores de registros no projeto
Bnão podem redirecionar entradas de registro para um projeto Google Cloud . - O bucket de registros
_Requireddo projetoBarmazena apenas entradas de registro originadas no projetoB. Esse bucket de registros não armazena entradas de registro originadas em outros recursos, incluindo as do projetoA. - Se a hierarquia de recursos dos projetos
AeBfor diferente, uma entrada de registro que um coletor de registros no projetoAencaminha para o projetoBnão será enviada aos coletores agregados na hierarquia de recursos do projetoB. - Se os projetos
AeBtiverem a mesma hierarquia de recursos, as entradas de registro serão enviadas aos coletores agregados nessa hierarquia. Se uma entrada de registro não for interceptada por um coletor agregado, o roteador de registros vai enviar a entrada para os coletores no projetoA.
Antes de começar
As instruções neste documento descrevem a criação e o gerenciamento de coletores no nível do projetoGoogle Cloud . Você pode usar o mesmo procedimento para criar um coletor que roteia entradas de registro originadas em uma organização, pasta ou conta de faturamento.
Para começar, faça o seguinte:
-
Ative a API Cloud Logging.
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis. Verifique se o seu Google Cloud projeto contém entradas de registro que podem ser vistas na Análise de registros.
-
Para receber as permissões necessárias para criar, modificar ou excluir um gravador, peça ao administrador para conceder a você o papel do IAM de Gravador de configuração de registros (
roles/logging.configWriter) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Para informações sobre como conceder papéis do IAM, consulte o Guia de controle de acesso do Logging.
Você tem um recurso em um destino compatível ou pode criar um.
Para encaminhar entradas de registro a um destino, ele precisa existir antes da criação do coletor. É possível criar o destino em qualquer projetoGoogle Cloud em qualquer organização.
Antes de criar um coletor, consulte as limitações que se aplicam ao destino do coletor. Para mais informações, consulte a seção Limitações de destino neste documento.
Selecione a interface que você quer usar:
Console
Quando você usa o console Google Cloud para acessar serviços Google Cloud e APIs, não é necessário configurar a autenticação.
gcloud
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initREST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .
Criar um coletor
Esta seção descreve como criar um gravador em um projeto Google Cloud .
É possível criar até 200 coletores por projeto do Google Cloud .
Para conferir o número e o volume de entradas de registro encaminhadas, consulte as métricas logging.googleapis.com/exports/.
Use a linguagem de consulta do Logging para criar uma expressão de filtro que corresponda às entradas de registro que você quer incluir. Não coloque informações sensíveis em filtros de coletor. Os coletores de registros são tratados como dados de serviço.
Quando uma consulta contém várias instruções, é possível especificar como elas são unidas ou confiar no Cloud Logging para adicionar implicitamente a restrição conjuntiva, AND, entre as instruções. Por exemplo, suponha que uma consulta ou caixa de diálogo de filtro contenha duas instruções, resource.type = "gce_instance" e severity >= "ERROR".
A consulta real é resource.type = "gce_instance" AND severity >= "ERROR".
O Cloud Logging oferece suporte a restrições disjuntivas, OR, e conjuntivas, AND. Ao usar instruções OR, recomendamos agrupar as cláusulas com parênteses.
Para criar um coletor, faça o seguinte:
Console
-
No console do Google Cloud , acesse a página Roteador de registros.
Acessar o roteador de registros
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Logging.
Selecione o projeto do Google Cloud em que as entradas de registro que você quer encaminhar foram criadas.
Por exemplo, se você quiser encaminhar as entradas de registro de acesso a dados do projeto
Project-Apara um bucket de registros no projetoProject-B, selecioneProject-A.Selecione Criar coletor.
No painel Detalhes do coletor, insira os seguintes detalhes:
Nome do coletor: forneça um identificador para o coletor. Depois de criar o coletor, não será possível renomeá-lo, mas será possível excluí-lo e criar um novo coletor.
Descrição do coletor (opcional): descreva a finalidade ou o caso de uso do coletor.
No painel Destino do coletor, selecione o serviço de coletor e o destino usando o menu Selecionar serviço do coletor. Faça uma das seguintes ações:
Para encaminhar entradas de registro a um serviço no mesmo projetoGoogle Cloud , selecione uma das seguintes opções:
- Bucket do Cloud Logging: selecione ou crie um bucket do Logging.
- Tópico do Pub/Sub: selecione ou crie o tópico específico para receber as entradas de registro roteadas.
Para encaminhar entradas de registro para um projeto Google Cloud diferente, selecione projetoGoogle Cloud e insira o nome completo do destino:
logging.googleapis.com/projects/DESTINATION_PROJECT_IDPara encaminhar entradas de registro a um serviço em umGoogle Cloud projeto diferente, faça o seguinte:
- Selecione Outro recurso.
- Insira o nome totalmente qualificado do destino. Para informações sobre a sintaxe, consulte os Formatos de caminho de destino.
Especifique as entradas de registro a serem incluídas:
Acesse o painel Escolher registros para incluir no coletor.
No campo Criar filtro de inclusão, insira uma expressão de filtro que corresponda às entradas de registro que você quer incluir. Para saber mais sobre a sintaxe para escrever filtros, consulte Linguagem de consulta do Logging.
Se você não definir um filtro, todas as entradas de registro do recurso selecionado serão roteadas para o destino.
Por exemplo, para encaminhar todas as entradas de registro de acesso a dados para um bucket do Logging, use o seguinte filtro:
log_id("cloudaudit.googleapis.com/data_access") OR log_id("externalaudit.googleapis.com/data_access")O comprimento de um filtro não pode exceder 20.000 caracteres.
Para conferir se você inseriu o filtro correto, selecione Visualizar registros. A Análise de Registros abre em uma nova guia com o filtro pré-preenchido.
(Opcional) Configure um filtro de exclusão para eliminar algumas das entradas de registro incluídas:
Acesse o painel Escolher registros para filtrar do coletor.
No campo Nome do filtro de exclusão, insira um nome.
No campo Criar um filtro de exclusão, insira uma expressão de filtro que corresponda às entradas de registro que você quer excluir. Também é possível usar a função
samplepara selecionar uma parte das entradas de registro a serem excluídas.
É possível criar até 50 filtros de exclusão por coletor. O comprimento de um filtro não pode exceder 20.000 caracteres.
Selecione Criar coletor.
Conceda à conta de serviço do coletor permissão para gravar entradas de registro no destino do coletor. Para mais informações, consulte Definir permissões de destino.
gcloud
Para criar um coletor, faça o seguinte:
Execute este comando
gcloud logging sinks create:gcloud logging sinks create SINK_NAME SINK_DESTINATION
Antes de executar o comando, faça estas substituições:
- SINK_NAME: o nome do coletor de registros. Não é possível mudar o nome de um coletor depois de criá-lo.
SINK_DESTINATION: o serviço ou projeto para onde você quer que as entradas de registro sejam roteadas. Defina SINK_DESTINATION com o caminho adequado, conforme descrito em Formatos de caminho de destino.
Por exemplo, se o destino do coletor for um tópico do Pub/Sub, SINK_DESTINATION será semelhante a:
pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
Você também pode fornecer as seguintes opções:
--log-filter: use essa opção para definir um filtro que corresponda às entradas de registro que você quer incluir no coletor. Se você não fornecer um valor para o filtro de inclusão, ele vai corresponder a todas as entradas de registro.--exclusion: use essa opção para definir um filtro de exclusão para entradas de registro que você quer excluir do roteamento do coletor. Também é possível usar a funçãosamplepara selecionar uma parte das entradas de registro a serem excluídas. Essa opção pode ser repetida. É possível criar até 50 filtros de exclusão por coletor.--description: use essa opção para descrever a finalidade ou o caso de uso do coletor.
Por exemplo, para criar um coletor para um bucket do Logging, seu comando pode ter esta aparência:
gcloud logging sinks create my-sink logging.googleapis.com/projects/myproject123/locations/global/buckets/my-bucket \ --log-filter='logName="projects/myproject123/logs/matched"' --description="My first sink"
Para mais informações sobre como criar gravadores usando a Google Cloud CLI, consulte a referência
gcloud logging sinks.Se a resposta do comando contiver uma chave JSON chamada
"writerIdentity", conceda à conta de serviço do coletor a permissão para gravar no destino do coletor. Para mais informações, consulte Definir permissões de destino.Não é necessário definir permissões de destino quando a resposta não contém uma chave JSON chamada
"writerIdentity".
REST
Para criar um coletor de geração de registros no seu projeto Google Cloud , use
projects.sinks.createna API Logging. No objetoLogSink, forneça os valores necessários apropriados no corpo da solicitação do método:name: um identificador do coletor. Depois de criar o coletor, não será possível renomear o coletor, mas você poderá excluí-lo e criar um novo coletor.destination: o serviço e o destino para onde você quer que as entradas de registro sejam roteadas. Para encaminhar entradas de registro a um projeto diferente ou a um destino em outro projeto, defina o campodestinationcom o caminho apropriado, conforme descrito em Formatos de caminho de destino.Por exemplo, se o destino do coletor for um tópico do Pub/Sub, o
destinationserá semelhante a este:pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
No objeto
LogSink, forneça as informações opcionais adequadas:filter: defina o campofilterpara corresponder às entradas de registro que você quer incluir no coletor. Se você não definir um filtro, todas as entradas de registro do seu projetoGoogle Cloud serão roteadas para o destino. O comprimento de um filtro não pode exceder 20.000 caracteres.exclusions: defina esse campo para corresponder às entradas de registro que você quer excluir do coletor. Também é possível usar a funçãosamplepara selecionar uma parte das entradas de registro a serem excluídas. É possível criar até 50 filtros de exclusão por coletor.description: defina esse campo para descrever a finalidade ou o caso de uso do coletor.
Chame
projects.sinks.createpara criar o coletor.Se a resposta da API contiver uma chave JSON rotulada como
"writerIdentity", conceda à conta de serviço do gravador a permissão para gravar no destino do gravador. Para mais informações, consulte Definir permissões de destino.Não é necessário definir permissões de destino quando a resposta da API não contém uma chave JSON rotulada como
"writerIdentity".
Para mais informações sobre como criar coletores usando a
API Logging, consulte a referência LogSink.
Se você receber notificações de erro, consulte Resolver problemas de roteamento e coletores.
Formatos de caminho de destino
Se você encaminhar entradas de registro para um serviço em outro projeto, forneça ao coletor o nome totalmente qualificado do serviço. Da mesma forma, se você encaminhar entradas de registro para um projeto Google Cloud diferente, forneça o nome totalmente qualificado do projeto de destino ao gravador:
Bucket de registros do Cloud Logging:
logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
Outro projeto Google Cloud :
logging.googleapis.com/projects/DESTINATION_PROJECT_ID
Tópico do Pub/Sub:
pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
Definir permissões de destino
Nesta seção, descrevemos como conceder permissões do Identity and Access Management ao Logging para gravar entradas de registro no destino do coletor. Para a lista completa de papéis e permissões do Logging, consulte Controle de acesso.
O Cloud Logging cria uma conta de serviço compartilhada para um recurso quando um coletor é criado, a menos que a conta de serviço necessária já exista. A conta de serviço pode existir porque é usada para todos os coletores no recurso subjacente. Os recursos podem ser um Google Cloud projeto, uma organização, uma pasta ou uma conta de faturamento.
A identidade do gravador de um coletor é o identificador da conta de serviço associada a ele. Todos os coletores têm uma identidade de gravador, exceto aqueles que gravam em um bucket de registros no mesmo projeto do Google Cloud em que a entrada de registro se origina. Para a última configuração, uma conta de serviço não é necessária. Portanto, o campo identidade do gravador do coletor é listado como None no console. A API e os comandos da Google Cloud CLI não informam uma identidade de gravador.
As instruções a seguir se aplicam a projetos, pastas, organizações e contas de faturamento:
Console
Verifique se você tem acesso de proprietário ao projetoGoogle Cloud que contém o destino. Se você não tiver acesso de Proprietário ao destino do coletor, peça a um proprietário do projeto para adicionar a identidade do gravador como um principal.
Para conseguir a identidade de gravador do coletor, um endereço de e-mail, com o novo coletor, faça o seguinte:
-
No console do Google Cloud , acesse a página Roteador de registros.
Acessar o roteador de registros
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Logging.
- Na barra de ferramentas, selecione o projeto que contém o gravador.
- Selecione more_vert Menu e, depois, Ver detalhes do coletor. A identidade do gravador é exibida no painel Detalhes do coletor.
-
Se o valor do campo
writerIdentitycontiver um endereço de e-mail, prossiga para a próxima etapa. Quando o valor éNone, não é necessário configurar permissões de destino para o coletor.Copie a identidade do gravador do coletor para a área de transferência.
O endereço de e-mail identifica o principal. O prefixo
serviceAccount:especifica o tipo de conta.Conceda ao principal especificado na identidade do gravador do coletor a permissão para gravar dados de registro no destino:
-
No console Google Cloud , acesse a página IAM:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo IAM e administrador.
Na barra de ferramentas, verifique se o projeto selecionado é aquele que armazena o destino ou é o destino do gravador. Por exemplo, se o destino for um bucket de registros, verifique se a barra de ferramentas mostra o projeto que armazena o bucket.
Clique em Conceder acesso.
Conceda ao principal especificado na identidade do gravador do coletor um papel do IAM com base no destino do coletor de registros:
- Para todos os destinos, conceda o papel de gravador de registros (
roles/logging.logWriter). Especificamente, um principal precisa da permissãologging.logEntries.route. - Conceda uma das seguintes funções com base no destino:
- Bucket de registros: conceda o
papel de gravador de bucket de registros
(
roles/logging.bucketWriter). - Tópico do Pub/Sub: conceda o
papel de editor do Pub/Sub
(
roles/pubsub.publisher).
- Bucket de registros: conceda o
papel de gravador de bucket de registros
(
- Para todos os destinos, conceda o papel de gravador de registros (
-
gcloud
Verifique se você tem acesso de proprietário ao projetoGoogle Cloud que contém o destino. Se você não tiver acesso de Proprietário ao destino do coletor, peça a um proprietário do projeto para adicionar a identidade do gravador como um principal.
Consiga a conta de serviço do campo
writerIdentityno seu coletor:gcloud logging sinks describe SINK_NAME
Localize o coletor de dados cujas permissões você quer modificar e, se os detalhes do coletor contiverem uma linha com
writerIdentity, siga para a próxima etapa. Quando os detalhes não incluem um campowriterIdentity, não é necessário configurar permissões de destino para o coletor.A identidade do gravador para a conta de serviço é semelhante a esta:
serviceAccount:service-123456789012@gcp-sa-logging.
Conceda à identidade do gravador do coletor a permissão para gravar dados de registro no destino chamando o comando
gcloud projects add-iam-policy-binding.Antes de usar o comando a seguir, faça as seguintes substituições:
- PROJECT_ID: o identificador do projeto. Especifique o projeto que armazena o destino do coletor de registros. Quando o destino for um projeto, especifique-o.
- PRINCIPAL: um identificador do principal a quem você quer
conceder o papel. Os identificadores dos principais geralmente têm o seguinte formato:
PRINCIPAL-TYPE:ID. Por exemplo,. Para uma lista completa dos formatos quePRINCIPALpode ter, consulte Identificadores principais. ROLE: um papel do IAM. Conceda à identidade do gravador do coletor um papel do IAM com base no destino do coletor de registros:
- Para todos os destinos, conceda o papel de gravador de registros (
roles/logging.logWriter). Especificamente, um principal precisa da permissãologging.logEntries.route. - Conceda uma das seguintes funções com base no destino:
- Bucket de registros: conceda o
papel de gravador de bucket de registros
(
roles/logging.bucketWriter). - Tópico do Pub/Sub: conceda o
papel de editor do Pub/Sub
(
roles/pubsub.publisher).
- Bucket de registros: conceda o
papel de gravador de bucket de registros
(
- Para todos os destinos, conceda o papel de gravador de registros (
Execute o comando
gcloud projects add-iam-policy-binding:gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE
REST
Recomendamos que você use o console Google Cloud ou a Google Cloud CLI para conceder um papel à conta de serviço.
Exemplos de filtros
Veja a seguir alguns exemplos de filtro que são particularmente úteis ao criar coletores. Para outros exemplos que podem ser úteis ao criar seus filtros de inclusão e de exclusão, consulte Amostra de consultas.
Restaurar o filtro do coletor _Default
Se você editou o filtro para o coletor _Default, talvez queira restaurar
esse coletor à configuração original. Quando criado, o coletor _Default é configurado com o seguinte filtro de inclusão e um filtro de exclusão vazio:
NOT log_id("cloudaudit.googleapis.com/activity") AND NOT \
log_id("externalaudit.googleapis.com/activity") AND NOT \
log_id("cloudaudit.googleapis.com/system_event") AND NOT \
log_id("externalaudit.googleapis.com/system_event") AND NOT \
log_id("cloudaudit.googleapis.com/access_transparency") AND NOT \
log_id("externalaudit.googleapis.com/access_transparency")
Excluir registros de contêiner e de pod do Google Kubernetes Engine
Para excluir as entradas de registro de contêiner e pod do Google Kubernetes Engine do sistema GKE namespaces, use o filtro a seguir:
resource.type = ("k8s_container" OR "k8s_pod")
resource.labels.namespace_name = (
"cnrm-system" OR
"config-management-system" OR
"gatekeeper-system" OR
"gke-connect" OR
"gke-system" OR
"istio-system" OR
"knative-serving" OR
"monitoring-system" OR
"kube-system")
Para excluir as entradas de registro de nó do Google Kubernetes Engine do sistema GKE
logNames, use o filtro a seguir:
resource.type = "k8s_node"
logName:( "logs/container-runtime" OR
"logs/docker" OR
"logs/kube-container-runtime-monitor" OR
"logs/kube-logrotate" OR
"logs/kube-node-configuration" OR
"logs/kube-node-installation" OR
"logs/kubelet" OR
"logs/kubelet-monitor" OR
"logs/node-journal" OR
"logs/node-problem-detector")
Compatibilidade
Embora o Cloud Logging permita excluir entradas de registro e impedir que elas sejam armazenadas em um bucket de registros, considere manter entradas que ajudem na capacidade de suporte. O uso dessas entradas de registro pode ajudar você a resolver e identificar problemas com seus aplicativos.
Por exemplo, as entradas de registro do sistema do GKE são úteis para solucionar problemas de aplicativos e clusters do GKE porque são geradas para eventos que acontecem no cluster. Essas entradas de registro podem ajudar você a determinar se o código do aplicativo ou o cluster subjacente do GKE está causando o erro do aplicativo. Os registros do sistema do GKE também incluem o Kubernetes Audit Logging gerado pelo componente servidor da API Kubernetes, que inclui alterações feitas usando o comando kubectl e os eventos do Kubernetes.
A seguir
Se você encontrar problemas ao usar coletores para rotear entradas de registro, consulte Resolver problemas de roteamento de registros.
Para saber como visualizar as entradas de registro nos destinos delas e como os registros são formatados e organizados, consulte Ver os registros nos destinos do coletor.
Para saber mais sobre consultas e filtragem com a linguagem de consulta do Logging, consulte Linguagem de consulta do Logging.