Analytics-Datenansichten

In diesem Dokument werden Analyseansichten beschrieben und es wird erläutert, wann Sie sie erstellen sollten. Außerdem werden die Unterschiede zwischen Analyseansichten und gespeicherten Abfragen beschrieben.

Übersicht

Eine Analyseansicht ist eine Ressource, die Sie abfragen können. Nachdem Sie eine Analyseansicht definiert haben, können Sie Abfragen schreiben, in denen Sie Ihre Analyseansicht in der FROM-Klausel angeben.

Der Hauptvorteil der Verwendung von Analyseansichten besteht darin, dass Sie die Daten nicht im Format einer API oder eines Systems abfragen müssen. Mit einer Analyseansicht können Sie ein Schema definieren, mit dem Sie Ihre Abfragen vereinfachen oder die Zeit für das Schreiben von Abfragen verkürzen können. Die Abfrage in einer Analyseansicht kann beispielsweise nur bestimmte Felder beibehalten, Felder umbenennen, verschachtelte Felder in eine Spalte der obersten Ebene verschieben und Gruppierungen und Aggregationen ausführen.

Analyseansichten sind keine materialisierten Ansichten. Eine Analyseansicht ist keine vorab berechnete Ansicht, die Abfrageergebnisse regelmäßig im Cache speichert. Daher entspricht das Abfragen einer Analyseansicht dem Abfragen der Ansichten, die in der Abfrage der Analyseansicht aufgeführt sind.

Analyseansichten sind leistungsstärker als gespeicherte Abfragen. Gespeicherte Abfragen sind Abfragen, die Sie auf der Seite Observability Analytics ausführen und dann speichern. Sie können eine gespeicherte Abfrage noch einmal ausführen, aber Sie können die Ergebnisse einer gespeicherten Abfrage nicht abfragen.

Arten von Analyseansichten

Es gibt zwei Arten von Analyseansichten: benutzerdefinierte und systemdefinierte:

  • Benutzerdefinierte Analyseansichten sind alle Analyseansichten, die Sie erstellen. Sie können benutzerdefinierte Analyseansichten abfragen, bearbeiten und löschen.

  • Systemdefinierte Analyseansichten sind Analyseansichten, die von Google Cloud Diensten erstellt werden. Sie können systemdefinierte Analyseansichten abfragen. Sie können sie jedoch nicht bearbeiten oder löschen.

Informationen zum Auflisten der Analyseansichten in Ihrem Google Cloud Projekt finden Sie unter Analyseansichten auflisten.

Speicherort von Analyseansichten

Der Speicherort einer Analyseansicht wird durch den Speicherort der Ressourcen bestimmt, die sie abfragt. Wenn eine Analyseansicht beispielsweise eine Logansicht oder eine Observability-Ansicht abfragt, die sich am Speicherort global befindet, muss der Speicherort der Analyseansicht ebenfalls global sein. Wenn Sie die Google Cloud Console verwenden, um eine Analyseansicht zu erstellen, wird der Speicherort automatisch festgelegt.

Beispielanwendungsfälle

Der Hauptvorteil einer Analyseansicht besteht darin, dass Sie die Daten nicht im Format des Systems abfragen müssen. Mit einer Analyseansicht können Sie ein Schema definieren, mit dem Sie Ihre Abfragen vereinfachen oder die Zeit für das Schreiben von Abfragen verkürzen können.

Nach Netzwerkdetails suchen

Sie möchten die Netzwerkleistung mithilfe von VPC-Flusslogs analysieren. Sie müssen die allgemeine Netzwerkleistung analysieren und bestimmte Netzwerke, IP-Adressen und Hosts identifizieren. Diese Informationen werden in verschachtelten Feldern im Feld json_payload eines Logeintrags gespeichert.

Um Ihre Analyseabfragen zu vereinfachen, erstellen Sie die folgende Analyseansicht und nennen sie 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")

