Introducción a la supervisión de BigQuery

La supervisión de BigQuery te permite hacer un seguimiento del uso de recursos, la ejecución de trabajos y el estado operativo en tus cargas de trabajo para identificar cuellos de botella y mantener la confiabilidad.

La supervisión y el registro son fundamentales para ejecutar aplicaciones confiables en la nube. Las cargas de trabajo de BigQuery no son la excepción, en especial si la tuya tiene volúmenes altos o es crítica.

Las fuentes de supervisión varían según la frecuencia de muestreo y el nivel de agregación. Por ejemplo, las vistas de esquemas de información suelen proporcionar un nivel de detalle más alto que las métricas de Cloud Monitoring. Como resultado, los gráficos de métricas pueden diferir temporalmente de los datos del esquema de información hasta que la agregación suavice las diferencias. Cuando diseñes una estrategia de supervisión, evalúa la latencia, la precisión y la exactitud en función de tus requisitos.

Métricas

Las métricas son valores numéricos que se recopilan a intervalos periódicos y están disponibles para el análisis. Puedes usar métricas para lo siguiente:

  • Crear gráficos y paneles.
  • Activar alertas para condiciones o situaciones que necesiten intervenciones humanas.
  • Analizar el historial de rendimiento.

En el caso de BigQuery, las métricas disponibles incluyen la cantidad de trabajos que se ejecutan, cuántos bytes se analizaron durante una consulta y la distribución de los tiempos de consulta. Las métricas de una consulta solo estarán disponibles después de que se completen de forma correcta y podrían tardar hasta siete minutos en informarse. Las métricas de las consultas que fallan no se informan. Para obtener una lista completa de las métricas disponibles, incluidas sus tasas de muestreo, visibilidad y limitaciones, consulta bigquery en Métricas deGoogle Cloud .

Usa Cloud Monitoring para ver las métricas de BigQuery y crear gráficos y alertas. Cada métrica tiene un tipo de recurso, ya sea bigquery_dataset, bigquery_project o global, y un conjunto de etiquetas. Puedes agrupar o filtrar cada métrica con las etiquetas.

Por ejemplo, para graficar la cantidad de consultas interactivas en tránsito, usa la siguiente sentencia de PromQL, que filtra por priority igual a interactive:

{"bigquery.googleapis.com/query/count", monitored_resource="global", priority="interactive"}

En el siguiente ejemplo, se obtiene la cantidad de trabajos de carga en tránsito, agrupados en intervalos de 10 minutos:

avg_over_time({"bigquery.googleapis.com/job/num_in_flight",
  monitored_resource="bigquery_project",
  job_type="load"
}[10m])

A fin de obtener más información, consulta la sección sobre cómo crear gráficos y alertas para BigQuery.

Registros

Los registros son registros de texto que se generan en respuesta a eventos o acciones particulares. BigQuery crea entradas de registro para acciones como crear o borrar una tabla, comprar ranuras o ejecutar un trabajo de carga. Para obtener más información sobre el registro en Google Cloud, consulta Cloud Logging.

Un registro es una colección de solo entrada de entradas de registro. Por ejemplo, puedes escribir tus propias entradas de registro en un registro llamado projects/PROJECT_ID/logs/my-test-log. Muchos servicios deGoogle Cloud , incluido BigQuery, crean un tipo de registro llamado registros de auditoría. Esto es lo que registran:

  • La actividad administrativa, como crear o modificar recursos
  • El acceso a datos, como la lectura de datos proporcionados por el usuario de un recurso
  • Los eventos del sistema que generan los sistemas de Google, en lugar de las acciones del usuario

Los registros de auditoría se escriben en formato JSON estructurado. El tipo de datos base para las entradas de registro deGoogle Cloud es la estructura LogEntry. Esta estructura contiene el nombre del registro, el recurso que generó la entrada de registro, la marca de tiempo (UTC) y otro tipo de información básica.

Los detalles del evento registrado se incluyen en un subcampo llamado carga útil. Para los registros de auditoría, el campo de carga útil se llama protoPayload. El valor de este campo es una estructura AuditLog, indicada por el valor del campo protoPayload.@type, que se configura como type.googleapis.com/google.cloud.audit.AuditLog.

Para las operaciones en conjuntos de datos, tablas y trabajos, BigQuery escribe registros de auditoría en dos formatos diferentes, aunque ambos comparten el tipo de base AuditLog.

En el formato anterior:

  • El campo resource.type es bigquery_resource.
  • Los detalles de la operación se escriben en el campo protoPayload.serviceData. El valor de este campo es una estructura AuditData.

En el formato más reciente:

  • El campo resource.type es bigquery_project o bigquery_dataset. El recurso bigquery_project tiene entradas de registro sobre los trabajos, mientras que el recurso bigquery_dataset tiene entradas de registro sobre el almacenamiento.
  • Los detalles de la operación se escriben en el campo protoPayload.metadata. El valor de este campo es una estructura BigQueryAuditMetadata.

