Acessar e usar registros da plataforma

Configure os registros da plataforma no Artifact Registry para ver informações sobre solicitações bem-sucedidas e com falha feitas aos repositórios do Artifact Registry. Os registros da plataforma são gerados pelo Cloud Logging e podem ser vistos no Análise de registros. É possível analisar os registros da plataforma do Artifact Registry para ajudar a resolver problemas de solicitações com falha, manter registros de solicitações bem-sucedidas e conferir o número de downloads de um artefato.

Um registro da plataforma é formatado como um LogEntry.

Visão geral

O Artifact Registry gera registros da plataforma para chamadas de API do plano de dados e do plano de controle. As ações do plano de controle incluem operações de gerenciamento de repositórios, como criação, edição de descrições e exclusão de repositórios, e ações de gerenciamento de artefatos, como listagem, inclusão de tags e exclusão de artefatos. As ações do plano de dados incluem operações como envio e extração de artefatos de repositórios do Artifact Registry.

Os registros dos dois tipos de chamadas contêm as seguintes informações:

  • Detalhes da solicitação
  • Detalhes da resposta
  • Status
  • Rótulos
    • Nome do método
    • Nome do recurso
    • Local do recurso
    • ID da operação (para operações de longa duração)
    • Formato do repositório (para recursos do repositório)
    • Modo de repositório (para recursos de repositório)

Além disso, os registros de chamadas de API do plano de controle contêm as seguintes informações:

  • Informações HTTP
    • Método de solicitação
    • URL de solicitação
    • Tamanho da solicitação (em bytes)
    • Status
    • Tamanho da resposta (em bytes)
    • User agent
    • IP remoto (IP do cliente que emitiu a solicitação)
    • Protocolo
    • Referenciador
    • Latência

É possível conferir os registros da plataforma do Artifact Registry na Análise de registros.

Antes de começar

Ative a API Logging.

Funções exigidas

Para receber as permissões necessárias para gerenciar registros da plataforma, peça ao administrador para conceder a você os seguintes papéis do IAM 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.

Ativar a geração de registros da plataforma

É possível ativar o registro da plataforma em todo o projeto Google Cloud ou em um repositório específico.

Ativar a geração de registros da plataforma para um projeto

Para ativar o registro da plataforma no projeto do Google Cloud , execute o seguinte comando:

CLI da gcloud

gcloud artifacts projects update --enable-platform-logs --severity=SEVERITY --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH -H "X-GFE-SSL: yes" -H "Content-Type: application/json" -d '{"name": "projects/'PROJECT'/locations/'LOCATION'/projectConfig", "platformLogsConfig": {"logging_state": "ENABLED", "severity_level": "SEVERITY"}}' "https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"

Em que:

  • SEVERITY determina o tipo de ações que acionam a criação de registros da plataforma do Artifact Registry. É possível inserir INFO, ERROR ou excluir o campo --severity para criar registros da plataforma para todas as ações compatíveis.
  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, o projeto padrão ou atual será usado.

Ativar a geração de registros da plataforma para um repositório

CLI da gcloud

gcloud artifacts repositories update --enable-platform-logs --severity=SEVERITY REPOSITORY --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/repositories/'REPOSITORY'", "platformLogsConfig": {"loggingState": "ENABLED", "severityLevel": "SEVERITY"}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY?updateMask=platformLogsConfig"

Em que:

  • SEVERITY determina o tipo de ações que acionam a criação de registros da plataforma do Artifact Registry. É possível inserir INFO, ERROR ou excluir o campo --severity para criar registros da plataforma para todas as ações compatíveis.
  • REPOSITORY é o nome do seu repositório no Artifact Registry.
  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, o projeto padrão ou atual será usado.

Verificar a configuração da geração de registros da plataforma

É possível verificar se o registro da plataforma do Artifact Registry está ativado no seu projeto ou em um repositório específico.

Verificar o registro da plataforma para um projeto

Para verificar se o registro da plataforma do Artifact Registry está ativado no seu projeto, execute o seguinte comando:

CLI da gcloud

gcloud artifacts projects describe --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"

Em que:

  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, o projeto padrão ou atual será usado.

O resultado será o seguinte:

{
  "name": "projects/PROJECT/locations/{"<var>LOCATION</var>"}}/projectConfig"
  "platformLogsConfig": {
    "loggingState": "ENABLED"
    "severityLevel": "INFO"
  }
}

Verificar o registro da plataforma para um repositório

Para verificar se o registro de plataforma do Artifact Registry está ativado em um repositório, execute o seguinte comando:

CLI da gcloud

gcloud artifacts repositories describe REPOSITORY --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY"

Em que:

  • REPOSITORY é o nome do repositório;
  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, o projeto padrão ou atual será usado.

O resultado será o seguinte:

{
  "name": "projects/PROJECT/locations/LOCATION/repositories/REPOSITORY"
  "platformLogsConfig": {
    "loggingState": "ENABLED",
    "severityLevel": "INFO"
  }
}

Desativar a geração de registros da plataforma

É possível desativar o registro em plataforma para todo o projeto Google Cloud ou para um repositório específico.

Desativar a geração de registros da plataforma para um projeto

Para desativar o registro da plataforma no seu projeto Google Cloud , execute o seguinte comando:

CLI da gcloud

gcloud artifacts projects update --disable-platform-logs --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/projectConfig", "platformLogsConfig": {"logging_state": "DISABLED"}}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"

Em que:

  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, o projeto padrão ou atual será usado.

Desativar a geração de registros da plataforma para um repositório

Para desativar o registro em plataforma de um repositório, execute o seguinte comando:

CLI da gcloud