Legen Sie vor der Verwendung der Abfrage Werte für die folgenden Variablen fest:

  • PROJECT_ID: Die Kennung des Projekts.
  • LOCATION: Der Speicherort der Logansicht.
  • BUCKET_ID: Der Name oder die ID des Log-Buckets.
  • LOG_VIEW_ID: Die Kennung der Logansicht. Sie ist auf 100 Zeichen begrenzt und darf nur Buchstaben, Ziffern, Unterstriche und Bindestriche enthalten.

Wenn Sie die Netzwerkleistung analysieren möchten, fragen Sie Ihre Analyseansicht ab. Wenn Sie beispielsweise nur an dem Namen der Instanz und der Menge der gesendeten Daten interessiert sind, können Sie die folgende Abfrage schreiben:

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

Basisabfrage für die API-Latenzanalyse

Mehrere Teams benötigen wöchentliche Leistungsdaten, um ihre Analyse abzuschließen. Anstatt dass jedes Team die wöchentlichen Daten generiert, erstellen Sie eine Analyseansicht, die die wöchentlichen Daten extrahiert. Andere Teams können die Analyseansicht abfragen und dann ihre Analyse durchführen.

Die folgende Abfrage zeigt, wie Sie mit SQL die minimale, maximale und durchschnittliche Anfrage-Latenz berechnen:

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

Trace-Dienstnamen extrahieren

Angenommen, Sie möchten Abfragen schreiben, mit denen Sie Ihre Trace-Daten analysieren und entweder einen synthetisierten Dienstnamen anzeigen oder danach gruppieren möchten. Die Abfrage für Ihre Analyseansicht bestimmt den Dienstnamen für einen Span mit der Funktion COALESCE. Diese Funktion wertet eine Liste von Ausdrücken in der Reihenfolge aus und gibt den Wert für den ersten Ausdruck zurück, der nicht NULL ergibt:

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

Ersetzen Sie vor der Verwendung der Abfrage PROJECT_ID durch die ID Ihres Google Cloud Projekts.

Trace- und Logdaten mit der Trace-ID verknüpfen

Wenn Sie eine Anwendung analysieren, möchten Sie möglicherweise Ihre Log- und Trace-Daten korrelieren. Eine Möglichkeit besteht darin, eine Analyseansicht zu erstellen, die die Verknüpfung ausführt und ausgewählte Felder meldet.

Die folgende Abfrage verknüpft Log- und Trace-Daten mithilfe der Span- und Trace-IDs:

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'/([^/]+)$')

Legen Sie vor der Verwendung der Abfrage Werte für die folgenden Variablen fest:

  • PROJECT_ID: Die Kennung des Projekts.
  • BUCKET_ID: Der Name oder die ID des Log-Buckets.
  • LOG_VIEW_ID: Die Kennung der Logansicht. Sie ist auf 100 Zeichen begrenzt und darf nur Buchstaben, Ziffern, Unterstriche und Bindestriche enthalten.

Im Beispiel befinden sich sowohl die Logansicht als auch die Observability-Ansicht am selben Speicherort, us. Eine Analyseansicht kann mehrere Ansichten abfragen, aber diese Ansichten müssen sich am selben Speicherort befinden.

Beschränkungen

Für Analyseansichten gelten die folgenden Einschränkungen:

  • Eine Analyseansicht kann nur Logansichten und Observability-Ansichten abfragen.
  • Die übergeordnete Ressource einer Analyseansicht muss ein Google Cloud Projekt sein.
  • Sie können eine Analyseansicht nur über die Seite Observability Analytics abfragen und nur, wenn Sie die Abfrage-Engine Observability Analytics (Standard) verwenden.
  • Alle Ansichten, die eine Analyseansicht abfragt, müssen sich am selben Speicherort befinden.
  • Sie müssen die Google Cloud Console verwenden, um Ihre Analyseansichten zu erstellen oder zu verwalten.
  • Sie können maximal 100 Analyseansichten pro Google Cloud Projekt erstellen.
  • Sie können maximal 50 Analyseansichten pro Region erstellen.
  • Pro Google Cloud Projekt können maximal 10 Regionen eine Analyseansicht enthalten.

Nächste Schritte