Recomendamos consumir registros en el formato más reciente. Para obtener más información, consulta la guía de migración de registros de auditoría.

A continuación, se muestra un ejemplo abreviado de una entrada de registro que muestra una operación con errores:

{
  "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",
  ...
}

Para las operaciones en BigQuery Reservations, protoPayload es una estructura AuditLog y los campos protoPayload.request y protoPayload.response contienen más información para crear el adjunto de VLAN de supervisión. Puedes encontrar las definiciones de campo en la API de BigQuery Reservation. Para obtener más información, consulta Supervisa BigQuery Reservations.

Vistas de esquemas de información de BigQuery

Las vistas de esquema de información son otra fuente de estadísticas en BigQuery, que puedes usar junto con las métricas y los registros.

Estas vistas contienen metadatos sobre trabajos, conjuntos de datos, tablas y otras entidades de BigQuery. Por ejemplo, puedes obtener metadatos en tiempo real sobre qué trabajos de BigQuery se ejecutaron durante un período específico y, luego, agrupar o filtrar los resultados por proyecto, usuario, tablas a las que se hace referencia y otras dimensiones.

Puedes usar esta información para realizar un análisis más detallado sobre tus cargas de trabajo de BigQuery y responder preguntas como las siguientes:

  • ¿Cuál es el uso promedio de las ranuras de todas las búsquedas de los últimos 7 días de un proyecto determinado?
  • ¿Qué usuarios enviaron un trabajo de carga por lotes para un proyecto determinado?
  • ¿Qué errores de transmisión ocurrieron en los últimos 30 minutos, agrupados por código de error?

En particular, consulta los metadatos de trabajos, los metadatos de transmisión y los metadatos de reservas para obtener estadísticas sobre el rendimiento de tus cargas de trabajo de BigQuery.

Puedes encontrar ejemplos de consultas de esquema de información en GitHub que muestran el uso de ranuras y reservas de una organización, así como la ejecución de los trabajos y los errores de estos. Por ejemplo, con la siguiente consulta, se proporciona una lista de consultas que están pendientes o en ejecución. Estas consultas se ordenan por la cantidad de tiempo desde que se crearon en la región us:

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

Para obtener más información, consulta Soluciona problemas de rendimiento de BigQuery con estos paneles.

Además de escribir tus propias consultas, puedes usar las herramientas de supervisión de BigQuery en la consola de Google Cloud :

  • Supervisa el estado, el uso de recursos y los trabajos. Visualiza los paneles de estado operativo y los gráficos de recursos de administrador de BigQuery que hacen un seguimiento del uso de ranuras, la simultaneidad de los trabajos y el tiempo de ejecución de los trabajos en toda tu organización y tus reservas.
  • Supervisa los trabajos. Busca, filtra y agrupa ejecuciones de consultas individuales en toda tu organización para inspeccionar gráficos de ejecución de consultas, identificar a los principales consumidores de ranuras y solucionar problemas de trabajos problemáticos.

Mapa de telemetría

En la siguiente tabla, se asignan las funciones y los recursos de BigQuery a su telemetría de supervisión operativa, los servicios y recursos de la API auditados, y la documentación de referencia de los registros de auditoría. Puedes usarla para encontrar la telemetría que necesitas para solucionar problemas, optimizar el rendimiento, controlar los costos, auditar el uso y mantener el cumplimiento.

A diferencia de muchos servicios de Google Cloud que escriben registros de trabajos operativos en Cloud Logging, BigQuery escribe la telemetría de los trabajos operativos en vistas de esquemas de información, como INFORMATION_SCHEMA.JOBS. Estas vistas capturan las etapas de ejecución de las consultas, el uso de ranuras, los bytes facturados y todos los trabajos enviados, incluidos los trabajos en curso y los que fallaron.

BigQuery usa Logging principalmente para emitir Registros de auditoría de Cloud, que registran la actividad administrativa y de acceso a los datos. Cuando auditas esta actividad, puedes determinar quién accedió a los recursos o datos, dónde y cuándo.

No se emiten registros de auditoría para cada interrupción o falla del trabajo. Por ejemplo, los trabajos con errores no generan eventos TableDataRead ni TableDataChange, y jobCompletedEvent solo registra las finalizaciones de trabajos correctas. Para obtener detalles sobre situaciones en las que no se emiten registros de auditoría, consulta Acceso a los datos en la descripción general de los registros de auditoría de BigQuery.

En la siguiente tabla, un asterisco (*) en un nombre de vista INFORMATION_SCHEMA indica variantes de vista específicas del alcance, como _BY_PROJECT, _BY_USER, _BY_FOLDER y _BY_ORGANIZATION.

