Este documento aborda como transferir e rever os registos de utilização e as informações de armazenamento dos seus contentores do Cloud Storage, bem como analisar os registos através do Google BigQuery.
Introdução
O Cloud Storage oferece registos de utilização e registos de armazenamento sob a forma de ficheiros CSV que pode transferir e ver. Os registos de utilização fornecem informações para todos os pedidos feitos num contentor especificado e são criados de hora a hora. Os registos de armazenamento fornecem informações sobre o consumo de armazenamento desse contentor no último dia e são criados diariamente.
Após a configuração, os registos de utilização e os registos de armazenamento são gerados automaticamente para o contentor especificado e armazenados como novos objetos num contentor que especificar.
Os registos de utilização e os registos de armazenamento estão sujeitos aos mesmos preços que outros objetos armazenados no Cloud Storage.
Deve usar registos de utilização ou registos de auditoria do Cloud?
Na maioria dos casos, os registos de auditoria do Cloud são o método recomendado para gerar registos que monitorizam as operações da API realizadas no Cloud Storage:
- Os registos de auditoria do Cloud monitorizam o acesso de forma contínua, com a entrega de eventos no espaço de segundos após a respetiva ocorrência.
- Os registos de auditoria do Cloud produzem registos com os quais é mais fácil trabalhar.
- Os registos de auditoria do Google Cloud podem monitorizar muitos dos seus Google Cloud serviços e não apenas o Cloud Storage.
- O Cloud Audit Logs pode, opcionalmente, registar informações detalhadas de pedidos e respostas.
Em alguns casos, pode querer usar registos de utilização em vez de ou além de usar os registos de auditoria na nuvem. É provável que queira usar os registos de utilização se:
- Quer acompanhar o acesso que ocorre porque um recurso tem
allUsers
ouallAuthenticatedUsers
nas respetivas definições de controlo de acesso, como o acesso a recursos num contentor que configurou para ser um Website estático. - Quiser acompanhar as alterações feitas pelas funcionalidades de gestão do ciclo de vida de objetos ou classificação automática.
- Quer que os seus registos incluam informações de latência, o tamanho do pedido e da resposta de pedidos HTTP individuais ou o caminho de URL completo e todos os parâmetros de consulta.
- Quer acompanhar o acesso apenas a determinados contentores no seu projeto e, por isso, não quer ativar os registos de auditoria de acesso a dados, que acompanham o acesso a todos os contentores no seu projeto.
Tenha em atenção que os registos de utilização só são gerados de hora a hora e podem sofrer atrasos, especialmente quando são criados relatórios sobre contentores que registam taxas de pedidos elevadas.
Deve usar registos de armazenamento ou a monitorização?
Geralmente, não deve usar registos de armazenamento. A ferramenta recomendada para medir o consumo de armazenamento é a monitorização, que fornece ferramentas de visualização, bem como métricas adicionais relacionadas com o consumo de armazenamento que os registos de armazenamento não fornecem. Consulte o separador da consola para determinar o tamanho de um contentor para ver instruções passo a passo sobre a utilização da monitorização.
Configure o envio de registos
Antes de configurar a entrega de registos, tem de ter um contentor para armazenar registos. Este contentor tem de cumprir os seguintes requisitos, caso contrário, o registo falha:
O contentor que armazena os registos tem de existir na mesma organização que o contentor que está a ser registado.
- Se o contentor que está a ser registado não estiver contido em nenhuma organização, o contentor que armazena os registos tem de existir no mesmo projeto que o contentor que está a ser registado.
Se usar ou ativar os VPC Service Controls, o contentor que armazena os registos tem de residir no mesmo perímetro de segurança que o contentor que está a ser registado.
Se ainda não tiver um contentor que cumpra estes requisitos, crie o contentor.
Os passos seguintes descrevem como configurar o fornecimento de registos para um contentor:
Linha de comandos
Conceda ao Cloud Storage a função de
roles/storage.objectCreator
para o contentor:gcloud storage buckets add-iam-policy-binding gs://example-logs-bucket --member=group:cloud-storage-analytics@google.com --role=roles/storage.objectCreator
A função concede ao Cloud Storage, sob a forma do grupo
cloud-storage-analytics@google.com
, autorização para criar e armazenar os seus registos como novos objetos.Os objetos de registo têm a LCA de objeto predefinida do contentor de registos, a menos que o acesso uniforme ao nível do contentor esteja ativado no contentor.
Ative o registo para o seu contentor através da flag
--log-bucket
:gcloud storage buckets update gs://example-bucket --log-bucket=gs://example-logs-bucket [--log-object-prefix=log_object_prefix]
Opcionalmente, pode definir um prefixo de objeto para os objetos de registo através da flag
--log-object-prefix
. O prefixo do objeto forma o início do nome do objeto de registo. Pode ter, no máximo, 900 carateres e tem de ser um nome de objeto válido. Por predefinição, o prefixo do objeto é o nome do contentor para o qual os registos estão ativados.
APIs REST
API JSON
Conceda ao Cloud Storage a função
roles/storage.objectCreator
para o contentor. Se existirem associações de IAM adicionais ao nível do contentor, certifique-se de que as inclui no pedido.POST /storage/v1/b/example-logs-bucket/iam Host: storage.googleapis.com { "bindings":[ { "role": "roles/storage.objectCreator", "members":[ "group-cloud-storage-analytics@google.com" ] } ] }
A função concede ao Cloud Storage, sob a forma do grupo
cloud-storage-analytics@google.com
, autorização para criar e armazenar os seus registos como novos objetos.Os objetos de registo têm a LCA de objeto predefinida do contentor de registos, a menos que o acesso uniforme ao nível do contentor esteja ativado no contentor.
Ative o registo para o seu contentor através do seguinte pedido:
PATCH /storage/v1/b/example-bucket Host: storage.googleapis.com { "logging": { "logBucket": "example-logs-bucket", "logObjectPrefix": "log_object_prefix" } }
API XML
Defina autorizações para permitir a autorização
WRITE
do Cloud Storage no contentor para criar e armazenar os seus registos como novos objetos. Tem de adicionar uma entrada de ACL para o contentor que conceda ao grupocloud-storage-analytics@google.com
acesso de escrita. Certifique-se de que inclui todas as ACLs existentes para o contentor, além da nova ACL, no pedido.PUT /example-logs-bucket?acl HTTP/1.1 Host: storage.googleapis.com <AccessControlList> <Entries> <Entry> <Scope type="GroupByEmail"> <EmailAddress>cloud-storage-analytics@google.com</EmailAddress> </Scope> <Permission>WRITE</Permission> </Entry> <!-- include other existing ACL entries here--> </Entries> </AccessControlList>
Ative o registo para o seu contentor através do parâmetro de consulta de registo:
PUT /example-bucket?logging HTTP/1.1 Host: storage.googleapis.com <Logging> <LogBucket>example-logs-bucket</LogBucket> <LogObjectPrefix>log_object_prefix</LogObjectPrefix> </Logging>
Verifique o estado da registo
Linha de comandos
Verifique o registo através do comando buckets describe
com o sinalizador --format
:
gcloud storage buckets describe gs://example-bucket --format="default(logging_config)"
Também pode guardar as configurações de registo num ficheiro:
gcloud storage buckets describe gs://example-bucket > your_logging_configuration_file --format="default(logging_config)"
Se o registo estiver ativado, o servidor devolve a configuração de registo na resposta:
logging: logBucket: example-logs-bucket logObjectPrefix: log_object_prefix
Se o registo não estiver ativado, é devolvido o seguinte:
null
APIs REST
API JSON
Envie um pedido GET para a configuração de registo do contentor, conforme mostrado no exemplo seguinte:
GET /storage/v1/b/example-bucket?fields=logging Host: storage.googleapis.com
Se o registo estiver ativado, o servidor envia a configuração na resposta. Uma resposta pode ter um aspeto semelhante ao seguinte:
{ "logging": { "logBucket": "example-logs-bucket", "logObjectPrefix": "log_object_prefix" } }
Se o registo não estiver ativado, é devolvida uma configuração vazia:
{}
API XML
Envie um pedido GET Bucket para a configuração de registo do contentor, conforme mostrado no exemplo seguinte:
GET /example-bucket?logging HTTP/1.1 Host: storage.googleapis.com
Se o registo estiver ativado, o servidor envia a configuração na resposta. Uma resposta pode ter um aspeto semelhante ao seguinte:
<?xml version="1.0" ?> <Logging> <LogBucket> example-logs-bucket </LogBucket> <LogObjectPrefix> log_object_prefix </LogObjectPrefix> </Logging>
Se o registo não estiver ativado, é devolvida uma configuração vazia:
<?xml version="1.0" ?> <Logging/>
Transferir registos
Os registos de armazenamento são gerados uma vez por dia e contêm a quantidade de armazenamento usado no dia anterior. Normalmente, são criados antes das 10:00 (PST).
Os registos de utilização são gerados de hora a hora quando existe atividade para comunicar no contentor monitorizado. Normalmente, os registos de utilização são criados 15 minutos após o fim da hora.
A forma mais fácil de transferir os registos de utilização e os registos de armazenamento do contentor no qual estão armazenados é através da Google Cloud consola ou da gcloud storage
CLI. Os registos de utilização estão no formato CSV e têm a seguinte convenção de nomenclatura:
OBJECT_PREFIX_usage_TIMESTAMP_ID_v0
Da mesma forma, os registos de armazenamento são denominados através da seguinte convenção:
OBJECT_PREFIX_storage_TIMESTAMP_ID_v0
Por exemplo, o seguinte é o nome de um objeto de registo de utilização que usa o prefixo do objeto predefinido, comunica a utilização para o contentor denominado example-bucket
e foi criado a 18 de junho de 2022 às 14:00 UTC:
example-bucket_usage_2022_06_18_14_00_00_1702e6_v0
Da mesma forma, o seguinte é o nome do objeto de registo de armazenamento que usa o prefixo do objeto predefinido e foi criado a 18 de junho de 2022 para o mesmo contentor:
example-bucket_storage_2022_06_18_07_00_00_1702e6_v0
Para transferir registos:
Consola
- Na Google Cloud consola, aceda à página Recipientes do Cloud Storage.
Selecione o contentor no qual os seus registos estão armazenados.
Clique no objeto de registo adequado para transferir ou ver os seus registos.
Linha de comandos
Execute o seguinte comando:
gcloud storage cp gs://BUCKET_NAME/LOGS_OBJECT DESTINATION
Onde:
BUCKET_NAME
é o nome do contentor no qual os registos são armazenados. Por exemplo,example-logs-bucket
.LOGS_OBJECT
é o nome do registo de utilização ou do registo de armazenamento que está a transferir. Por exemplo,example-bucket_usage_2022_06_18_14_00_00_1702e6_v0
.DESTINATION
é a localização para a qual o registo está a ser transferido. Por exemplo,Desktop/Logs
.
Analise registos no BigQuery
Para consultar a sua utilização do Cloud Storage e os registos de armazenamento, pode usar o Google BigQuery, que permite consultas rápidas de tipo SQL em tabelas apenas de anexação. A ferramenta de linha de comandos do BigQuery, bq
, é uma ferramenta baseada em Python que lhe permite aceder ao BigQuery a partir da linha de comandos. Para ver informações sobre como transferir e usar o bq, consulte a página de referência da ferramenta de linhas de comando bq.
Carregue registos para o BigQuery
Selecione um projeto predefinido.
Para ver detalhes sobre a seleção de um projeto, consulte o artigo Trabalhar com projetos.
Crie um novo conjunto de dados.
$ bq mk storageanalysis Dataset 'storageanalysis' successfully created.
Liste os conjuntos de dados no projeto:
$ bq ls datasetId
-----------------
storageanalysisGuarde os esquemas de utilização e armazenamento no seu computador local para utilização no comando de carregamento.
Pode encontrar os esquemas a usar nestas localizações: cloud_storage_usage_schema_v0 e cloud_storage_storage_schema_v0. Os esquemas também são descritos na secção Formato dos registos de utilização e armazenamento.
Carregue os registos de utilização no conjunto de dados.
$ bq load --skip_leading_rows=1 storageanalysis.usage \ gs://example-logs-bucket/example-bucket_usage_2014_01_15_14_00_00_1702e6_v0 \ ./cloud_storage_usage_schema_v0.json $ bq load --skip_leading_rows=1 storageanalysis.storage \ gs://example-logs-bucket/example-bucket_storage_2014_01_05_14_00_00_091c5f_v0 \ ./cloud_storage_storage_schema_v0.json
Estes comandos fazem o seguinte:
- Carregue os registos de utilização e armazenamento do contentor
example-logs-bucket
. - Crie tabelas
usage
estorage
no conjunto de dadosstorageanalysis
. - Ler dados de esquema (ficheiro .json) do mesmo diretório onde o comando bq é executado.
- Ignore a primeira linha de cada ficheiro de registo, uma vez que contém descrições das colunas.
Como foi a primeira vez que executou o comando load no exemplo aqui, as tabelas
usage
estorage
foram criadas. Pode continuar a anexar dados a estas tabelas com comandos de carregamento subsequentes com diferentes nomes de ficheiros de registo de utilização ou usando carateres universais. Por exemplo, o seguinte comando anexa dados de todos os registos que começam por "bucket_usuage_2014" à tabelastorage
:$ bq load --skip_leading_rows=1 storageanalysis.usage \ gs://example-logs-bucket/bucket_usage_2014* \ ./cloud_storage_usage_schema_v0.json
Quando usar carateres universais, pode querer mover os registos já carregados para o BigQuery para outro diretório (por exemplo,
gs://example-logs-bucket/processed
) para evitar carregar dados de um registo mais do que uma vez.- Carregue os registos de utilização e armazenamento do contentor
Também pode aceder à funcionalidade do BigQuery através da ferramenta de navegador do BigQuery. Com a ferramenta de navegador, pode carregar dados através do processo de criação de tabelas.
Para mais informações sobre o carregamento de dados do Cloud Storage, incluindo o carregamento de dados por programação, consulte o artigo Carregar dados do Cloud Storage.
Modifique o esquema do registo de utilização
Em alguns cenários, pode ser útil pré-processar os registos de utilização antes de os carregar para o BigQuery. Por exemplo, pode adicionar informações adicionais aos registos de utilização para facilitar a análise de consultas no BigQuery. Nesta secção, vamos mostrar como pode adicionar o nome do ficheiro de cada registo de utilização do armazenamento ao registo. Isto requer a modificação do esquema existente e de cada ficheiro de registo.
Modifique o esquema existente, cloud_storage_storage_schema_v0, para adicionar o nome do ficheiro, conforme mostrado abaixo. Atribua ao novo esquema um novo nome, por exemplo, cloud_storage_storage_schema_custom.json, para o distinguir do original.
[ {"name": "bucket", "type": "string", "mode": "REQUIRED"}, {"name": "storage_byte_hours","type": "integer","mode": "REQUIRED"}, {"name": "filename","type": "string","mode": "REQUIRED"} ]
Pré-processe os ficheiros de registo de utilização do armazenamento com base no novo esquema antes de os carregar para o BigQuery.
Por exemplo, os seguintes comandos podem ser usados num ambiente Linux, macOS ou Windows (Cygwin):
gcloud storage cp gs://example-logs-bucket/example-bucket_storage\* . for f in example-bucket_storage\*; do sed -i -e "1s/$/,\"filename\"/" -e "2s/$/,\""$f"\"/" $f; done
O comando
gcloud storage
copia os ficheiros para o seu diretório de trabalho. O segundo comando percorre os ficheiros de registo e adiciona "filename" à linha de descrição (primeira linha) e o nome do ficheiro real à linha de dados (segunda linha). Segue-se um exemplo de um ficheiro de registo modificado:"bucket","storage_byte_hours","filename" "example-bucket","5532482018","example-bucket_storage_2014_01_05_08_00_00_021fd_v0"
Quando carrega os registos de utilização do armazenamento para o BigQuery, carregue os registos modificados localmente e use o esquema personalizado.
for f in example-bucket_storage\*; \ do ./bq.py load --skip_leading_rows=1 storageanalysis.storage $f ./cloud_storage_storage_schema_custom.json; done
Consulte registos no BigQuery
Depois de os registos serem carregados para o BigQuery, pode consultar os registos de utilização para devolver informações sobre os seus contentores registados. O exemplo seguinte mostra como usar a ferramenta bq num cenário em que tem registos de utilização de um contentor durante vários dias e carregou os registos, conforme mostrado em Carregar registos de utilização para o BigQuery. Também pode executar as consultas abaixo através da ferramenta de navegador do BigQuery.
Na ferramenta bq, introduza o modo interativo.
$ bq shell
Executar uma consulta na tabela de registo de armazenamento.
Por exemplo, a consulta seguinte mostra como o armazenamento de um contentor registado muda ao longo do tempo. Assume que modificou os registos de utilização de armazenamento conforme descrito em Modificar o esquema do registo de utilização e que os ficheiros de registo têm o nome "logstorage*".
project-name>SELECT SUBSTRING(filename, 13, 10) as day, storage_byte_hours/24 as size FROM [storageanalysis.storage] ORDER BY filename LIMIT 100
Exemplo de resultado da consulta:
Waiting on bqjob_r36fbf5c164a966e8_0000014379bc199c_1 ... (0s) Current status: DONE +------------+----------------------+ | day | size | +------------+----------------------+ | 2014_01_05 | 2.3052008408333334E8 | | 2014_01_06 | 2.3012297245833334E8 | | 2014_01_07 | 3.3477797120833334E8 | | 2014_01_08 | 4.4183686058333334E8 | +-----------------------------------+
Se não modificou o esquema e está a usar o esquema predefinido, pode executar a seguinte consulta:
project-name>SELECT storage_byte_hours FROM [storageanalysis.storage] LIMIT 100
Execute uma consulta na tabela de registo de utilização.
Por exemplo, a consulta seguinte mostra como resumir os métodos de pedido que os clientes usam para aceder aos recursos no contentor registado.
project-name>SELECT cs_method, COUNT(*) AS count FROM [storageanalysis.usage] GROUP BY cs_method
Exemplo de resultado da consulta:
Waiting on bqjob_r1a6b4596bd9c29fb_000001437d6f8a52_1 ... (0s) Current status: DONE +-----------+-------+ | cs_method | count | +-----------+-------+ | PUT | 8002 | | GET | 12631 | | POST | 2737 | | HEAD | 2173 | | DELETE | 7290 | +-----------+-------+
Saia da shell interativa da ferramenta bq.
project-name> quit
Desative o registo
Linha de comandos
Desative o registo com o sinalizador --clear-log-bucket
no comando
buckets update
:
gcloud storage buckets update gs://example-bucket --clear-log-bucket
Para verificar se o registo foi desativado com êxito, use o comando
buckets describe
:
gcloud storage buckets describe gs://example-bucket --format="default(logging_config)"
Se o registo estiver desativado, é devolvido o seguinte:
null
APIs REST
API JSON
Desative o registo enviando um pedido PATCH para a configuração de registo do contentor, conforme mostrado no exemplo seguinte.
PATCH /example-bucket?logging HTTP/1.1 Host: storage.googleapis.com { "logging": null }
API XML
Desative o registo enviando um pedido PUT para a configuração de registo do contentor, conforme mostrado no exemplo seguinte:
PUT /example-bucket?logging HTTP/1.1 Host: storage.googleapis.com <Logging/>
Formato do registo de utilização e armazenamento
Os registos de utilização e os registos de armazenamento podem fornecer uma quantidade excessiva de informações. Pode usar as tabelas seguintes para ajudar a identificar todas as informações fornecidas nestes registos.
Campos do registo de utilização:
Campo | Tipo | Descrição |
---|---|---|
time_micros |
número inteiro | A hora em que o pedido foi concluído, em microssegundos desde a época Unix. |
c_ip |
de string | O endereço IP a partir do qual o pedido foi feito. O prefixo "c" indica que se trata de informações sobre o cliente. |
c_ip_type |
número inteiro | O tipo de IP no campo c_ip:
|
c_ip_region |
de string | Reservado para utilização futura. |
cs_method |
de string | O método HTTP desta solicitação. O prefixo "cs" indica que estas informações foram enviadas do cliente para o servidor. |
cs_uri |
de string | O URI do pedido. |
sc_status |
número inteiro | O código de estado HTTP que o servidor enviou em resposta. O prefixo "sc" indica que estas informações foram enviadas do servidor para o cliente. |
cs_bytes |
número inteiro | O número de bytes enviados no pedido. |
sc_bytes |
número inteiro | O número de bytes enviados na resposta. |
time_taken_micros |
número inteiro | O tempo que demorou a publicar o pedido em microssegundos, medido desde o momento em que o primeiro byte é recebido até ao envio da resposta. Tenha em atenção que, para os carregamentos retomáveis, o ponto final é determinado pela resposta ao pedido de carregamento final que fez parte do carregamento retomável. |
cs_host |
de string | O anfitrião no pedido original. |
cs_referer |
de string | O referenciador HTTP para o pedido. |
cs_user_agent |
de string | O agente do utilizador do pedido. O valor é GCS Lifecycle Management para pedidos feitos pela gestão do ciclo de vida. |
s_request_id |
de string | O identificador do pedido. |
cs_operation |
de string | A operação do Cloud Storage, por exemplo, GET_Object . Este
pode ser nulo. |
cs_bucket |
de string | O grupo especificado no pedido. |
cs_object |
de string | O objeto especificado nesta solicitação. Pode ser nulo. |
Campos do registo de armazenamento:
Campo | Tipo | Descrição |
---|---|---|
bucket |
de string | O nome do contentor. |
storage_byte_hours |
número inteiro | Tamanho médio em byte-horas durante um período de 24 horas do contentor. Para obter o tamanho total do contentor, divida as horas de bytes por 24. |