Esquema do BigQuery de registros exportados

Os esquemas de tabela do BigQuery para registros exportados são baseados na estrutura do tipo LogEntry e no conteúdo dos payloads de registro. O Stackdriver Logging também aplica algumas regras especiais para reduzir os nomes de campo do esquema do BigQuery para registros de auditoria. Veja a tabela de esquema ao selecionar uma tabela com as entradas de registro exportadas para a IU da Web do BigQuery.

Convenções de nomenclatura de campo

Existem algumas convenções de nomenclatura que se aplicam aos campos de entrada de registro:

  • Para os campos de entrada de registro que fazem parte do tipo LogEntry, os nomes de campo correspondentes do BigQuery são iguais a eles.
  • Para qualquer campo fornecido pelo usuário, a capitalização é normalizada para letras minúsculas, mas a nomenclatura é preservada.

    • Para campos em payloads estruturados, contanto que o especificador @type não esteja presente, a capitalização é normalizada para letras minúsculas, mas a nomenclatura é preservada.

      Para mais informações sobre payloads estruturados em que o especificador @type está presente, consulte Campos de payload com @type.

Os exemplos a seguir mostram como essas convenções de nomenclatura são aplicadas:

Campo de entrada de registro Mapeamento do tipo LogEntry Nome do campo do BigQuery
insertId insertId insertId
textPayload textPayload textPayload
httpRequest.status httpRequest.status httpRequest.status
httpRequest.requestMethod.GET httpRequest.requestMethod.[ABC] httpRequest.requestMethod.get
resource.labels.moduleid resource.labels.[ABC] resource.labels.moduleid
jsonPayload.MESSAGE jsonPayload.[ABC] jsonPayload.message
jsonPayload.myField.mySubfield jsonPayload.[ABC].[XYZ] jsonPayload.myfield.mysubfield

Quando o campo estruturado contém um especificador @type, o mapeamento dos campos de payload estruturado para nomes de campo do BigQuery é mais complicado. Falaremos sobre isso na seção a seguir.

Campos de payload com @type

Nesta seção serão abordados nomes de campos de esquemas especiais do BigQuery para entradas de registro cujo payload contenha especificadores de tipo (campos @type). Isso inclui as entradas de registro de auditoria exportadas realizadas no BigQuery. Por exemplo, nesta seção explicaremos por que o campo protoPayload de uma entrada de registro de auditoria pode ser mapeado para o campo do esquema do BigQuery protopayload_auditlog.

Regras de nomenclatura do esquema

Os payloads nas entradas de registro podem conter dados estruturados, que podem ter campos estruturados e aninhados. Qualquer um desses campos pode incluir um especificador de tipo opcional no seguinte formato:

@type: type.googleapis.com/[TYPE]

Os campos estruturados que têm especificadores de tipo recebem nomes de campo do BigQuery com [TYPE] anexado.

Por exemplo, a tabela a seguir mostra o mapeamento de campos de payload estruturados e de nível superior para os nomes de campo do BigQuery:

Payload @type do payload Campo de payload Nome do campo do BigQuery
jsonPayload (nenhum) statusCode jsonPayload.statusCode
jsonPayload type.googleapis.com/abc.Xyz statusCode jsonPayload_abc_xyz.statuscode
protoPayload (nenhum) statusCode protoPayload.statuscode
protoPayload type.googleapis.com/abc.Xyz statusCode protopayload_abc_xyz.statuscode

Se jsonPayload ou protoPayload tiver outros campos estruturados, esses campos internos serão mapeados da seguinte maneira:

  • Se o campo estruturado e aninhado não tiver um especificador @type, o nome de campo do BigQuery será o mesmo que o original, mas normalizado com letras minúsculas.
  • Se o campo estruturado e aninhado tiver um especificador @type, o nome de campo do BigQuery terá [TYPE] (que será preenchido) anexado e normalizado com letras minúsculas.

