Configurar políticas de alertas basadas en registros

Puedes configurar una política de alertas para recibir una notificación cada vez que aparezca un mensaje específico en los registros incluidos. Por ejemplo, si quieres saber cuándo registra un registro de auditoría un mensaje de acceso a datos concreto, puedes recibir una notificación cuando aparezca el mensaje. Estos tipos de políticas de alertas se denominan políticas de alertas basadas en registros. En este documento se describe cómo hacer lo siguiente mediante la Google Cloud consola y la API de Cloud Monitoring:

  • Crea y prueba una política de alertas basada en registros.
  • Edita una política de alertas basada en registros.
  • Elimina una política de alertas basada en registros.

Antes de empezar

Crear una política de alertas basada en registros con el Explorador de registros

Puedes crear una política de alertas basada en registros desde la página Explorador de registros de la consola de Google Cloud o mediante la API de Monitoring. En esta sección se describe cómo crear políticas de alertas basadas en registros con el Explorador de registros. Para obtener información sobre la API Monitoring, consulta Crear una política de alertas basada en registros con la API Monitoring.

Las políticas de alertas basadas en registros no respetan el ajuste de ámbito de la página Explorador de registros. En su lugar, cuando un receptor a nivel de proyecto dirige una entrada de registro que procede de un proyecto a un segmento de registro, las políticas de alertas basadas en registros definidas en ese proyecto analizan la entrada de registro. Para obtener más información, consulta el artículo Entradas de registro disponibles.

La interfaz del Explorador de registros te indica los pasos que debes seguir:

  • Proporciona los detalles de la política de alertas, como el nombre y el nivel de gravedad.
  • Elige los registros de los que quieras recibir una notificación.
  • Define el tiempo entre notificaciones.
  • Define el tiempo que debe transcurrir para que los incidentes se cierren automáticamente.
  • Especifica a quién quieres notificar.

Por ejemplo, supongamos que tienes una aplicación que escribe una entrada de registro syslog con gravedad NOTICE cuando la aplicación cambia una dirección de red. Las entradas de registro de los cambios de dirección de red incluyen una carga útil de JSON con un aspecto similar al siguiente:

"jsonPayload": {
  "type": "Configuration change",
  "action": "Set network address",
  "result": "IP_ADDRESS",
}

Quieres crear una política de alertas basada en registros que te avise cuando aparezca una dirección IPv4 no válida en el campo jsonPayload.result de las entradas de registro de syslog con gravedad NOTICE.

