Acessar e usar registros da plataforma

Configure registros da plataforma no Artifact Registry para visualizar informações sobre as solicitações bem-sucedidas e com falha feitas aos seus repositórios do Artifact Registry. Os registros da plataforma são gerados pelo Cloud Logging e podem ser visualizados no Análise de registros. É possível revisar os registros da plataforma do Artifact Registry para ajudar a solucionar problemas de solicitações com falha, manter registros de solicitações bem-sucedidas e visualizar 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ório, como criar, editar descrições e excluir repositórios, e ações de gerenciamento de artefatos, como listar, marcar e excluir artefatos. As ações do plano de dados incluem operações como enviar e extrair 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 de repositório)
    • Modo do 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 visualizar os registros da plataforma do Artifact Registry no Análise de registros.

Antes de começar

Ativar a API Logging.

Funções exigidas

Para ter 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 personalizados papéis ou outros predefinidos papéis.

Ativar a geração de registros da plataforma

É possível ativar a geração de registros da plataforma em todo o seu Google Cloud projeto ou em um repositório específico.

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

Para ativar a geração de registros da plataforma para seu Google Cloud projeto, execute o seguinte comando:

CLI 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, então o projeto atual ou projeto padrão será usado.

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

CLI 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 repositório no Artifact Registry.
  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, então o projeto atual ou projeto padrão será usado.

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

É possível verificar se a geração de registros da plataforma do Artifact Registry está ativada no projeto ou em um repositório específico.

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

Para verificar se a geração de registros da plataforma do Artifact Registry está ativada no projeto, execute o seguinte comando:

CLI 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, então o projeto atual ou projeto padrão será usado.

O resultado será assim:

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

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

Para verificar se a geração de registros da plataforma do Artifact Registry está ativada em um repositório, execute o seguinte comando:

CLI 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, então o projeto atual ou projeto padrão será usado.

O resultado será assim:

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

Desativar a geração de registros da plataforma

É possível desativar a geração de registros da plataforma em todo o seu Google Cloud projeto ou em um repositório específico.

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

Para desativar a geração de registros da plataforma para seu Google Cloud projeto, execute o seguinte comando:

CLI 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, então o projeto atual ou projeto padrão será usado.

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

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

CLI 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 repositório no Artifact Registry.
  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, então o projeto atual ou projeto padrão 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. Ao executar 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, apenas os repositórios em que a geração de registros da plataforma já foi ativada vão produzir 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 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 Google Cloud projeto, execute o seguinte comando:

CLI 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, então o projeto atual ou projeto padrão 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 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 repositório no Artifact Registry.
  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, então o projeto atual ou projeto padrão será usado.

Visualizar registros da plataforma

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

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

    Abrir a página da Análise de registros

  2. No painel de consulta, 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 visualizar 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 Visualizar os resultados da consulta.

Analisar registros da plataforma com a análise de observabilidade

É possível usar a análise de observabilidade para executar consultas SQL nos registros do Artifact Registry, permitindo analisar seus 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 os buckets de registro para usar a análise de observabilidade.

  2. Configure os papéis e permissões do Identity and Access Management para usar a análise de observabilidade.

Em seguida, siga as etapas para inserir e executar uma consulta personalizada. Quando chegar ao painel Consulta SQL, você poderá inserir um dos seguintes exemplos de consultas:

Exemplo: 10 principais endereços IP por volume baixado

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;