Há algumas exceções às regras anteriores para campos com especificadores de tipo:

  • Nos registros de solicitação do App Engine, o nome do payload nos registros exportados para o BigQuery é protoPayload, mesmo que ele tenha um especificador de tipo. Isso é ilustrado no exemplo de consulta de registros do App Engine em Consultas.

  • O Stackdriver Logging aplica algumas regras especiais para reduzir os nomes de campo do esquema do BigQuery para registros de auditoria. Isso é discutido na seção Campos do esquema de registro de auditoria exportados nesta página.

Exemplo

Veja como os campos de payloads estruturados são nomeados e utilizados quando você os exporta para o BigQuery.

Suponha que o payload de uma entrada de registro esteja estruturado assim:

jsonPayload: {
  name_a: {
    sub_a: "A value"
  }
  name_b: {
    @type: "type.googleapis.com/google.cloud.v1.SubType"
    sub_b: 22
  }
}

Veja abaixo como será feito o mapeamento de campos do BigQuery:

  • Os campos jsonPayload e name_a estão estruturados, mas não têm especificadores @type. Os nomes deles no BigQuery são jsonPayload e name_a, respectivamente.

  • Os campos sub_a e sub_b não estão estruturados. Portanto, os nomes deles no BigQuery são sub_a e sub_b, respectivamente.

  • O campo name_b tem um especificador @type, e o [TYPE] dele é google.cloud.v1.SubType. Portanto, o nome dele no BigQuery é name_b_google_cloud_v1_subtype.

Em resumo, estes são os cinco nomes do payload de entrada de registro no BigQuery:

jsonPayload
jsonPayload.name_a
jsonPayload.name_a.sub_a
jsonPayload.name_b_google_cloud_v1_subtype
jsonPayload.name_b_google_cloud_v1_subtype.sub_b

Campos do esquema de registro de auditoria exportados

Se você não trabalhar com registros de auditoria que foram exportados para o BigQuery, ignore esta seção.

Os campos do payload do registro de auditoria protoPayload.request, protoPayload.response e protoPayload.metadata têm especificadores @type, mas são tratados como dados JSON. Ou seja, o nome de esquema do BigQuery deles é o nome do campo com Json anexado, e eles contêm dados de string no formato JSON.

Os dois conjuntos de nomes de campo do payload do registro de auditoria são listados na tabela a seguir:

Campo de entrada de registro Nome do campo do BigQuery
protoPayload protopayload_auditlog
protopayload.metadata protopayload_auditlog.metadataJson
protoPayload.serviceData protopayload_auditlog.servicedata_v1_bigquery
Exemplo: protopayload_auditlog.servicedata_v1_bigquery.tableInsertRequest
protoPayload.request protopayload_auditlog.requestJson
protoPayload.response protopayload_auditlog.responseJson

Observe que a convenção de nomenclatura serviceData é específica dos registros de auditoria que são gerados pelo BigQuery e que, depois, serão exportados do Stackdriver Logging para o BigQuery. Essas entradas de registro contêm um campo serviceData com um especificador type.googleapis.com/google.cloud.bigquery.logging.v1.auditdata de:

Exemplo

Uma entrada de registro de auditoria gerada pelo BigQuery tem um campo com o seguinte nome:

protoPayload.serviceData.tableInsertRequest

Se ela for exportada para o BigQuery, como ficaria o campo tableInsertRequest? Antes de encurtá-lo, o nome de campo exportado correspondente é:

protopayload_google_cloud_audit_auditlog.servicedata_google_cloud_bigquery_logging_v1_auditdata.tableInsertRequest

Depois de encurtar o nome, o mesmo campo aparece nas tabelas do BigQuery assim:

protopayload_auditlog.servicedata_v1_bigquery.tableInsertRequest

Como exibir registros de auditoria

Para visualizar seus registros de auditoria usando a IU da web BigQuery, selecione uma tabela com suas entradas de registro exportadas.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Stackdriver Logging
Precisa de ajuda? Acesse nossa página de suporte.