Para crear esta política de alertas, haz lo siguiente:

  1. En la Google Cloud consola, ve a la página Explorador de registros:

    Ve al Explorador de registros.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Registro.

  2. Usa el panel Consulta para crear una consulta que coincida con el mensaje que quieras usar en tu política de alertas basadas en registros.

    Por ejemplo, para buscar entradas de registro con un nivel de gravedad NOTICE en el registro syslog que tengan direcciones IP no válidas en la carga útil JSON, puedes usar la siguiente consulta:

    log_id("syslog")
    severity = "NOTICE"
    jsonPayload.result !~ "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}$"
    

    Haz clic en Ejecutar consulta para validar la consulta.

  3. En la barra de herramientas Resultados de la consulta, despliega el menú Acciones y selecciona Crear alerta de registro.

  4. En el panel Información de la alerta, haga lo siguiente:

    1. Escribe un nombre para la política de alertas en el campo Nombre de la política de alertas. Por ejemplo: "Dirección de red: valor IPv4 no válido".

    2. Seleccione una opción del menú Nivel de gravedad de la política. Los incidentes y las notificaciones muestran el nivel de gravedad.

    3. Opcional: Añade documentación a tu política de alertas. Puedes incluir información que pueda ayudar al destinatario de una notificación a diagnosticar el problema. La siguiente cadena resume el motivo de la notificación:

      Log-based alerting policy in project ${project} detected an invalid IPv4 value.
      

      Para obtener información sobre cómo dar formato y personalizar el contenido de este campo, consulta Usar Markdown y variables en plantillas de documentación.

  5. Para ir al siguiente paso, haz clic en Siguiente.

  6. En el panel Seleccionar los registros que se incluirán en la alerta, haz lo siguiente:

    1. Introduce una consulta o edita la que ya tengas para filtrar los registros disponibles. Las entradas de registro que coincidan con la consulta activarán la política de alertas.

    2. Para verificar la consulta, haga clic en Vista previa de los registros.

    3. Opcional: Extrae etiquetas de registro. Puede crear etiquetas a partir de campos de registro para que se muestren en los incidentes y las notificaciones creados por la alerta.

      En el campo de documentación de tu política de alertas, haces referencia a las etiquetas extraídas mediante una variable con el formato ${log.extracted_label.KEY}, donde KEY es el nombre que has asignado a la etiqueta extraída.

  7. Haz clic en Siguiente.

  8. Selecciona el tiempo mínimo entre notificaciones. Este valor te permite controlar el número de notificaciones que recibes de la monitorización si se cumple esta condición varias veces. En este ejemplo, selecciona 5 min en las opciones.

  9. Opcional: Selecciona la duración del cierre automático de la incidencia. De forma predeterminada, la duración del cierre automático de incidencias es de 7 días.

  10. Haz clic en Siguiente.

  11. Selecciona uno o varios canales de notificaciones para tu política de alertas. En este ejemplo, selecciona un canal de notificación por correo electrónico.

    Si ya has configurado un canal de notificaciones por correo electrónico, puedes seleccionarlo en la lista. Si no es así, haz clic en Gestionar canales de notificación y añade un canal de correo electrónico. Para obtener información sobre cómo crear canales de notificación, consulta el artículo Crear y gestionar canales de notificación.

  12. Haz clic en Guardar.

Tu política de alertas basada en registros ya está lista para probarse.

Probar la política de alertas basada en registros de ejemplo

Para probar la política de alertas que has creado, puedes escribir manualmente una entrada de registro que coincida con la consulta. Para escribir la entrada de registro, sigue estos pasos:

  1. Configura la siguiente entrada de registro cambiando la variable PROJECT_ID por el ID de tu proyecto:

    {
      "entries": [
      {
        "logName": "projects/PROJECT_ID/logs/syslog",
        "jsonPayload": {
          "type": "Configuration change",
          "action": "Set network address",
          "result": "999.027.405.1",
        },
        "severity": "NOTICE",
        "resource": {
          "type": "generic_task",
          "labels" : {
            "project_id": "PROJECT_ID",
            "location": "us-east1",
            "namespace": "fake-task-2",
            "job": "write-log-entry",
            "task_id": "11",
          },
        },
      },
      ],
    }
  2. Ve a la página de referencia de logEntries.write o haz clic en el siguiente botón:

    Ve a logEntries.write.

  3. Copia la entrada de registro que configuraste anteriormente.

  4. En el panel Probar esta API, haz lo siguiente:

    1. Sustituye el contenido del campo Request body (Cuerpo de la solicitud) de Explorador de APIs por la entrada de registro que has copiado en el paso anterior.

    2. Haz clic en la opción para ejecutar. Si se te solicita, sigue el flujo de autenticación.

      Si la llamada logEntries.write se realiza correctamente, obtendrás un código de respuesta HTTP 200 y un cuerpo de respuesta vacío, {}. Para obtener más información sobre el Explorador de APIs, consulta el artículo Usar el Explorador de APIs de la documentación de Monitoring. El Explorador de APIs funciona de la misma forma con la API Logging.

La entrada de registro coincide con el filtro especificado en la política de alertas de las siguientes formas:

  • El valor de logName especifica el registro syslog que se encuentra en tuGoogle Cloud proyecto.
  • El valor severity de esta entrada de registro es NOTICE.
  • El valor jsonPayload.result no es una dirección IPv4 válida.

