Mit Analyseansichten in Observability Analytics können Sie eine SQL-Abfrage mit einem benutzerdefinierten Schema für Ihre Observability-Daten definieren, um komplexe Transformationen zu vereinfachen und wiederzuverwenden. Eine gespeicherte Abfrage kann nur noch einmal ausgeführt werden. Eine Analyseansicht kann dagegen als Datenquelle in der FROM-Klausel anderer SQL-Abfragen verwendet werden.
Übersicht
Eine Analytics-Ansicht ist eine Ressource, die Sie abfragen können. Nachdem Sie eine Analyseansicht definiert haben, können Sie Abfragen schreiben, in denen Sie die Analyseansicht in der FROM-Anweisung angeben.
Der Hauptvorteil von Analyseansichten besteht darin, dass Sie die Daten nicht im Format einer API oder eines Systems abfragen müssen. In einer Analyseansicht können Sie ein Schema definieren, um Ihre Abfragen zu vereinfachen oder die Zeit zu verkürzen, die Sie für das Schreiben von Abfragen benötigen. Mit der Abfrage in einer Analyseansicht können Sie beispielsweise nur bestimmte Felder beibehalten, Felder umbenennen, verschachtelte Felder in eine Spalte der obersten Ebene verschieben sowie gruppieren und aggregieren.
Analytics-Datenansichten sind keine materialisierten Ansichten. Eine Analyseansicht ist keine vorab berechnete Ansicht, in der Abfrageergebnisse regelmäßig im Cache gespeichert werden. Wenn Sie also eine Analytics-Ansicht abfragen, ist das dasselbe, als würden Sie die Ansichten abfragen, die in der Abfrage der Analytics-Ansicht aufgeführt sind.
Analytics-Ansichten sind leistungsfähiger als gespeicherte Abfragen. Das 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 die Ergebnisse einer gespeicherten Abfrage nicht abfragen.
Arten von Analytics-Datenansichten
Es gibt zwei Arten von Analytics-Ansichten: benutzerdefinierte und systemdefinierte:
Nutzerdefinierte Analyseansichten sind alle Analyseansichten, die Sie erstellen. Sie können benutzerdefinierte Analytics-Ansichten abfragen, bearbeiten und löschen.
Systemdefinierte Analyseansichten sind Analyseansichten, die vonGoogle Cloud -Diensten erstellt werden. Sie können systemdefinierte Analyseansichten abfragen. Sie können sie jedoch nicht bearbeiten oder löschen.
Informationen zum Auflisten der Analytics-Ansichten in IhremGoogle Cloud -Projekt finden Sie unter Analytics-Ansichten auflisten.
Speicherort von Analyseansichten
Der Standort einer Analyseansicht wird durch den Standort der Ressourcen bestimmt, die in der Ansicht abgefragt werden. Wenn in einer Analyseansicht beispielsweise eine Log- oder Observability-Ansicht am Speicherort global abgefragt wird, muss sich auch die Analyseansicht am Speicherort global befinden. Wenn Sie die Google Cloud Console zum Erstellen einer Analyseansicht verwenden, wird der Standort automatisch festgelegt.
Beispielanwendungsfälle
Die folgenden Beispiele veranschaulichen, wie Sie Analyseansichten verwenden können, um Abfragen zu vereinfachen und wiederzuverwenden.
Netzwerkdetails abfragen
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.
Zur Vereinfachung Ihrer Analyseabfragen erstellen Sie die folgende Analyseansicht und geben ihr den Namen 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 die Werte der 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 sich beispielsweise nur für den Namen der Instanz und die Menge der gesendeten Daten interessieren, 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 Analyse der API-Latenz
Mehrere Teams benötigen wöchentliche Leistungsdaten, um ihre Analysen abzuschließen. Anstatt dass jedes Team die wöchentlichen Daten generiert, erstellen Sie eine Analyseansicht, mit der die wöchentlichen Daten extrahiert werden. Andere Teams können die Analyseansicht abfragen und dann ihre Analyse durchführen.
Die folgende Abfrage veranschaulicht, 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
Name des Trace-Dienstes extrahieren
Angenommen, Sie möchten Abfragen schreiben, mit denen Sie Ihre Tracedaten analysieren und nach einem synthetisierten Dienstnamen gruppieren oder diesen anzeigen lassen möchten. Der Dienstname für einen Span wird in der Abfrage für Ihre Analyseansicht mit der Funktion COALESCE ermittelt. Diese Funktion wertet eine Liste von Ausdrücken in der angegebenen 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
Bevor Sie die Abfrage verwenden, ersetzen Sie PROJECT_ID durch die ID IhresGoogle Cloud -Projekts.
Trace- und Logdaten über die Trace-ID zusammenführen
Wenn Sie eine Anwendung analysieren, möchten Sie möglicherweise Ihre Log- und Tracedaten in Beziehung setzen. Eine Möglichkeit besteht darin, eine Analyseansicht zu erstellen, in der der Join ausgeführt und ausgewählte Felder gemeldet werden.
In der folgenden Abfrage werden Log- und Trace-Daten mithilfe der Span- und Trace-IDs verknüpft:
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 because 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 die Werte der 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 sehen Sie, dass sich sowohl die Logansicht als auch die Ansicht zur Beobachtbarkeit am selben Speicherort befinden: us. In einer Analytics-Ansicht können mehrere Ansichten abgefragt werden, diese müssen sich jedoch am selben Speicherort befinden.
Beschränkungen
Für Analyseansichten gelten die folgenden Einschränkungen:
- Mit einer Analyseansicht können nur Log- und Observability-Ansichten abgefragt werden.
- Die übergeordnete Ressource einer Analyseansicht muss ein Google Cloud -Projekt sein.
- Sie können eine Analytics-Ansicht nur über die Seite Observability Analytics abfragen und nur, wenn Sie die Abfrage-Engine Observability Analytics (Standard) verwenden.
- Alle Ansichten, die von einer Analytics-Ansicht abgefragt werden, müssen sich am selben Standort befinden.
- Sie müssen die Google Cloud Console verwenden, um Ihre Analyseansichten zu erstellen oder zu verwalten.
- Pro Google Cloud -Projekt können Sie maximal 100 Analytics-Ansichten erstellen.
- Sie können maximal 50 Analytics-Ansichten pro Region erstellen.
- Pro Google Cloud Projekt können maximal 10 Regionen eine Analyseansicht enthalten.
Nächste Schritte
- Analytics-Ansichten erstellen, abfragen und verwalten
- Telemetriedaten mit Observability Analytics abfragen und analysieren
- SQL-SQL-Abfrage darstellen
- Abfragen speichern und freigeben
- SQL-Beispielabfragen