À propos des vues analytiques

Ce document décrit les vues analytiques et explique quand vous pouvez les créer. Il décrit également les différences entre les vues Analytics et les requêtes enregistrées.

Présentation

Une vue Analytics est une ressource sur laquelle vous pouvez exécuter des requêtes. En d'autres termes, une fois que vous avez défini une vue Analytics, vous pouvez écrire des requêtes dans lesquelles vous spécifiez votre vue Analytics dans la clause FROM.

L'avantage principal de l'utilisation des vues analytiques est que vous n'êtes pas limité à l'interrogation des données dans le format défini par une API ou un système. Une vue analytique vous permet de définir un schéma, ce qui vous permet de simplifier vos requêtes ou de réduire le temps que vous passez à les écrire. La requête dans une vue analytique peut effectuer des opérations telles que conserver uniquement des champs spécifiques, renommer des champs, déplacer des champs imbriqués vers une colonne de premier niveau, et effectuer des regroupements et des agrégations.

Les vues Analytics ne sont pas des vues matérialisées. Une vue analytique n'est pas une vue précalculée qui met régulièrement en cache les résultats des requêtes. Par conséquent, interroger une vue Analytics revient à interroger les vues listées dans la requête de la vue Analytics.

Les vues Analytics sont plus puissantes que les requêtes enregistrées, qui sont des requêtes que vous exécutez sur la page Analyse de journaux, puis enregistrez. Vous pouvez réexécuter une requête enregistrée, mais vous ne pouvez pas interroger les résultats d'une requête enregistrée.

Types de vues d'analyse

Il existe deux types de vues Analytics : celles définies par l'utilisateur et celles définies par le système.

  • Les vues Analytics définies par l'utilisateur sont celles que vous créez. Vous pouvez interroger, modifier et supprimer les vues Analytics définies par l'utilisateur.

  • Les vues d'analyse définies par le système sont des vues d'analyse créées par les servicesGoogle Cloud . Vous pouvez interroger les vues analytiques définies par le système. Toutefois, vous ne pouvez pas les modifier ni les supprimer.

Pour savoir comment lister les vues Analytics dans votre projetGoogle Cloud , consultez Lister les vues Analytics.

Emplacement des vues analytiques

L'emplacement d'une vue Analytics est déterminé par l'emplacement des ressources qu'elle interroge. Par exemple, si une vue analytique interroge une vue des journaux ou une vue d'observabilité qui se trouve dans l'emplacement global, l'emplacement de la vue analytique doit également être global. Lorsque vous utilisez la console Google Cloud pour créer une vue Analytics, l'emplacement est défini automatiquement.

Exemples de cas d'utilisation

L'avantage principal d'une vue Analytics est que vous n'êtes pas limité à interroger les données dans le format défini par le système. Une vue analytique vous permet de définir un schéma, ce qui vous permet de simplifier vos requêtes ou de réduire le temps que vous passez à les écrire.

Interroger les détails du réseau

Vous souhaitez analyser les performances du réseau à l'aide des journaux de flux VPC. Vous devez analyser les performances réseau globales et identifier des réseaux, des adresses IP et des hôtes spécifiques. Ces informations sont stockées dans des champs imbriqués du champ json_payload d'une entrée de journal.

Pour simplifier vos requêtes d'analyse, vous allez créer la vue analytique suivante et la nommer network_details :

SELECT
  -- Create a column for each network field.
  JSON_VALUE(resource.labels.subnetwork_name) subnetwork_name,
  JSON_VALUE(json_payload.src_instance.vm_name) vm_name,
  JSON_VALUE(json_payload.connection.src_ip) as src_ip,
  JSON_VALUE(json_payload.connection.src_port) as src_port,
  JSON_VALUE(json_payload.connection.dest_ip) as dest_ip,
  JSON_VALUE(json_payload.connection.dest_port) as dest_port,
  CAST(JSON_VALUE(json_payload.bytes_sent) as INT64) as bytes_sent,
  CAST(JSON_VALUE(json_payload.packets_sent) as INT64) as packets_sent