Después de escribir la entrada de registro, se produce la siguiente secuencia:

  • La nueva entrada de registro aparece en el explorador de registros. La entrada de registro cumple la condición de la política de alertas.
  • Se abre un incidente en Cloud Monitoring.
  • Recibirás una notificación sobre el incidente. Si has configurado un canal de notificación por correo electrónico, la notificación tendrá el siguiente aspecto:

    La política de alertas basada en registros de ejemplo genera una notificación por correo electrónico.

Puede hacer clic en Ver incidente en el correo para ver el incidente en Cloud Monitoring. Para obtener más información sobre los incidentes, consulta el artículo Gestionar incidentes relacionados con políticas de alertas basadas en registros.

Otros casos: alertas en registros de auditoría

El ejemplo de la sección Crear una política de alertas basada en registros es artificial. Normalmente, no se crea una política de alertas y, a continuación, se escriben manualmente entradas de registro que cumplen la condición de la política de alertas. Las entradas de registro suelen escribirlas aplicaciones u otros servicios. Sin embargo, la fuente de las entradas de registro no importa. En el caso de las políticas de alertas basadas en registros, lo importante es la consulta que uses para seleccionar las entradas de registro.

En las siguientes secciones se describen situaciones realistas para las políticas de alertas basadas en registros, según el contenido de los registros de auditoría. En cada caso se muestra cómo crear una consulta que seleccione las entradas de registro de auditoría adecuadas. De lo contrario, el procedimiento para crear políticas de alertas basadas en registros es el mismo que se muestra en Crear una alerta basada en registros.

Políticas de alertas que monitorizan el acceso humano a los secretos

Supongamos que tu proyecto almacena secretos en Secret Manager y que algunos de estos secretos solo pueden usarlos las cuentas de servicio. Salvo en circunstancias inusuales, los usuarios humanos nunca acceden a estos secretos.

Si has habilitado el registro de auditoría de Secret Manager, cada vez que se acceda a un secreto correctamente, se creará una entrada de registro de auditoría. Cada entrada incluye el nombre del secreto y la identidad de la persona que llama.

Puedes crear una política de alertas basada en registros que te avise cuando un usuario humano acceda a un secreto.

A continuación, se muestra un fragmento de una entrada de registro de auditoría escrita por Secret Manager. El fragmento muestra los campos que son útiles para crear la consulta de una alerta basada en registros:

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "serviceName": "secretmanager.googleapis.com",
    "methodName": "google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion",
    "authenticationInfo": {
      "principalEmail": "my-svc-account@PROJECT_ID.iam.gserviceaccount.com",
      "serviceAccountDelegationInfo": [],
      "principalSubject": "serviceAccount:my-svc-account@PROJECT_ID.iam.gserviceaccount.com"
    },
    ...
  },
  ...
}

Los siguientes subcampos de protoPayload son de especial interés:

  • @type: indica que esta entrada de registro es una entrada de registro de auditoría.
  • serviceName: registra el servicio que escribió la entrada del registro de auditoría. Utiliza este campo para identificar las entradas escritas por Secret Manager.
  • methodName: identifica el método para el que se ha escrito esta entrada del registro de auditoría. Use este campo para identificar la acción que ha provocado que se cree esta entrada. En este ejemplo, se trata del método AccessSecretVersion.
  • authenticationInfo.principalEmail: registra la cuenta que ha invocado el método en el campo methodName. El valor esperado de este campo es una cuenta de servicio, que termina en gserviceaccount.com.

Para encontrar entradas de registro de acceso a secretos por parte de un usuario humano, busca entradas de registro de auditoría escritas por Secret Manager. Quieres encontrar las entradas de registro en las que el método AccessSecretVersion se ha invocado por una entidad que no termina en gserviceaccount.com. La siguiente consulta aísla estas entradas de registro:

protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog"
protoPayload.serviceName = "secretmanager.googleapis.com"
protoPayload.methodName =~ "AccessSecretVersion$"
protoPayload.authenticationInfo.principalEmail !~ "gserviceaccount.com$"

Para crear una política de alertas basada en registros para el acceso humano a secretos, usa esta consulta en el panel Elegir los registros que se incluirán en la alerta.

Políticas de alertas que monitorizan eventos de descifrado

El análisis del ejemplo anterior se puede adaptar a otros servicios. Por ejemplo, si usas Cloud Key Management Service para encriptar y desencriptar datos sensibles, puedes usar los registros de auditoría generados por Cloud KMS para detectar cuándo desencripta un valor un usuario humano.

Para encontrar entradas de registro de la descifrado realizada por un usuario humano, busca entradas de registro de auditoría escritas por Cloud KMS. Quieres encontrar las entradas de registro en las que se ha invocado el método Decrypt por una entidad que no termina en gserviceaccount.com, lo que indica que se trata de una cuenta de servicio. La siguiente consulta aísla estas entradas de registro:

protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog"
protoPayload.serviceName = "cloudkms.googleapis.com"
protoPayload.methodName = "Decrypt"
protoPayload.authenticationInfo.principalEmail !~ "gserviceaccount.com$"

Para crear una política de alertas basada en registros para el descifrado realizado por un usuario humano, usa esta consulta en el panel Elige los registros que se incluirán en la alerta.

Gestionar políticas de alertas basadas en registros en Monitoring

Puede ver, editar y eliminar políticas de alertas basadas en registros mediante la consola de Monitoring o la API de Monitoring.Google Cloud En este documento se describe cómo gestionar las políticas de alertas mediante la consola de Google Cloud . Para obtener información sobre cómo usar la API Monitoring para gestionar políticas de alertas, consulta Gestionar políticas de alertas mediante la API.

Para ver una lista de todas las políticas de alertas de tu Google Cloud proyecto, haz una de las siguientes acciones:

  • Para desplazarte desde Logging, sigue estos pasos:

    1. En la Google Cloud consola, ve a la página Explorador de registros:

      Ve al Explorador de registros.

      Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Registro.

    2. En la barra de herramientas Resultados de la consulta, despliega el menú Acciones y selecciona Gestionar alertas de registro.

  • Para desplazarte desde Monitoring, sigue estos pasos:

    1. En la Google Cloud consola, ve a la página  Alertas:

      Ve a Alertas.

      Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.

    2. Para ver todas las políticas y habilitar el filtrado, en el panel Políticas, haga clic en Ver todas las políticas.

Ambas acciones te llevan a la página Políticas de Monitorización, que muestra todas las políticas de alertas de tu proyecto Google Cloud .

Para restringir las políticas de alertas que se muestran, añade filtros. Cada filtro se compone de un nombre y un valor. Por ejemplo, puede definir el valor para que sea una concordancia exacta con el nombre de una política o una concordancia parcial. No se distingue entre mayúsculas y minúsculas. Si especifica varios filtros, se unirán implícitamente mediante el operador lógico AND, a menos que inserte un filtro OR. En la siguiente captura de pantalla se muestran las políticas de alertas que están habilitadas y que se crearon después del 1 de enero del 2021:

Lista de políticas de alertas habilitadas creadas después del 1 de enero del 2021.

En la página Políticas, puede editar, eliminar, copiar, habilitar o inhabilitar una política de alertas:

  • Para editar o copiar una política, haz clic en Más opciones y selecciona una opción. El proceso para editar y copiar una política es similar al que se describe en Crear una política de alertas basada en registros. Puedes cambiar y, en algunos casos, eliminar los valores de los campos. Cuando haya terminado, haga clic en Guardar.

    También puede editar una política de alertas basada en registros haciendo clic en su nombre en la lista de políticas.

  • Para eliminar una política, haz clic en Más opciones y selecciona Eliminar. En el cuadro de diálogo de confirmación, selecciona Eliminar.

  • Para habilitar o inhabilitar la política de alertas, haga clic en el interruptor situado debajo del encabezado Habilitada.