gcloud artifacts repositories update --disable-platform-logs REPOSITORY --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/repositories/'REPOSITORY'", "platformLogsConfig": {"loggingState": "DISABLED", "severityLevel": "INFO"}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY?updateMask=platformLogsConfig"

Em que:

  • REPOSITORY é o nome do seu repositório no Artifact Registry.
  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, o projeto padrão ou atual será usado.

Limpar a configuração de geração de registros da plataforma

É possível limpar a configuração de geração de registros da plataforma para um projeto ou um repositório. Quando você executa o comando de limpeza, o loggingState e o severityLevel do projeto ou repositório são definidos como nulos.

Se você limpar a configuração do projeto, somente os repositórios em que o registro da plataforma já foi ativado vão gerar registros da plataforma. Se você limpar a configuração de um repositório, ele vai herdar a configuração de geração de registros da plataforma do seu projeto.

Limpar a configuração de geração de registros da plataforma para um projeto

Para limpar a configuração de geração de registros da plataforma do seu projeto Google Cloud , execute o seguinte comando:

CLI da gcloud

gcloud artifacts projects update --clear-platform-logs --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/projectConfig", "platformLogsConfig": {}}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"

Em que:

  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, o projeto padrão ou atual será usado.

Limpar a configuração de geração de registros da plataforma para um repositório

Para limpar a configuração de geração de registros da plataforma de um repositório, execute o seguinte comando:

CLI da gcloud

gcloud artifacts repositories update --clear-platform-logs REPOSITORY --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/repositories/'REPOSITORY'", "platformLogsConfig": {}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY?updateMask=platformLogsConfig"

Em que:

  • REPOSITORY é o nome do seu repositório no Artifact Registry.
  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, o projeto padrão ou atual será usado.

Ver registros da plataforma

Para conferir os registros da plataforma, faça o seguinte:

  1. Abra a página da Análise de registros no console do Google Cloud .

    Abrir a página da Análise de registros

  2. No painel de consultas, clique no menu suspenso Nome do registro.

  3. Insira requests e marque a caixa de seleção requests no cabeçalho Artifact Registry.

  4. Clique em Aplicar.

    O Logging mostra registros de chamadas de API do plano de dados e do plano de controle no painel Resultados da consulta.

  5. Para ver o conteúdo de um registro, clique na seta ao lado de qualquer registro listado nos resultados da consulta.

Para mais informações sobre como entender os resultados da consulta na Análise de registros, consulte Ver os resultados da consulta.

Analisar registros da plataforma com a Análise de observabilidade

Use a Análise de observabilidade para executar consultas SQL nos registros do Artifact Registry e analisar os registros com mais detalhes. Esta seção contém vários exemplos de consultas para casos de uso comuns. É possível adaptar essas consultas para analisar outros aspectos do uso do Artifact Registry filtrando diferentes campos na estrutura LogEntry.

Antes de começar a usar a análise de observabilidade, faça o seguinte:

  1. Configure seus buckets de registros para usar a Análise de observabilidade.

  2. Configure papéis e permissões do Identity and Access Management para usar o Observability Analytics.

Em seguida, siga as etapas para Inserir e executar uma consulta personalizada. Quando você chegar ao painel Consulta do SQL, insira uma das seguintes consultas de exemplo:

Exemplo: os 10 principais endereços IP por volume de downloads

Essa consulta avalia os registros da plataforma do Artifact Registry e retorna os 10 principais endereços IP que baixaram mais dados dos seus repositórios nos últimos sete dias:

SELECT
  http_request.remote_ip AS client_ip,
  SUM(http_request.response_size) AS total_download_bytes
FROM
  `YOUR_PROJECT.YOUR_LOCATION.YOUR_BUCKET._AllLogs`
WHERE
  log_id = "artifactregistry.googleapis.com/requests"
  AND JSON_VALUE(resource.labels.repository_id) IS NOT NULL
  AND http_request.request_method = "GET"
  AND http_request.status >= 200 AND http_request.status < 300
  AND http_request.response_size > 0
  AND CAST(http_request.response_size AS INT64) > 0
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
GROUP BY
  client_ip
ORDER BY
  total_download_bytes DESC
LIMIT 10;

Exemplo: solicitações por repositório

Essa consulta avalia os registros da plataforma do Artifact Registry e retorna o número de solicitações feitas a cada repositório nas últimas 24 horas:

SELECT
  JSON_VALUE(resource.labels.repository_id) AS repository,
  JSON_VALUE(resource.labels.location) AS location,
  COUNT(*) AS request_count
FROM
  `YOUR_PROJECT.YOUR_LOCATION.YOUR_BUCKET._AllLogs`
WHERE
  log_id = "artifactregistry.googleapis.com/requests"
  AND JSON_VALUE(resource.labels.repository_id) IS NOT NULL
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
GROUP BY
  repository,
  location
ORDER BY
  request_count DESC;

Exemplo: solicitações com falha

Essa consulta avalia os registros da plataforma do Artifact Registry e lista detalhes das 10 solicitações com falha mais recentes na última hora:

SELECT
  timestamp,
  http_request.status,
  http_request.request_method,
  http_request.request_url,
  http_request.remote_ip,
  JSON_VALUE(resource.labels.repository_id) AS repository,
  JSON_VALUE(labels.resource_name) AS artifact_name,
  trace
FROM
  `YOUR_PROJECT.YOUR_LOCATION.YOUR_BUCKET._AllLogs`
WHERE
  log_id = "artifactregistry.googleapis.com/requests"
  AND JSON_VALUE(resource.labels.repository_id) IS NOT NULL
  AND http_request.status >= 400
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
ORDER BY
  timestamp DESC
LIMIT 10;