Einführung in BigQuery-Monitoring
Mit dem BigQuery-Monitoring können Sie die Ressourcennutzung, die Jobausführung und den Betriebszustand Ihrer Arbeitslasten im Blick behalten, um Engpässe zu erkennen und die Zuverlässigkeit aufrechtzuerhalten.
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.
Monitoring-Quellen variieren je nach Stichprobenhäufigkeit und Aggregationsebene. Informationsschema-Ansichten bieten beispielsweise oft eine höhere Granularität als Cloud Monitoring-Messwerte. Daher können Messwertdiagramme vorübergehend von den Informationsschemadaten abweichen, bis die Unterschiede durch die Aggregation ausgeglichen werden. Prüfen Sie beim Entwerfen einer Monitoring-Strategie die Latenz, Präzision und Genauigkeit 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 Abtastraten, Sichtbarkeit und Einschränkungen, finden Sie unter 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. Mithilfe der Labels können Sie jeden Messwert gruppieren oder filtern.
Wenn Sie beispielsweise die Anzahl der aktiven interaktiven Abfragen in einem Diagramm darstellen möchten, verwenden Sie die folgende PromQL-Anweisung, die nach priority gleich interactive filtert:
{"bigquery.googleapis.com/query/count", monitored_resource="global", priority="interactive"}
Das nächste Beispiel ruft die Anzahl der aktiven Ladejobs ab, gruppiert in 10-Minuten-Intervallen:
avg_over_time({"bigquery.googleapis.com/job/num_in_flight",
monitored_resource="bigquery_project",
job_type="load"
}[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 Anmelden Google Cloudfinden 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. VieleGoogle Cloud -Dienste, einschließlich BigQuery, erstellen einen Logtyp, der als Audit-Logs bezeichnet wird. 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ürGoogle 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 Audit-Logs in zwei verschiedenen Formaten, obwohl beide den Basistyp AuditLog haben.
Im älteren Format gilt:
- Das Feld
resource.typeistbigquery_resource. - Details zum Vorgang werden in das Feld
protoPayload.serviceDatageschrieben. Der Wert dieses Felds ist eineAuditData-Struktur.
Im neueren Format gilt:
- Das Feld
resource.typeist entwederbigquery_projectoderbigquery_dataset. Die Ressourcebigquery_projectenthält Logeinträge zu Jobs, während die Ressourcebigquery_datasetLogeinträge zum Speicher enthält. - Details zum Vorgang werden in das Feld
protoPayload.metadatageschrieben. 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.
BigQuery-Informationsschemaansichten
Informationsschema-Ansichten sind eine weitere Informationsquelle in BigQuery, die Sie zusammen 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-Informationsschema-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 Fehlerbehebung für die BigQuery-Leistung mit diesen Dashboards.
Zusätzlich zum Schreiben eigener Abfragen können Sie BigQuery-Monitoring-Tools in der Google Cloud Console verwenden:
- Zustand und Ressourcennutzung überwachen. Sehen Sie sich Dashboards zum Betriebszustand und Ressourcendiagramme an, mit denen Sie die Slot-Nutzung, die Kapazität und die Job-Nebenläufigkeit im Zeitverlauf in Ihrer Organisation und Ihren Reservierungen im Blick behalten können.
- Jobs überwachen. Sie können einzelne Abfrageausführungen in Ihrer Organisation suchen, filtern und gruppieren, um Abfrageausführungsdiagramme zu prüfen, die größten Slot-Nutzer zu identifizieren und problematische Jobs zu beheben.