Función o recurso Supervisión operativa Registros de auditoría de Cloud
Consultas y trabajos

Vistas del esquema de información:

  • JOBS*: Ejecución de trabajos históricos y en tiempo real, milisegundos de ranura, bytes facturados, etapas de ejecución y todos los trabajos enviados, independientemente del estado de finalización
  • JOBS_TIMELINE*: estado del trabajo y uso de ranuras por intervalo de tiempo

Consola:

Métricas: Métricas de Cloud Monitoring, como query/count, query/execution_times y job/num_in_flight.

Servicio de la API: bigquery.googleapis.com.

Recursos auditados: trabajos en JobService (recurso supervisado: bigquery_project).

Registros de auditoría: Registros de acceso a los datos con BigQueryAuditMetadata (eventos JobInsertion y JobChange), que registran quién envió o canceló un trabajo, el estado del trabajo, el tipo de declaración y las tablas o vistas a las que se hace referencia. Consulta la descripción general de los registros de auditoría de BigQuery.

Tablas y vistas

Vistas del esquema de información:

  • TABLES: metadatos de tablas
  • VIEWS: Visualiza definiciones y metadatos
  • TABLE_STORAGE*: bytes lógicos y físicos, y facturación de almacenamiento
  • PARTITIONS: Recuentos de filas de partición y tamaño de almacenamiento
  • STREAMING_TIMELINE*: capacidad de procesamiento y errores de inserción de transmisión
  • WRITE_API_TIMELINE*: capacidad de procesamiento y errores de la transmisión de escritura

Métricas: Métricas de Monitoring, como storage/stored_bytes y storage/table_count.

Servicios de API: bigquery.googleapis.com y bigquerystorage.googleapis.com. Los registros de acceso a los datos de la API de BigQuery Storage usan bigquery.googleapis.com, mientras que los registros de política denegada usan bigquerystorage.googleapis.com.

Recursos auditados: tablas, vistas y vistas materializadas en TableService y TableDataService, y sesiones de lectura de almacenamiento y transmisiones de escritura en BigQueryRead y BigQueryWrite (recursos supervisados: bigquery_dataset y bigquery_table).

Registros de auditoría: Registros de acceso a los datos con BigQueryAuditMetadata (eventos TableDataRead y TableDataChange para lecturas de tablas, modificaciones, campos de referencia, trabajo de origen y lecturas y escrituras de transmisión de la API de BigQuery Storage), además de registros de actividad del administrador, acceso a los datos y registros de eventos del sistema para eventos TableCreation, TableChange y TableDeletion, incluidos los cambios en la política de Identity and Access Management (IAM) de la tabla y los vencimientos de la tabla. Consulta la descripción general de los registros de auditoría de BigQuery.

Conjuntos de datos

Vistas del esquema de información:

Servicio de la API: bigquery.googleapis.com.

Recursos auditados: conjuntos de datos, políticas de IAM de conjuntos de datos y LCA de conjuntos de datos en DatasetService y IAMPolicy (recurso supervisado: bigquery_dataset).

Registros de auditoría: Registros de actividad del administrador y de acceso a los datos con BigQueryAuditMetadata (eventos DatasetCreation, DatasetChange y DatasetDeletion), incluidos los cambios en la política de IAM del conjunto de datos en bindingDeltas y las actualizaciones de LCA en accessChanges. Consulta la descripción general de los registros de auditoría de BigQuery.

Ranuras y reservas

Vistas del esquema de información:

Consola:

Métricas: Métricas de Monitoring, como slots/allocated y slots/total_available.

Servicio de la API: bigqueryreservation.googleapis.com para la API de BigQuery Reservation.

Recursos auditados: reservas, compromisos de capacidad y asignaciones de reservas en ReservationService (recurso supervisado: bigquery_project).

Registros de auditoría: Registros de actividad del administrador y de acceso a los datos para crear, modificar, borrar y enumerar reservas, compromisos de capacidad y asignaciones de proyectos o carpetas. Consulta Registro de auditoría de la API de BigQuery Reservation.

Seguridad a nivel de la columna y enmascaramiento de datos

Vistas del esquema de información:

  • COLUMN_FIELD_PATHS: rutas de acceso de columnas anidadas, etiquetas de política y asignaciones de políticas de datos
  • COLUMNS: esquemas de columnas y tipos de datos

Servicios de API: datacatalog.googleapis.com para las etiquetas de política de Data Catalog, bigquerydatapolicy.googleapis.com para la API de BigQuery Data Policy y bigquery.googleapis.com.

Recursos auditados: taxonomías y etiquetas de política en PolicyTagManager, políticas de datos en DataPolicyService y columnas de tablas con etiquetas de política (recursos supervisados: audited_resource y bigquery_dataset).