Crear una política de alertas basada en registros con la API Monitoring

Puede crear políticas de alertas basadas en registros mediante la API de Monitoring. Proporcionas a la API Monitoring la misma información que cuando usas el Explorador de registros en la consola de Google Cloud :

  • Detalles de la política de alertas, como el nombre y el nivel de gravedad.
  • Los registros de los que quieras recibir una notificación.
  • El tiempo entre notificaciones.
  • Tiempo para el cierre automático de incidentes.
  • A quién quieres notificar.
.

Para crear políticas de alertas mediante la API Monitoring, debes crear un objeto AlertPolicy y enviarlo al método alertPolicies.create.

Para usar la API Monitoring, debes habilitarla y tener autorización para usarla. Para obtener más información, consulta la siguiente documentación:

Estructura de las políticas de alertas

La API Monitoring representa una política de alertas mediante la estructura AlertPolicy. La estructura AlertPolicy tiene varias estructuras insertadas, incluida una descripción de la condición de la política de alertas. Las políticas de alertas basadas en registros se diferencian de las políticas de alertas basadas en métricas en los siguientes aspectos:

  • Para describir la condición, usa el LogMatch tipo de condición. Las políticas de alertas basadas en métricas usan diferentes tipos de condiciones.
  • Una política de alertas basada en registros solo puede tener una condición.
  • Para especificar el tiempo que transcurre entre las notificaciones y el periodo de cierre automático de incidencias, incluye una estructura AlertStrategy. Las políticas de alertas basadas en métricas no incluyen un tiempo entre notificaciones.

En esta sección se describe cómo crear una política de alertas basada en registros. Estas políticas se diferencian de las políticas de alertas basadas en métricas en el tipo de condición que se utiliza. En el caso de las políticas de alertas basadas en registros, el tipo de condición es LogMatch. Cuando usas la API Monitoring para gestionar las políticas de alertas, no hay diferencias en la forma de enumerar, editar o eliminar las políticas basadas en métricas y en registros. En Gestionar políticas de alertas mediante la API se describe cómo crear, enumerar, editar y eliminar políticas de alertas mediante la API Monitoring.

Reglas de notificación

Cuando creas una política de alertas basada en registros, Logging crea un objeto interno llamado regla de notificación. Logging usa la regla de notificación para asociar las entradas de registro entrantes con el filtro de tu política de alertas y, a continuación, crear una notificación cuando una entrada coincida con los criterios del filtro. No interactúas directamente con la regla de notificación. Sin embargo, para crear una política de alertas basada en registros, debes tener el permiso logging.notificationRules.create.

Diseñar la política de alertas

En la sección Crear una política de alertas basada en registros con el Explorador de registros se describe una forma de crear una política de alertas basada en registros. En esa sección se muestra cómo crear una política de alertas basada en registros que te avise cuando una entrada de registro syslog tenga un nivel de gravedad NOTICE y una dirección IPv4 no válida en el campo jsonPayload.result.

Para crear la misma política de alertas basada en registros mediante la API Monitoring, crea un objeto AlertPolicy que tenga el siguiente aspecto:

{
  "displayName": "Network address: invalid IPv4 value (API)",
  "documentation": {
    "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value.",
    "mimeType": "text/markdown"
  },

  "conditions": [
    {
      "displayName": "Log match condition: invalid IP addr (API)",
      "conditionMatchedLog": {
        "filter": "log_id(\"syslog\") severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"",
      },
    }
  ],
  "combiner": "OR",

  "alertStrategy": {
    "notificationRateLimit": {
      "period": "300s"
    },
    "autoClose": "604800s",
  },

  "notificationChannels": [
    "projects/PROJECT_ID/notificationChannels/CHANNEL_ID"
  ]
}

