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.
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
allUsersouallAuthenticatedUsersnas respetivas definições de controlo de acesso, como o acesso a recursos num contentor que configurou para ser um Website estático. - Quer acompanhar as alterações feitas pelas funcionalidades de gestão do ciclo de vida de objetos ou Autoclass.
- 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
roles/storage.objectCreatorpara 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 usando a 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 de
roles/storage.objectCreatorpara 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. { "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. { "logging": { "logBucket": "example-logs-bucket", "logObjectPrefix": "log_object_prefix" } }
API XML
Defina autorizações para permitir a autorização
WRITEdo 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.comacesso 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. <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. <Logging> <LogBucket>example-logs-bucket</LogBucket> <LogObjectPrefix>log_object_prefix</LogObjectPrefix> </Logging>
Verifique o estado do 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.
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.
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 storageCLI. 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 estã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 como selecionar 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.jsonEstes comandos fazem o seguinte:
- Carregue os registos de utilização e armazenamento do contentor
example-logs-bucket. - Crie tabelas
usageestorageno 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, foram criadas as tabelas
usageestorage. 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.jsonQuando 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 um novo nome ao novo esquema, 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 storagecopia 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, entre no 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. { "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. <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. |