FROM
  -- Query one log view.
  `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
WHERE
  -- Only query the VPC Flow Logs log.
  log_id = "compute.googleapis.com/vpc_flows"
  AND SEARCH(json_payload.reporter, "SRC")

Avant d'utiliser la requête, définissez les valeurs des variables suivantes :

  • PROJECT_ID : identifiant du projet.
  • LOCATION : emplacement de la vue des journaux.
  • BUCKET_ID : nom ou ID du bucket de journaux.
  • LOG_VIEW_ID : identifiant de la vue de journal, limité à 100 caractères et ne pouvant inclure que des lettres, des chiffres, des traits de soulignement et des tirets.

Pour analyser les performances du réseau, vous interrogez votre vue Analytics. Par exemple, si vous ne vous intéressez qu'au nom de l'instance et à la quantité de données envoyées, vous pouvez écrire la requête suivante :

SELECT vm_name, bytes_sent, packets_sent,
FROM `analytics_view.my_project.global.network_details`
ORDER BY bytes_sent DESC
LIMIT 100

Requête de base pour l'analyse de la latence de l'API

Plusieurs équipes ont besoin de données sur les performances hebdomadaires pour effectuer leur analyse. Au lieu de laisser chaque équipe générer les données hebdomadaires, vous créez une vue analytique qui extrait ces données. D'autres équipes peuvent interroger la vue "Données analytiques" et effectuer leur analyse.

La requête suivante montre comment utiliser SQL pour calculer la latence de requête minimale, maximale et moyenne :

SELECT week, MIN(took_ms) as min, MAX(took_ms) AS max, AVG(took_ms) AS avg
FROM (
  SELECT TIMESTAMP_TRUNC(timestamp, WEEK) AS week,
  CAST( JSON_VALUE(json_payload, '$."http.resp.took_ms"') AS INT64) as took_ms
  FROM
    -- Query one log view.
    `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
  WHERE json_payload IS NOT NULL
    AND SEARCH(labels,"frontend")
    AND JSON_VALUE(json_payload.message) = "request complete"
  ORDER BY took_ms DESC, timestamp ASC
)
GROUP BY week ORDER BY week

Extraire le nom du service de trace

Supposons que vous souhaitiez écrire des requêtes qui analysent vos données de trace et que vous souhaitiez afficher ou regrouper les données par nom de service synthétisé. La requête pour votre vue analytique détermine le nom du service pour une étendue à l'aide de la fonction COALESCE, qui évalue une liste d'expressions, dans l'ordre, et renvoie la valeur de la première expression qui n'est pas évaluée sur NULL :

SELECT
  start_time,
  -- Set the value of service name based on the first non-null value in the list.
  COALESCE(
    JSON_VALUE(resource.attributes, '$."service.name"'),
    JSON_VALUE(attributes, '$."service.name"'),
    JSON_VALUE(attributes, '$."g.co/gae/app/module"')) AS service_name,
  name AS span_name,
  duration_nano,
  status.code AS status,
  trace_id,
  span_id
FROM
  `PROJECT_ID.us._Trace.Spans._AllSpans`
LIMIT 10

Avant d'utiliser la requête, remplacez PROJECT_ID par l'ID de votre projetGoogle Cloud .

Joindre les données de trace et de journal à l'aide de l'ID de trace

Lorsque vous analysez une application, vous pouvez corréler vos données de journaux et de trace. Une option consiste à créer une vue analytique qui effectue la jointure et signale les champs sélectionnés.

La requête suivante joint les données de journaux et de trace à l'aide des ID de délai et de trace :

SELECT
  T.trace_id,
  T.span_id,
  T.name,
  T.start_time,
  T.duration_nano,
  L.log_name,
  L.severity,
  L.json_payload,
  L.text_payload,
  L.proto_payload,
  L.insert_id
FROM
  `PROJECT_ID.us._Trace.Spans._AllSpans` AS T
JOIN
  `PROJECT_ID.us.BUCKET_ID.LOG_VIEW_ID` AS L
ON
  -- Join log and trace data by both the span ID and trace ID.
  -- Don't join only on span ID, this field isn't globally unique.
  T.span_id = L.span_id
  -- A regular expression is required because the storage format of the trace ID
  -- differs between a log view and a trace view.
  AND T.trace_id = REGEXP_EXTRACT(L.trace, r'/([^/]+)$')

Avant d'utiliser la requête, définissez les valeurs des variables suivantes :

  • PROJECT_ID : identifiant du projet.
  • BUCKET_ID : nom ou ID du bucket de journaux.
  • LOG_VIEW_ID : identifiant de la vue de journal, limité à 100 caractères et ne pouvant inclure que des lettres, des chiffres, des traits de soulignement et des tirets.

Dans l'exemple, notez que la vue des journaux et la vue de l'observabilité se trouvent au même emplacement, us. Une vue Analytics peut interroger plusieurs vues, mais celles-ci doivent se trouver au même emplacement.

Limites

Les limites suivantes s'appliquent aux vues analytiques :

  • Une vue analytique ne peut interroger que les vues de journaux et les vues d'observabilité.
  • La ressource parente d'une vue analytique doit être un projet Google Cloud .
  • Vous ne pouvez interroger une vue Analytics qu'à l'aide de la page Analyse de journaux et uniquement lorsque vous utilisez le moteur de requête Analyse de journaux (par défaut).
  • Toutes les vues interrogées par une vue Analytics doivent se trouver au même emplacement.
  • Vous devez utiliser la console Google Cloud pour créer ou gérer vos vues Analytics.
  • Vous pouvez créer au maximum 100 vues Analytics par projet Google Cloud .
  • Vous pouvez créer jusqu'à 50 vues analytiques par région.
  • Par projet Google Cloud , au maximum 10 régions peuvent contenir une vue analytique.

Étapes suivantes