Este código JSON especifica la misma información que se indica al crear una política de alertas basada en registros mediante el Explorador de registros. En las siguientes secciones se asigna el contenido de esta estructura AlertPolicy a los pasos que debes seguir para crear una alerta basada en registros con el Explorador de registros. El valor del campo conditionMatchedLog es una estructura LogMatch.

Proporcionar un nombre y documentación

Las políticas de alertas tienen un nombre visible y documentación asociada que se proporciona con las notificaciones para ayudar a los responsables. En el Explorador de registros, estos campos se denominan Nombre de alerta y Documentación. Estos valores se representan en una estructura AlertPolicy de la siguiente manera:

{
  "displayName": "Network address: invalid IPv4 value (API)",
  "documentation": {
    "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value.",
    "mimeType": "text/markdown"
  },
  ...
}

En este ejemplo, el valor de displayName incluye "(API)" para que puedas distinguir entre las dos políticas de ejemplo al ver la lista de políticas en la consola de Google Cloud . En la página Políticas de Monitorización se muestran las políticas por nombre visible y se indica si se basan en métricas o en registros. Para obtener más información, consulta Gestionar políticas de alertas basadas en registros en Monitoring.

El campo documentation incluye, en el subcampo content, la descripción que puedes proporcionar al usar el Explorador de registros. El segundo subcampo, mimeType, es obligatorio cuando se especifica un valor en el campo documentation. El único valor válido es "text/markdown".

Elige los registros de los que quieras recibir una notificación

Una política de alertas basada en registros tiene una sola condición. En el Explorador de registros, especifica la condición cuando proporcionas una consulta en el campo Define las entradas de registro para las que quieres recibir alertas. Estos valores se representan en una estructura AlertPolicy de la siguiente manera:

{ ...
  "conditions": [
    {
      "displayName": "Log match condition: invalid IP addr (API)",
      "conditionMatchedLog": {
        "filter": "log_id(\"syslog\" severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"",
      },
    }
  ],
  "combiner": "OR",
  ...
}

El campo conditions acepta una lista de estructuras Condition, aunque una política de alertas basada en registros solo puede tener una condición. Cada Condition tiene un nombre visible y una descripción de la condición.

  • El valor del campo displayName es una breve descripción de la condición. Cuando usas Explorador de registros para crear políticas de alertas basadas en registros, el nombre visible siempre es "Condición de coincidencia de registro". Cuando usas la API Monitoring, puedes proporcionar un nombre visible más preciso. El valor es obligatorio.

  • El valor del campo conditionMatchedLog es una estructura LogMatch, y el valor del campo filter es la consulta que especifiques en el Explorador de registros. Como esta consulta se proporciona como valor de un campo JSON, la consulta completa aparece entre comillas y las comillas de la propia consulta deben incluir el carácter de escape \ (barra invertida).

  • La estructura LogMatch también incluye un campo opcional labelExtractors. Puedes usar extractores de etiquetas para crear etiquetas personalizadas a partir de tus entradas de registro y, a continuación, hacer referencia a esas etiquetas en tus notificaciones.

    Por ejemplo, para extraer el valor de la etiqueta labels."compute.googleapis.com/resource_id" de tu entrada de registro en una etiqueta llamada vm_identifier, la condición anterior podría tener el siguiente aspecto:

    "conditions": [
      {
        "displayName": "Log match condition: invalid IP addr (API)",
        "conditionMatchedLog": {
          "filter": "log_id(\"syslog\" severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\")",
          "labelExtractors": {
            "vm_identifier": "EXTRACT(labels.\"compute.googleapis.com/resource_id\")"
          }
        },
      }
    ],
    

    Usa la función EXTRACT para obtener coincidencias con todo el valor o REGEXP_EXTRACT para obtener coincidencias con subcadenas basadas en expresiones regulares. Se trata de la misma función que se usa para extraer etiquetas en métricas basadas en registros. Consulta Crear una etiqueta para obtener más información.

    Puedes usar estas etiquetas extraídas en la documentación de la política de alertas para que se incluyan en las notificaciones. En el campo documentation de tu política de alertas, puedes hacer referencia a las etiquetas extraídas mediante una variable con el formato ${log.extracted_label.KEY}, donde KEY es el nombre que le has dado a la etiqueta extraída.

    En el siguiente ejemplo se muestra cómo hacer referencia a la clave de la etiqueta extraída vm_identifier para que el valor de la etiqueta de registro labels."compute.googleapis.com/resource_id" se incluya en las notificaciones:

    "documentation": {
      "content": "Log-based alerting policy in project ${project} detected an
       invalid IPv4 value on VM with ID ${log.extracted_label.vm_identifier}.",
      "mimeType": "text/markdown"
    },
    