Registros de auditoría: Registros de actividad del administrador y de acceso a los datos para la administración de taxonomías y etiqueta de política, y los cambios en la política de IAM (Audita las etiquetas de política); administración de políticas de datos y actualizaciones de beneficiarios (Registro de auditoría de políticas de datos de BigQuery); y registros de TableDataRead.fields para lecturas en columnas protegidas (Descripción general de los registros de auditoría de BigQuery).

Rutinas, incluidas las UDF y los procedimientos almacenados

Vistas del esquema de información:

Servicio de la API: bigquery.googleapis.com.

Recursos auditados: funciones definidas por el usuario (UDF), funciones de tabla y procedimientos almacenados en RoutineService (recursos supervisados: bigquery_dataset y bigquery_project).

Registros de auditoría: Registros de actividad del administrador y de acceso a los datos con BigQueryAuditMetadata (eventos RoutineCreation, RoutineChange y RoutineDeletion), además de eventos de trabajos secundarios para ejecuciones de procedimientos almacenados. Consulta la descripción general de los registros de auditoría de BigQuery.

Conexiones externas

Vistas del esquema de información:

  • OBJECT_PRIVILEGES: privilegios de conexión
  • JOBS*: consultas federadas y trabajos de funciones remotas que usan conexiones

Servicio de API: bigqueryconnection.googleapis.com para la API de BigQuery Connection.

Recursos auditados: conexiones y políticas de IAM de conexión en ConnectionService (recurso supervisado: audited_resource).

Registros de auditoría: Registros de actividad del administrador y de acceso a los datos para la creación de conexiones, las actualizaciones de credenciales, la eliminación, la creación de listas y los cambios en las políticas de IAM. Consulta Registro de auditoría de la API de BigQuery Connection.

BigQuery sharing

Vistas del esquema de información:

  • SHARED_DATASET_USAGE: Uso de las tablas del conjunto de datos compartido por parte de los suscriptores
  • SCHEMATA_LINKS: conjuntos de datos vinculados y recursos compartidos

Panel: Panel de métricas de uso compartido.

Servicio de la API: analyticshub.googleapis.com.

Recursos auditados: Intercambios de datos, fichas, suscripciones y políticas de IAM de intercambio o fichas en AnalyticsHubService (recurso supervisado: audited_resource).

Registros de auditoría: Registros de actividad del administrador y de acceso a los datos para el intercambio de datos y la creación, actualización y eliminación de fichas, los cambios en las políticas de IAM y las operaciones de los suscriptores. Consulta Registro de auditoría de uso compartido.

Servicio de transferencia de datos de BigQuery

Métricas y registros:

Servicio de API: bigquerydatatransfer.googleapis.com para la API del Servicio de transferencia de datos de BigQuery.

Recursos auditados: configuraciones de transferencia, ejecuciones de transferencia y fuentes de datos en DataTransferService (recurso supervisado: audited_resource).

Registros de auditoría: Registros de actividad del administrador y de acceso a los datos para crear, actualizar, borrar, enumerar e iniciar ejecuciones y parámetros de configuración de transferencia. Consulta los registros de auditoría del Servicio de transferencia de datos de BigQuery.

Catálogos y tablas de BigLake

Vistas del esquema de información:

  • TABLES: metadatos de tablas
  • JOBS*: Estadísticas de consultas de almacén de objetos externos (metadata_cache_statistics y object_storage_stats)

Servicios de API: biglake.googleapis.com y bigquery.googleapis.com.

Recursos auditados: Catálogos, bases de datos, tablas y particiones de almacén de metadatos en MetastoreService y HiveMetastoreService, y catálogos, espacios de nombres y tablas de Apache Iceberg en IcebergCatalogService (recursos supervisados: audited_resource y bigquery_dataset).

Registros de auditoría: Registros de actividad del administrador y de acceso a los datos para las operaciones de políticas de IAM de catálogo, base de datos, espacio de nombres, tabla, partición y catálogo. Consulta Registros de auditoría de BigLake.

Servicio de migración de BigQuery

Estado e informes:

  • Estado del trabajo de traducción de SQL por lotes en la consola de Google Cloud
  • Estado del flujo de trabajo y de las tareas secundarias en la API de BigQuery Migration
  • Informes de resumen de traducción en Cloud Storage

Servicio de API: bigquerymigration.googleapis.com para la API de BigQuery Migration.

Recursos auditados: flujos de trabajo de migración, subtareas de migración y solicitudes de traducción de SQL en MigrationService y SqlTranslationService (recurso supervisado: audited_resource).

Registros de auditoría: Registros de acceso a los datos para crear, iniciar, enumerar, ver y borrar flujos de trabajo y subtareas de migración, y traducir consultas en SQL. Consulta los registros de auditoría del Servicio de migración de BigQuery.

¿Qué sigue?