Einführung in BigQuery-Monitoring
Monitoring und Logging sind für die Ausführung zuverlässiger Anwendungen in der Cloud entscheidend. BigQuery-Arbeitslasten sind keine Ausnahme, insbesondere wenn Ihre Arbeitslast ein hohes Volumen hat oder geschäftskritisch ist. Dieses Dokument bietet eine allgemeine Übersicht über die Monitoring-Daten, die für BigQuery verfügbar sind.
Monitoring- und Logging-Quellen können je nach Häufigkeit der Stichprobenerfassung oder Aggregation variieren. Beispielsweise können Informationsschemadaten mit einem höheren Detaillierungsgrad als die Messwertdaten zum Cloud-Monitoring verfügbar sein.
Daher besteht die Möglichkeit, dass Diagramme mit Messwerten von niedrigerem Detaillierungsgrad sich von vergleichbaren Informationsschemastatistiken unterscheiden. Die Aggregation glättet die Abweichungen in der Regel. Prüfen Sie beim Entwerfen einer Monitoring-Lösung die Antwortzeit für die Anfrage, die Präzision und die Genauigkeit der Messwerte im Hinblick auf Ihre Anforderungen.
Messwerte
Messwerte sind numerische Werte, die in regelmäßigen Abständen erfasst und für die Analyse verfügbar gemacht werden. Sie können Messwerte für Folgendes verwenden:
- Diagramme und Dashboards erstellen
- Benachrichtigungen über Bedingungen oder Situationen auslösen, die ein menschliches Eingreifen erfordern
- Bisherige Leistung analysieren
Im Fall von BigQuery gehören zu den verfügbaren Messwerten die Anzahl der ausgeführten Jobs, die Anzahl der während einer Abfrage gescannten Byte sowie die Verteilung der Abfragezeiten. Die Messwerte für eine Abfrage sind erst verfügbar, wenn die Abfrage erfolgreich ausgeführt wurde. Es kann bis zu sieben Minuten dauern, bis die Werte angezeigt werden. Messwerte für fehlgeschlagene Abfragen werden nicht angezeigt. Eine vollständige Liste der verfügbaren Messwerte, einschließlich ihrer Samplingraten, Sichtbarkeit und Einschränkungen, finden Sie in bigquery
unter Google Cloud-Messwerte.
Mit Cloud Monitoring können Sie BigQuery-Messwerte aufrufen und Diagramme und Benachrichtigungen erstellen. Jeder Messwert hat einen Ressourcentyp, entweder bigquery_dataset
, bigquery_project
oder global
, sowie einen Satz von Labels. Verwenden Sie diese Informationen, um Abfragen in der Monitoring Query Language (MQL) zu erstellen.
Mithilfe der Labels können Sie jeden Messwert gruppieren oder filtern.
Verwenden Sie beispielsweise die folgende MQL-Anweisung, die nach priority
gleich interactive
filtert, um die Anzahl der interaktiven Abfragen im laufenden Betrieb darzustellen:
fetch global
| metric 'bigquery.googleapis.com/query/count'
| filter metric.priority = 'interactive'
Das nächste Beispiel ruft die Anzahl der aktiven Ladejobs ab, gruppiert in 10-Minuten-Intervallen:
fetch bigquery_project
| metric 'bigquery.googleapis.com/job/num_in_flight'
| filter metric.job_type = 'load'
| group_by 10m
Weitere Informationen finden Sie unter Diagramme und Benachrichtigungen für BigQuery erstellen.
Logs
Logs sind Textdatensätze, die als Reaktion auf bestimmte Ereignisse oder Aktionen generiert werden. BigQuery erstellt Logeinträge für Aktionen wie das Erstellen oder Löschen einer Tabelle, das Erwerben von Slots oder das Ausführen eines Ladejobs. Weitere Informationen zum Logging in Google Cloud finden Sie unter Cloud Logging.
Ein Log ist eine Sammlung mit Logeinträgen, für die nur Anfügungen zulässig sind. Sie könnten beispielsweise eigene Logeinträge in ein Log namens projects/PROJECT_ID/logs/my-test-log
schreiben. Viele Google Cloud-Dienste, einschließlich BigQuery, erstellen einen Logtyp namens Audit-Logs. In diesen Logs wird Folgendes aufgezeichnet:
- Administratoraktivität, z. B. das Erstellen oder Ändern von Ressourcen
- Datenzugriff, z. B. das Lesen der von Nutzern bereitgestellten Daten aus einer Ressource
- Systemereignisse, die nicht durch Nutzeraktionen, sondern von Google-Systemen generiert werden
Audit-Logs werden in einem strukturierten JSON-Format geschrieben. Der Basisdatentyp für Google Cloud-Logeinträge ist die LogEntry
-Struktur. Diese Struktur enthält den Namen des Logs, die Ressource, die den Logeintrag generiert hat, den Zeitstempel (UTC) und weitere grundlegende Informationen.
Die Details des protokollierten Ereignisses befinden sich in einem Unterfeld, dem sogenannten Nutzlastfeld. Bei Audit-Logs hat das Nutzlastfeld den Namen protoPayload
. Der Wert dieses Felds ist eine AuditLog
-Struktur, angegeben durch den Wert des protoPayload.@type
-Felds, das auf type.googleapis.com/google.cloud.audit.AuditLog
gesetzt ist.
Bei Vorgängen für Datasets, Tabellen und Jobs schreibt BigQuery derzeit Audit-Logs in zwei verschiedenen Formaten, obwohl beide den Basistyp AuditLog
haben.
Im älteren Format gilt:
- Das Feld
resource.type
istbigquery_resource
. - Details zum Vorgang werden in das Feld
protoPayload.serviceData
geschrieben. Der Wert dieses Felds ist eineAuditData
-Struktur.
Im neueren Format gilt:
- Das Feld
resource.type
ist entwederbigquery_project
oderbigquery_dataset
. Die Ressourcebigquery_project
enthält Logeinträge zu Jobs, während die Ressourcebigquery_dataset
Logeinträge zum Speicher enthält. - Details zum Vorgang werden in das Feld
protoPayload.metadata
geschrieben. Der Wert dieses Felds ist eineBigQueryAuditMetadata
-Struktur.
Wir empfehlen die Nutzung von Logs im neueren Format. Weitere Informationen finden Sie in der Migrationsanleitung für Audit-Logs.
Hier ist ein abgekürztes Beispiel für einen Logeintrag, der einen fehlgeschlagenen Vorgang anzeigt:
{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"status": {
"code": 5,
"message": "Not found: Dataset my-project:my-dataset was not found in location US"
},
"authenticationInfo": { ... },
"requestMetadata": { ... },
"serviceName": "bigquery.googleapis.com",
"methodName": "google.cloud.bigquery.v2.JobService.InsertJob",
"metadata": {
},
"resource": {
"type": "bigquery_project",
"labels": { .. },
},
"severity": "ERROR",
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access",
...
}
Bei Vorgängen für BigQuery Reservations ist protoPayload
eine AuditLog
-Struktur und die Felder protoPayload.request
und protoPayload.response
enthalten weitere Informationen. Die Felddefinitionen finden Sie unter BigQuery Reservation API. Weitere Informationen finden Sie unter BigQuery Reservations überwachen.
INFORMATION_SCHEMA
Ansichten
INFORMATION_SCHEMA
-Ansichten sind eine weitere Informationsquelle in BigQuery, die Sie in Verbindung mit Messwerten und Logs verwenden können.
Diese Ansichten enthalten Metadaten zu Jobs, Datasets, Tabellen und anderen BigQuery-Entitäten. So können Sie beispielsweise Echtzeitmetadaten darüber abrufen, welche BigQuery-Jobs über einen bestimmten Zeitraum ausgeführt wurden, und dann die Ergebnisse nach Projekt, Nutzer, referenzierten Tabellen und anderen Dimensionen gruppieren oder filtern.
Sie können diese Informationen nutzen, um eine detailliertere Analyse Ihrer BigQuery-Arbeitslasten durchzuführen, und erhalten Antworten auf Fragen wie:
- Wie hoch war die durchschnittliche Slot-Auslastung für alle Abfragen in den letzten sieben Tagen für ein bestimmtes Projekt?
- Welche Nutzer haben einen Batch-Ladejob für ein bestimmtes Projekt gesendet?
- Welche Streamingfehler sind in den letzten 30 Minuten aufgetreten, gruppiert nach Fehlercode?
Insbesondere unter Jobmetadaten, Streamingmetadaten und Reservierungsmetadaten finden Sie Informationen zur Leistung Ihrer BigQuery-Arbeitslasten.
Sie finden Beispiel-INFORMATION_SCHEMA
-Abfragen auf GitHub, die die Slot- und Reservierungsnutzung einer Organisation, die Jobausführung und die Jobfehler zeigen. Die folgende Abfrage enthält beispielsweise eine Liste von Abfragen, die entweder ausstehend oder aktuell ausgeführt werden. Diese Abfragen sind nach dem Zeitraum sortiert, seit sie in der Region us
erstellt wurden:
SELECT creation_time, project_id, user_email, job_id, job_type, priority, state, TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), start_time,second) as running_time_sec FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND state != "DONE" ORDER BY running_time_sec DESC
Weitere Informationen finden Sie unter Dashboards zur Behebung von Leistungsproblemen in BigQuery.
Wenn Sie Slot-Reservierungen haben, können Sie nicht nur Ihre eigene Abfrage erstellen, sondern auch BigQuery-Administratorressourcendiagramme verwenden, um Diagramme anzuzeigen, die die Slot-Nutzung, die Gleichzeitigkeit von Jobs und die Ausführungszeit von Jobs anzeigen. Weitere Informationen finden Sie unter Einführung in BigQuery-Administrator-Ressourcendiagramme (Vorschau).