Schéma BigQuery des journaux exportés

Les schémas de table BigQuery pour les journaux exportés se basent sur la structure du type LogEntry et sur le contenu des charges utiles des journaux. Stackdriver Logging applique également des règles spéciales pour raccourcir les noms de champs des schémas BigQuery pour les journaux d'audit. Vous pouvez afficher le schéma d'une table en en sélectionnant une comportant des entrées de journal exportées dans l'interface utilisateur Web de BigQuery.

Conventions de dénomination de champs

Des conventions de dénomination s'appliquent aux champs d'entrées de journal :

  • Pour les champs d'entrées de journaux appartenant au type LogEntry, les noms des champs BigQuery correspondants sont identiques aux noms des champs des entrées de journaux.
  • Pour les champs fournis par l'utilisateur, la casse des lettres est normalisée en minuscules, mais la dénomination est préservée.

    • Pour les champs des charges utiles structurées, tant que l'indicateur @type n'apparaît pas, la casse des lettres est normalisée en minuscules, mais la dénomination est préservée.

      Pour en savoir plus sur les charges utiles structurées contenant l'indicateur @type, consultez la section Champs de charge utile avec @type.

Les exemples suivants montrent comment s'appliquent ces conventions de dénomination :

Champ d'entrée de journal Mappage de type LogEntry Nom de champ 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

Le mappage des champs de charge utile structurée avec le nom des champs BigQuery est plus complexe lorsque le champ structuré contient un indicateur @type. Ce point est abordé dans la section suivante.

Champs de charge utile avec @type

Cette section décrit les noms de champs spéciaux des schémas BigQuery pour les entrées de journal qui possèdent des charges utiles contenant des indicateurs de type (champs @type). Cela inclut toutes les entrées de journal d'audit exportées qui sont conservées dans BigQuery. Cette partie explique par exemple pourquoi le champ protoPayload d'une entrée de journal d'audit peut être mappé au champ protopayload_auditlog d'un schéma BigQuery.

Règles de dénomination des schémas

Les charges utiles des entrées de journal peuvent comprendre des données structurées, qui peuvent à leur tour contenir des champs structurés imbriqués. Tous les champs structurés peuvent inclure un indicateur de type facultatif au format suivant :

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

Les champs structurés qui possèdent des indicateurs de type reçoivent généralement des noms de champs BigQuery suivis d'un [TYPE].

Par exemple, le tableau suivant présente le mappage des champs de charge utile structurée de niveau supérieur avec les noms de champs BigQuery :

Charge utile Indicateur @type de la charge utile Champ de charge utile Nom de champ BigQuery
jsonPayload (aucun) statusCode jsonPayload.statusCode
jsonPayload type.googleapis.com/abc.Xyz statusCode jsonPayload_abc_xyz.statuscode
protoPayload (aucun) statusCode protoPayload.statuscode
protoPayload type.googleapis.com/abc.Xyz statusCode protopayload_abc_xyz.statuscode

Si les charges utiles jsonPayload ou protoPayload contiennent d'autres champs structurés, ces champs internes sont alors mappés de la façon suivante :

  • Si le champ structuré imbriqué ne contient pas d'indicateur @type, son nom de champ BigQuery est identique au nom de champ d'origine, sauf qu'il est normalisé en lettres minuscules.
  • Si le champ structuré imbriqué contient un indicateur @type, son nom de champ BigQuery est suivi d'un [TYPE] (réécrit). Ce nom est par ailleurs normalisé en lettres minuscules.

Il existe quelques exceptions aux règles précédentes pour les champs contenant des indicateurs de type :

  • Dans les journaux de requêtes App Engine, le nom de la charge utile des journaux exportés dans BigQuery est protoPayload, même si elle possède un indicateur de type. Cette approche est illustrée dans l'exemple de requête concernant les journaux App Engine de la section Requêtes.

  • Stackdriver Logging applique des règles spéciales pour raccourcir les noms de champs des schémas BigQuery pour les journaux d'audit. Ce point est abordé dans la section Champs de schémas de journaux d'audit exportés de cette page.

Exemple

Cet exemple illustre la façon dont les champs de charge utile structurée sont nommés et utilisés lors de l'exportation vers BigQuery.

Imaginons que la charge utile d'une entrée de journal possède la structure suivante :

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

Dans ce cas, le mappage avec les champs BigQuery est tel que décrit ci-dessous :

  • Les champs jsonPayload et name_a sont structurés, mais ils ne contiennent pas d'indicateurs @type. Leurs noms BigQuery correspondent donc respectivement à jsonPayload et name_a.

  • Les champs sub_a et sub_b ne sont pas structurés. Leurs noms BigQuery correspondent donc respectivement à sub_a et sub_b.

  • Le champ name_b possède un indicateur @type pour lequel [TYPE] a la valeur google.cloud.v1.SubType. Son nom BigQuery correspond donc à name_b_google_cloud_v1_subtype.

En résumé, les cinq noms BigQuery suivants sont définis pour la charge utile de l'entrée de journal :

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

Champs de schémas de journaux d'audit exportés

Si vous ne travaillez pas avec des journaux d'audit exportés vers BigQuery, vous pouvez ignorer cette section.

Les champs de charge utile de journal d'audit protoPayload.request, protoPayload.response et protoPayload.metadata comportent des indicateurs @type, mais sont traités comme des données JSON. Autrement dit, leurs noms de schéma BigQuery correspondent à leurs noms de champs suivis de Json, et ils contiennent des données de chaîne au format JSON.

Les deux ensembles de noms de champs de charge utile de journal d'audit sont répertoriés dans le tableau suivant :

Champ d'entrée de journal Nom de champ BigQuery
protoPayload protopayload_auditlog
protopayload.metadata protopayload_auditlog.metadataJson
protoPayload.serviceData protopayload_auditlog.servicedata_v1_bigquery
Exemple : protopayload_auditlog.servicedata_v1_bigquery.tableInsertRequest
protoPayload.request protopayload_auditlog.requestJson
protoPayload.response protopayload_auditlog.responseJson

Notez que la convention de dénomination serviceData est spécifique aux journaux d'audit qui sont générés par BigQuery, puis exportés de Stackdriver Logging vers BigQuery. Ces entrées de journaux d'audit contiennent un champ serviceData possédant l'indicateur @type suivant : type.googleapis.com/google.cloud.bigquery.logging.v1.auditdata.

Exemple

Une entrée de journal d'audit générée par BigQuery contient un champ dont le nom est le suivant :

protoPayload.serviceData.tableInsertRequest

Si cette entrée de journal était exportée vers BigQuery, comment le champ tableInsertRequest serait-il référencé ? Avant d'être raccourci, le nom de champ exporté correspondant serait le suivant :

protopayload_google_cloud_audit_auditlog.servicedata_google_cloud_bigquery_logging_v1_auditdata.tableInsertRequest

Après avoir été raccourci, le même champ est référencé dans les tables BigQuery de la manière suivante :

protopayload_auditlog.servicedata_v1_bigquery.tableInsertRequest

Consulter vos journaux d'audit

Pour afficher vos journaux d'audit à l'aide de l'interface utilisateur Web de BigQuery, sélectionnez une table comportant vos entrées de journal exportées.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Stackdriver Logging
Besoin d'aide ? Consultez notre page d'assistance.