El valor del campo combiner especifica cómo combinar los resultados de varias condiciones en las políticas de alertas basadas en métricas. Solo puedes usar una condición en las políticas de alertas basadas en registros y debes especificar el campo combiner con el valor "OR". No puedes crear políticas de alertas basadas en registros con varias condiciones.

Definir valores de notificación y cierre automático

Una política de alertas basada en registros especifica el tiempo mínimo que debe transcurrir entre las notificaciones. En el Explorador de registros, selecciona un valor en el menú Tiempo entre notificaciones. Este valor se representa en una estructura AlertPolicy especificando un valor, en segundos, para el campo period de una estructura NotificationRateLimit insertada en una estructura AlertStrategy.

Del mismo modo, la política de alertas incluye el periodo durante el que los incidentes se cierran automáticamente. El valor predeterminado es 7 días. En el Explorador de registros, puede seleccionar otro valor en el menú Duración de cierre automático de incidentes. Esta opción se corresponde con el campo autoclose de la estructura de la API AlertStrategy. Cuando utilice este campo, especifique el valor en segundos. El valor mínimo es de 1800 segundos (30 minutos).

{ ...
  "alertStrategy": {
    "notificationRateLimit": {
      "period": "300s"
    },
    "autoClose": "604800s",
  },
  ...
}

El valor del campo period de este ejemplo, 300s, equivale a 5 minutos. El valor autoclose, 604800s, equivale a 7 días.

Especifica a quién quieres notificar

Una política de alertas puede incluir una lista de canales de notificaciones. En el Explorador de registros, puedes seleccionar canales en un menú. Estos valores se representan en una estructura AlertPolicy proporcionando una lista de uno o varios nombres de recursos de objetos NotificationChannel configurados:

{ ...
  "notificationChannels": [
    "projects/PROJECT_ID/notificationChannels/CHANNEL_ID"
  ]
}

Cuando creas un canal de notificaciones, se le asigna un nombre de recurso. Para obtener información sobre cómo recuperar la lista de canales de notificación disponibles, incluidos sus nombres de recursos, consulta el artículo Recuperar canales de la documentación de Monitoring. No puedes obtener los IDs de canal mediante la consolaGoogle Cloud .

Enviar la política de alertas a la API Monitoring

Para crear una política de alertas mediante la API Monitoring, debes crear un objeto AlertPolicy y enviarlo al método alertPolicies.create. Puedes invocar la alertPolicies.create mediante la CLI de Google Cloud o llamando directamente a la API Monitoring.

También puedes crear políticas de alertas basadas en registros con las bibliotecas de cliente de C#, Go, Java, Python y Ruby. También puedes usar otras bibliotecas de cliente. La biblioteca de tu lenguaje debe incluir el tipo de condición LogMatch.

