En este documento, se explica cómo crear una política de alertas para supervisar los resultados de una consulta que ejecutas en Log Analytics. Estas consultas se escriben en SQL y deben consultar una vista de registro. La política de alertas te notifica cuando el resultado de la consulta satisface las condiciones que especificaste. Por ejemplo, puedes configurar una política de alertas para que se te notifique cuando, al menos, el 25% de las entradas de registro en un período determinado tengan una gravedad de ERROR
.
Las políticas de alertas que creas desde la página Análisis de registros se ejecutan en un motor de BigQuery. Por lo tanto, se debe poder acceder a los datos que se consultan a través de un conjunto de datos de BigQuery vinculado. Por este motivo, estas consultas de SQL solo pueden consultar vistas de registros. No pueden consultar las vistas de Analytics.
Para obtener información general sobre el Análisis de registros, consulta Consulta y analiza registros con el Análisis de registros.
Cómo funcionan las políticas de alertas
Una política de alertas describe las circunstancias en las que quieres recibir alertas y cómo quieres que se te notifique sobre un incidente. Existen tres enfoques diferentes que puedes usar para recibir notificaciones cuando aparezcan contenido o patrones en tus datos de registro:
Para analizar entradas de registro individuales en busca de una frase específica, crea una política de alertas basada en registros. Usa estas políticas de alertas cuando quieras recibir notificaciones sobre eventos relacionados con la seguridad, entre otros.
Para supervisar eventos en los datos de tus entrada de registro, puedes crear una métrica basada en registros y, luego, crear una política de alertas para supervisar la métrica. Estos tipos de políticas de alertas son eficaces cuando deseas supervisar las tendencias en los datos de las entrada de registro a lo largo del tiempo. Sin embargo, no son tan eficaces si esperas solo unos pocos eventos.
Para supervisar el análisis agregado de los datos de entrada de registro, combina el análisis de registros con políticas de alertas. En esta situación, actualizas un bucket de registros para usar el Análisis de registros y creas un conjunto de datos vinculado de BigQuery para ese bucket de registros. A continuación, usarás Log Analytics, que admite consultas en SQL, para consultar una vista de registro en el bucket de registros. Por último, crearás la política de alertas para supervisar los resultados de la consulta en SQL. Este tipo de política de alertas se denomina política de alertas basada en SQL.
Las políticas de alertas basadas en SQL son más eficaces para evaluar valores exactos en varias entradas de registro. Si deseas evaluar entradas de registro individuales, crea una política de alertas basada en registros.
En el resto de este documento, se describe cómo usar las políticas de alertas basadas en SQL.
Componentes de la política de alertas
Una política de alertas basada en SQL contiene una condición y una programación:
La condición contiene la consulta, que es una consulta en SQL que consulta una vista de registro. La condición también define las circunstancias en las que el resultado de la consulta hace que Monitoring cree un incidente.
La programación define con qué frecuencia la política de alertas ejecuta su consulta. La programación también define el tamaño de la ventana de observación, que es un filtro que selecciona solo las entradas de registro que se recibieron desde la última vez que se evaluó la consulta. Por ejemplo, si configuras la programación en 60 minutos, la consulta se ejecutará cada 60 minutos con un período de observación que selecciona los 60 minutos más recientes de las entradas de registro.
Las políticas de alertas también contienen una lista de canales de notificación. Cuando se cumple la condición de la política de alertas, Cloud Monitoring crea un incidente y, luego, envía notificaciones sobre el incidente a través de estos canales. Un incidente es un registro de los datos que provocaron que se cumpliera la condición, junto con otra información pertinente. Esta información puede ayudarte a solucionar los problemas que causaron el incidente. Puedes ver el incidente con la consola de Google Cloud .
Tipos de evaluación para las políticas de alertas basadas en SQL
Las condiciones que supervisan el resultado de una consulta en SQL admiten dos tipos de evaluación:
Umbral de recuento de filas: La condición se cumple cuando la cantidad de filas en el resultado de la consulta es mayor, igual o menor que un valor de umbral.
Por ejemplo, supongamos que deseas recibir una notificación cuando más de 50 entradas de registro en el período de observación tengan una gravedad superior a 200. Creas una consulta que informa las entradas de registro cuya gravedad es superior a 200. Luego, configuras una condición, seleccionas el Umbral de recuento de filas y estableces el umbral en 50.
Boolean: La condición se cumple cuando una columna booleana específica de la tabla de resultados de la consulta contiene cualquier fila con un valor de
true
.Por ejemplo, supongamos que deseas recibir una notificación cuando más del 25% de las entradas de registro en el período de observación tengan una gravedad de
ERROR
. Creas una consulta que calcula el porcentaje de entradas de registro cuyo nivel de gravedad esERROR
. Los resultados de la consulta escribentrue
en la columnanotify
cuando ese porcentaje supera el 25%. A continuación, crea una condición, establece el tipo en Boolean y configura la condición para supervisar la columnanotify
.
Las políticas de alertas que supervisan el resultado de una consulta en SQL deben tener solo una condición.
Políticas de alertas y BigQuery
Cuando una política de alertas ejecuta una consulta en SQL, esta se ejecuta con las ranuras reservadas de BigQuery en el proyecto Google Cloud en el que se define la política de alertas. Para obtener más información, consulta Trabaja con reservas de ranuras.
Para que una política de alertas use ranuras reservadas de BigQuery para consultar una vista de registros, el bucket de registros que aloja la vista de registros debe configurarse para tener un conjunto de datos de BigQuery vinculado. Los conjuntos de datos vinculados permiten que BigQuery lea los datos en el bucket de registros y que realices funciones de BigQuery en los datos que devuelve tu consulta en SQL.
Entradas de registro evaluadas
Para que la consulta en SQL de una política de alertas evalúe una entrada de registro, se deben cumplir las siguientes condiciones:
- La marca de tiempo de recepción de la entrada de registro, que registra cuándo Cloud Logging recibió la entrada de registro, debe estar dentro del período de observación de la política de alertas.
- La marca de tiempo de la entrada de registro, que registra cuándo se generó la entrada de registro, debe estar dentro de los 15 minutos de la ventana de observación.
Por ejemplo, tu política de alertas basada en SQL tiene un período de visualización de 60 minutos. El Análisis de registros ejecuta la consulta en SQL de la política de alertas a las 13:30. Para que se incluya en la búsqueda, una entrada de registro debe cumplir con los siguientes criterios:
- La marca de tiempo de recepción debe estar entre las 12:30 p.m. y la 1:30 p.m.
- La marca de tiempo debe estar entre las 12:15 p.m. y la 1:45 p.m.
Cuando ejecutas una consulta desde la interfaz de Log Analytics, todas las entradas de registro en el período seleccionado se evalúan según la marca de tiempo de la entrada de registro.
Ventana de visualización y tiempo de propagación del incidente
Cuando se programa una política de alertas para evaluar su condición, el Análisis de registros retrasa la ejecución de la consulta en SQL cinco minutos para darle tiempo a Cloud Logging a indexar las entradas de registro recibidas durante el período. Por ejemplo, si la política de alertas usa un período de observación que finaliza a las 2 p.m., Log Analytics no ejecutará la consulta en SQL hasta las 2:05 p.m.
Si se cumple la condición de alerta después de que se ejecuta la consulta, el incidente puede tardar hasta dos minutos adicionales en propagarse por el sistema.
Fallos en las consultas
Las consultas que emiten las políticas de alertas basadas en SQL pueden fallar por varios motivos, incluidos los siguientes:
La cuenta de servicio de Monitoring ya no existe o ya no tiene los permisos necesarios para leer los datos de registro sobre los que se realiza la consulta.
El tiempo de ejecución de la consulta supera los cinco minutos.
Se produce un error interno.
Una consulta fallida genera una entrada de registro que contiene el ID de la política de alertas y el estado de error. Puedes usar una política de alertas basada en registros para crear una alerta cuando se registre un error.
Antes de comenzar
En esta sección, se supone que actualizaste tu bucket de registros para usar Log Analytics y que puedes consultar y ver tus datos de registros con la página de Log Analytics. También se supone que ya creaste un conjunto de datos vinculado a BigQuery para tu bucket de registros.
Antes de crear una política de alertas basada en SQL, completa los siguientes pasos:
-
Para obtener los permisos que necesitas para crear y administrar políticas de alertas basadas en SQL, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Editor de Monitoring (
roles/monitoring.editor
) en tu proyecto -
Logging SqlAlertWriter (
roles/logging.sqlAlertWriter
) en tu proyecto
-
Editor de Monitoring (
Verifica que exista la cuenta de servicio de Monitoring y que tenga los siguientes roles:
- Agente de servicio de Monitoring (
roles/monitoring.notificationServiceAgent
) en tu proyecto. - Visualizador de datos de BigQuery (
roles/bigquery.dataViewer
) en tu conjunto de datos vinculado
Si no existe la cuenta de servicio de Monitoring, consulta Solución de problemas: No hay una cuenta de servicio de Monitoring.
- Agente de servicio de Monitoring (
- Para habilitar la ejecución de tus políticas de alertas basadas en SQL en ranuras reservadas de BigQuery, haz lo siguiente:
- Configura los canales de notificación que deseas usar para recibir notificaciones sobre incidentes. Para fines de redundancia, te recomendamos que crees varios tipos de canales de notificaciones. Para obtener más información, consulta Cómo crear y administrar canales de notificaciones.
Crea una política de alertas basada en SQL
Para crear una política de alertas basada en SQL, haz lo siguiente:
Google Cloud console
-
En la consola de Google Cloud , ve a la página Análisis de registros:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.
En la página Log Analytics, en el editor de consultas, ingresa una consulta en SQL para una vista de registros.
Para obtener más información sobre cómo escribir consultas en SQL para vistas de registros, consulta Cómo consultar una vista de registros.
En la barra de herramientas, haz clic en Ejecutar en BigQuery.
Log Analytics ejecuta tu consulta en el motor de BigQuery y muestra los resultados en la tabla Resultados.
Si no se muestra Ejecutar en BigQuery, haz clic en settings Seleccionar motor de consultas y, luego, en BigQuery. El botón Ejecutar consulta cambia a Ejecutar en BigQuery.
En la tabla Resultados de la página Log Analytics, haz clic en add_alert Crear alerta.
En la página Análisis de registros, se muestra la ventana Crear política de alertas de SQL, en la que se muestra tu consulta en la sección Consulta en SQL.
En la sección Condición de alerta, configura la condición y la programación de tu política de alertas.
Configura los detalles de la alerta de tu política de alertas.
Agrega canales de notificaciones y configura el contenido de las notificaciones, como un asunto personalizado.
Opcional: Agrega etiquetas de política de alertas y documentación.
Haz clic en Siguiente.
Revisa tu política de alertas y, luego, haz clic en Guardar para crearla.
API de Cloud Monitoring
Usa el método alertPolicies.create
para crear políticas de alertas de forma programática. El tipo Condition
de tu política de alertas debe ser conditionSql
, que es una instancia de SqlCondition
.
Este tipo de condición permite que las condiciones de tu política de alertas se definan con SQL.
Para definir la programación, establece un valor de periodicity
para uno de los campos minutes
, hours
o days
. Por ejemplo, si deseas que la consulta se ejecute cada 12 horas, establece la periodicidad del campo hours
en 12.
Para definir la condición, usa los siguientes campos:
boolean_test
: Configura la política de alertas de modo que se cumpla su condición cuando una fila de una columna booleana en la tabla de resultados de la consulta contenga un valor verdadero.row_count_test
: Configura la política de alertas para que se cumpla su condición cuando la cantidad de filas de la tabla de resultados de la consulta alcance un umbral determinado.
Para obtener una lista completa de los campos y las definiciones, consulta SqlCondition
en la documentación de la API de Cloud Monitoring.
Para obtener más información sobre la API de Monitoring para las políticas de alertas, consulta Administra las políticas de alertas con la API.
Terraform
Instala y configura Terraform para tu proyecto. Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para apps.
En Cloud Shell, ve al directorio que contiene tu configuración de Terraform.
En tu configuración de Terraform, configura una instancia del recurso google_monitoring_alert_policy, incluido condition_sql.
En Cloud Shell, ingresa
terraform apply
.
Para modificar tu política de alertas, realiza los cambios y, luego, vuelve a aplicar la configuración de Terraform. Para obtener más información, consulta Administra políticas de alertas con Terraform.
Para obtener información general sobre el uso de Google Cloud con Terraform, consulta Terraform con Google Cloud.
Limitaciones
Puedes tener una condición por política de alertas basada en SQL.
Las políticas de alertas basadas en SQL no pueden consultar una vista de Analytics.
Las consultas emitidas por políticas de alertas basadas en SQL fallan cuando su tiempo de ejecución supera los cinco minutos.
Hay un retraso de hasta siete minutos, más el tiempo de ejecución de la consulta, entre el momento en que se programa una consulta y el momento en que se crea un incidente.
Para obtener una lista completa de los límites asociados con las políticas de alertas, consulta Límites de Monitoring.
Precios
Para obtener información sobre los precios, consulta los siguientes documentos:
- Precios de BigQuery
- Cloud Logging en la documentación de precios de Google Cloud Observability
- Cloud Monitoring en la documentación de precios de Google Cloud Observability
¿Qué sigue?
Para obtener información sobre cómo crear gráficos a partir de tus datos de Log Analytics, consulta Cómo generar gráficos con los resultados de las consultas de Log Analytics.
Para obtener información sobre cómo administrar los incidentes de estas políticas de alertas, consulta Incidentes para políticas de alertas basadas en SQL.