Para crear una política de alertas con gcloud CLI, haz lo siguiente:

  1. Coloca la representación JSON de tu política de alertas en un archivo de texto. Por ejemplo, en un archivo llamado alert-invalid-ip.json.

  2. Transfiere este archivo JSON a la CLI de gcloud con el siguiente comando:

    gcloud alpha monitoring policies create --policy-from-file="alert-invalid-ip.json"
    
  3. Si se ejecuta correctamente, este comando devuelve el nombre del recurso de la nueva política. Por ejemplo:

    Created alerting policy [projects/PROJECT_ID/alertPolicies/POLICY_ID].
    

Para crear una política de alertas llamando directamente a alertPolicies.create, puedes usar la herramienta Explorador de APIs de la siguiente manera:

  1. Ve a la página de referencia de alertPolicies.create.

  2. En el panel Probar esta API, haz lo siguiente:

    1. En el campo name, introduce el siguiente valor:

      projects/PROJECT_ID
      
    2. Copia la representación JSON de tu política de alertas y sustituye el contenido del campo Cuerpo de la solicitud del Explorador de APIs por la política de alertas copiada.

    3. Haz clic en la opción para ejecutar.

      Si la llamada alertPolicies.create se realiza correctamente, obtendrás un código de respuesta HTTP 200 y un cuerpo de respuesta vacío, {}. Para obtener más información sobre el Explorador de APIs, consulta el artículo Usar el Explorador de APIs en la documentación de monitorización.

Para obtener más información sobre cómo crear políticas de alertas mediante la API Monitoring, consulta Crear políticas. En los ejemplos de ese documento se usan tipos de condiciones para las políticas de alertas basadas en métricas, pero los principios son los mismos.

Probar la política de alertas

Para probar la nueva política de alertas, puede seguir el mismo procedimiento que se describe en Probar la alerta basada en registros de ejemplo.

Ejemplo: Crear una política de alertas cuando una entrada de registro contenga una cadena de texto

En este ejemplo se usa la Google Cloud consola para crear una política de alertas, el Explorador de registros para ver las entradas de registro y la CLI de Google Cloud para escribir una entrada de registro:

  1. En la Google Cloud consola, ve a la página Explorador de registros:

    Ve al Explorador de registros.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Registro.

  2. En el panel Consulta, introduce la siguiente consulta después de actualizar el valor de PROJECT_ID:

    logName="projects/PROJECT_ID/logs/test-log"
    textPayload:"Oops"
    

    La consulta busca en el registro con el nombre test-log entradas de registro que tengan un campo textPayload que contenga la cadena "Oops".

  3. En la barra de herramientas Resultados de la consulta, despliega el menú Acciones y selecciona Crear alerta de registro. A continuación, completa el cuadro de diálogo.

    Debes introducir un nombre para la política, como Alert on Oops. La consulta que has introducido en el paso anterior se incluye automáticamente en la política de alertas.

  4. Para probar la política de alertas, abre Cloud Shell y ejecuta el siguiente comando:

    gcloud logging write test-log --severity=ERROR --payload-type=text 'This log entry contains Oops'
    

    El comando anterior escribe una entrada en el registro llamado test-log. La entrada tiene un nivel de gravedad ERROR e incluye un campo textPayload.

  5. En el Explorador de registros, haz clic en Ejecutar consulta.

    Una vez que se haya actualizado la pantalla, podrá ver los detalles de la entrada de registro que ha escrito en el paso anterior.

  6. En la Google Cloud consola, ve a la página  Alertas:

    Ve a Alertas.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.

    En el panel Incidentes se muestran el incidente y los detalles de la política de alertas.

    Si no ves ningún incidente al abrir la página Alertas, espera unos minutos y vuelve a cargar la página.

No verás otro incidente ni recibirás otra notificación si repites inmediatamente el comando de la CLI de Google Cloud. Los ajustes de la política de alertas especifican el periodo mínimo entre incidentes. Puedes ver y cambiar esos ajustes editando la política.