Configurar alertas basadas en registros

Puedes usar alertas basadas en registros para recibir notificaciones cada vez que aparezca un mensaje específico en tus registros incluidos. Por ejemplo, si quieres saber cuándo un registro de auditoría registra un mensaje de acceso a datos en particular, puedes crear una alerta basada en registros que coincida con el mensaje y te avise cuando aparezca. En este documento, se describe cómo hacer lo siguiente con la consola de Google Cloud y la API de Cloud Monitoring:

  • Crea y prueba una alerta basada en registros.
  • Editar una alerta basada en registros
  • Borrar una alerta basada en registros

Antes de comenzar

Revisa Comparación de alertas para determinar si las alertas basadas en registros son una buena opción para los datos en tus registros. Por ejemplo:

  • Las alertas basadas en registros no operan en registros excluidos.

  • No puedes usar alertas basadas en registros para derivar recuentos de tus registros. Para derivar recuentos, debes usar métricas basadas en registros en su lugar.

Para crear y administrar alertas basadas en registros, tu función de Identity and Access Management debe incluir los permisos descritos en Permisos para alertas basadas en registros.

Crea una alerta basada en registros con el Explorador de registros

Puedes crear alertas basadas en registros desde la página Explorador de registros en la consola de Google Cloud o mediante la API de Monitoring. En esta sección, se describe cómo crear alertas basadas en registros con el Explorador de registros. Para crear alertas basadas en registros con la API de Monitoring, consulta Crea una alerta basada en registros con la API de Monitoring.

La interfaz del Explorador de registros para crear y editar alertas basadas en registros te guía a través de los siguientes pasos:

  • Proporciona un nombre y una descripción para la alerta.
  • Elige los registros para los que quieres recibir notificaciones.
  • Establece el tiempo entre notificaciones.
  • Establece la hora del cierre automático de incidentes.
  • Especifica a quién 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 en la dirección de red incluyen una carga útil de JSON que se ve de la siguiente manera:

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

Deseas crear una alerta basada en registros que te notifique cuando aparece una dirección IPv4 no válida en el campo jsonPayload.result de las entradas de registro en syslog con gravedad NOTICE.

Para crear la alerta basada en registros, haz lo siguiente:

  1. En el panel de navegación de la consola de Google Cloud, elige Logging y, luego, Explorador de registros:

    Ir al Explorador de registros

  2. Usa el panel Consultas para compilar una consulta que coincida con el mensaje que deseas usar en tu alerta basada en registros.

    Por ejemplo, para encontrar 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}$"
    

    Usa Ejecutar consulta en el panel Resultados de la consulta para validar la consulta.

  3. En el encabezado del panel Resultados de la consulta, haz clic en  Crear alerta. Cuando la ventana sea limitada, la opción Crear alerta podría aparecer en el menú Acciones.

  4. En el panel Detalles de la alerta, asigna un nombre y una descripción a la alerta:

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

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

    3. Ingresa una descripción de esta alerta. También puedes incluir información que pueda ayudar al destinatario de una notificación a diagnosticar el problema. En la siguiente cadena, se resume el motivo de la alerta:

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

      Si deseas obtener información para dar formato al contenido de este campo y adaptarlo, consulta Cómo usar Markdown y variables en las plantillas de documentación.

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

  6. En el panel Elegir registros para incluir en el alerta, haz clic en Obtener vista previa de los registros para verificar la consulta y los resultados.

    Recomendamos compilar la consulta en el panel Consulta del Explorador de registros. La consulta que compilaste en el panel Consulta (Query) también se muestra en este panel, por ejemplo:

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

    Si es necesario, puedes editar la consulta en este panel. Si editas la consulta, haz clic en Obtener vista previa de los registros para verificar los resultados.

  7. Haz clic en Siguiente.

  8. Selecciona el tiempo mínimo entre notificaciones. Este valor te permite controlar la cantidad de notificaciones que recibes de esta alerta si se activa varias veces. Para este ejemplo, selecciona 5 min en las opciones.

  9. Opcional: Selecciona la duración del cierre automático de incidentes. De forma predeterminada, la duración del cierre automático de incidentes se establece en 7 días.

  10. Haz clic en Siguiente.

  11. Selecciona uno o más canales de notificaciones para tu alerta. Para este ejemplo, selecciona un canal de notificaciones por correo electrónico.

    Si ya tienes configurado un canal de notificaciones por correo electrónico, puedes seleccionarlo de la lista. Si no es así, haz clic en Administrar canales de notificaciones y agrega un canal de correo electrónico. Para obtener información sobre la creación de canales de notificaciones, consulta Cómo administrar canales de notificaciones.

  12. Haz clic en Guardar.

Tu alerta basada en registros ya está lista para la prueba.

Prueba la alerta basada en registros de ejemplo

Para probar la alerta que creaste, puedes escribir de forma manual una entrada de registro que coincida con la consulta. Para escribir la entrada de registro, haz lo siguiente:

  1. Cambia la variable PROJECT_ID por el ID del proyecto para configurar la siguiente entrada de registro:

    {
      "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:

    Ir a logEntries.write

  3. Copia la entrada de registro que configuraste anteriormente.

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

    1. Reemplaza el contenido del campo Cuerpo de la solicitud en el Explorador de APIs con la entrada de registro que copiaste en el paso anterior.

    2. Haz clic en Ejecutar. Si se te solicita, sigue el flujo de autenticación.

      Si la llamada a 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 Usa el Explorador de APIs en la documentación de Monitoring; el Explorador de APIs funciona de la misma manera con la API de Logging.

La entrada de registro coincide con el filtro especificado para la alerta de las siguientes maneras:

  • El valor logName especifica el registro syslog en tu proyecto de Google Cloud.
  • El valor severity para 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 y activa la alerta.
  • Se abre un incidente en Cloud Monitoring.
  • Recibirás una notificación del incidente. Si configuraste un canal de notificaciones por correo electrónico, la notificación se verá como la siguiente captura de pantalla:

    La alerta basada en registros de ejemplo genera una notificación por correo electrónico.

Puedes hacer clic en Ver incidente en el correo electrónico para verlo en Cloud Monitoring. Si deseas obtener más información sobre los incidentes, consulta Administra los incidentes para las alertas basadas en registros.

Otras situaciones: Alertas sobre los registros de auditoría

El ejemplo en Crea una alerta basada en registros es artificial. Por lo general, no debes crear una alerta y, luego, escribir entradas de registro de forma manual para activar la alerta. Por lo general, las aplicaciones u otros servicios escriben las entradas de registro. Pero la fuente de las entradas de registro no importa; para las alertas basadas en registros, lo que importa es la consulta que usas para seleccionar las entradas de registro.

En las siguientes secciones, se describen situaciones realistas para las alertas basadas en registros según el contenido de los registros de auditoría. Cada situación ilustra cómo crear una consulta que aísle las entradas de registro de auditoría deseadas. De lo contrario, el procedimiento para crear alertas basadas en registros es el mismo que se muestra en Crea una alerta basada en registros.

Alertas sobre el acceso humano a los secretos

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

Si habilitaste el registro de auditoría para Secret Manager, cada intento exitoso de acceder a un secreto crea una entrada de registro de auditoría. Cada entrada incluye el nombre del secreto y la identidad del emisor.

Puedes crear una alerta basada en registros que te notifique cuando un usuario humano acceda a un secreto.

A continuación, se muestra un extracto de una entrada de registro de auditoría que escribió Secret Manager. En el extracto, se muestran los campos que son útiles a fin de crear la consulta para 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 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 de registro de auditoría. Usa este campo para identificar las entradas que escribió Secret Manager.
  • methodName: Identifica el método para el que se escribió esta entrada de registro de auditoría. Usa este campo para identificar la acción que causó la creación de esta entrada. En este ejemplo, es el método AccessSecretVersion.
  • authenticationInfo.principalEmail: Registra la cuenta que invocó el método en el campo methodName. El valor esperado para este campo es una cuenta de servicio, que termina con gserviceaccount.com.

Para encontrar entradas de registro de acceso a secretos por parte de un usuario humano, busca las entradas de registro de auditoría que escribió Secret Manager. Deseas encontrar las entradas de registro en las que una principal que no termina con gserviceaccount.com invocó el método AccessSecretVersion. 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$"

Si quieres crear una alerta basada en registros para el acceso humano a los secretos, usa esta consulta en el panel Elige los registros para incluir en la alerta.

Alertas sobre eventos de desencriptación

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 registros de auditoría que genera Cloud KMS para detectar cuándo un usuario humano desencripta un valor.

Para encontrar entradas de registro para la desencriptación realizada por un usuario humano, busca las entradas de registro de auditoría escritas por Cloud KMS. Deseas encontrar las entradas de registro en las que una principal invocó el método Decrypt a través de una principal que no termina con gserviceaccount.com, que indica 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$"

Si quieres crear una alerta basada en registros para la desencriptación realizada por un usuario humano, usa esta consulta en el panel Elige los registros para incluir en la alerta.

Administra alertas basadas en registros en Monitoring

Puedes ver, editar y borrar alertas basadas en registros con la consola de Google Cloud para Monitoring o con la API de Monitoring. En este documento, se describe cómo administrar las políticas de alertas mediante la consola de Google Cloud. Si quieres obtener información sobre el uso de la API de Monitoring para administrar las políticas de alertas, consulta Administra las políticas de alertas con la API.

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

  • Para navegar desde Logging, haz lo siguiente:

    1. En el panel de navegación de la consola de Google Cloud, elige Logging y, luego, Explorador de registros:

      Ir al Explorador de registros

    2. En el encabezado del panel Resultados de la consulta, selecciona el menú Acciones y selecciona Administrar alertas.

  • Para navegar desde Monitoring, haz lo siguiente:

    1. En el panel de navegación de la consola de Google Cloud, elige Monitoring y, luego,  Alertas:

      Ir a las Alertas

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

Ambas acciones te llevarán a la página Políticas de Monitoring, que enumera todas las políticas de alertas en tu proyecto de Google Cloud.

A fin de restringir las políticas de alertas que se enumeran, agrega filtros. Cada filtro se compone de un nombre y un valor. Por ejemplo, puedes configurar el valor para que sea una concordancia exacta con el nombre de una política o una coincidencia parcial. Las coincidencias no distinguen mayúsculas de minúsculas. Si especificas varios filtros, estos se unen de forma implícita con un AND lógico, a menos que insertes un filtro OR. En la siguiente captura de pantalla, se enumeran las políticas de alertas habilitadas actualmente que se crearon después del 1 de enero de 2021:

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

Desde la página Políticas, puedes editar, borrar, copiar, habilitar o inhabilitar una política de alertas:

  • Para editar o copiar una política, haz clic en Más opciones y selecciona la opción deseada. Editar y copiar una política es similar al procedimiento descrito en Crea una alerta basada en registros . Puedes cambiar y, en algunos casos, borrar los valores en los campos. Cuando termines, haz clic en Guardar.

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

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

  • Para habilitar o inhabilitar la política de alertas, haz clic en el botón de activación ubicado debajo del encabezado Habilitado.

Crea una alerta basada en registros con la API de Monitoring

Puedes crear alertas basadas en registros con la API de Monitoring. Proporcionas la misma información a la API de Monitoring que proporcionas cuando usas el Explorador de registros en la consola de Google Cloud:

  • Un nombre y una descripción para la alerta.
  • Los registros para los que quieres recibir notificaciones.
  • El tiempo entre notificaciones.
  • La hora del cierre automático de incidentes.
  • A quién notificar.

Para crear políticas de alertas con la API de Monitoring, crea un objeto AlertPolicy y envíalo al método alertPolicies.create.

Antes de poder usar la API de 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 de Monitoring representa una política de alertas mediante la estructura AlertPolicy. La estructura AlertPolicy tiene varias estructuras incorporadas, incluida una descripción de la condición que activa la alerta. Las políticas de alertas basadas en registros difieren de las políticas de alertas basadas en métricas de las siguientes maneras:

  • Describes la condición con el tipo de condición LogMatch. 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 entre las notificaciones y el período automático de cierre de incidentes, 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 difieren de las políticas de alertas basadas en métricas en cuanto al tipo de condición que usas. Para las alertas basadas en registros, el tipo de condición es LogMatch. Cuando usas la API de Monitoring para administrar las políticas de alertas, no hay diferencias en la forma de enumerar, editar o borrar métricas y políticas basadas en registros. En Administra políticas de alertas por API, se describe cómo crear, enumerar, editar y borrar una política de alertas con la API de Monitoring.

Diseña la política de alertas

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

Para crear la misma alerta basada en registros con la API de Monitoring, debes crear un objeto AlertPolicy que tenga la siguiente estructura JSON:

{
  "displayName": "Network address: invalid IPv4 value (API)",
  "documentation": {
    "content": "Log-based alert 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 especificas cuando creas una alerta basada en registros con el Explorador de registros. En las siguientes secciones, se asigna el contenido de esta estructura de AlertPolicy a los pasos que sigues cuando usas el Explorador de registros para crear una alerta basada en registros. El valor del campo conditionMatchedLog es una estructura LogMatch.

Proporciona un nombre y una descripción

Una política de alertas tiene un nombre visible y documentación asociada que se proporciona con las notificaciones para ayudar a las personas que responden. En el Explorador de registros, estos campos se llaman Nombre de la alerta y Descripción de la alerta. Representas estos valores en una estructura AlertPolicy de la siguiente manera:

{
  "displayName": "Network address: invalid IPv4 value (API)",
  "documentation": {
    "content": "Log-based alert 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 cuando veas la lista de políticas en la consola de Google Cloud. En la página Políticas de Monitoring, se enumeran las políticas por nombre visible y se indica si la política se basa en métricas o registros. Para obtener más información, consulta Administra alertas basadas en registros en Monitoring.

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

Elige los registros para los que quieres recibir notificaciones

Una política de alertas basada en registros tiene una sola condición. En el Explorador de registros, debes especificar la condición cuando proporcionas una consulta en el campo Definir entradas de registro para alertar sobre. Representas estos valores 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 toma una lista de estructuras Condition, aunque una política de alertas basada en registros debe tener solo una condición. Cada Condition tiene un nombre visible y una descripción de la condición.

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

  • El valor del campo conditionMatchedLog es una estructura LogMatch y el valor del campo filter es la consulta que especificas en el Explorador de registros. Debido a que esta consulta se proporciona como el valor de un campo JSON, toda la consulta aparece entre comillas, y las comillas de la consulta en sí deben escaparse con el carácter \ (barra inversa).

  • La estructura LogMatch también incluye un campo opcional labelExtractors. Puedes usar extractores para redactar etiquetas personalizadas de tus entradas de registro y, luego, 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 verse 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}$\"",
          "labelExtractors": {
            "vm_identifier": "EXTRACT(labels.\"compute.googleapis.com/resource_id\")"
          }
        },
      }
    ],
    

    Usa la función EXTRACT para que coincida con todo el valor o REGEXP_EXTRACT para hacer coincidir subcadenas basadas en expresiones regulares. Estas son las mismas funciones que se usan para la extracción de etiquetas en las métricas basadas en registros; consulta Crea una etiqueta para obtener más información.

    Puedes usar estas etiquetas extraídas en la documentación de alertas para que se informen 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}, en la que KEY es el nombre que le diste 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 de modo que el valor de la etiqueta de registro labels."compute.googleapis.com/resource_id" se incluya en las notificaciones de alerta:

    "documentation": {
      "content": "Log-based alert 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 alertas basadas en registros y debes especificar el campo combiner con el valor "OR". No puedes crear alertas basadas en registros con varias condiciones.

Establece valores de notificación y cierre automático

Una política de alertas para una alerta basada en registros especifica el tiempo mínimo entre notificaciones. En el Explorador de registros, selecciona un valor del menú Tiempo entre notificaciones. A fin de representar este valor en una estructura AlertPolicy, especifica un valor, en segundos, para el campo period de una estructura NotificationRateLimit incorporada en una estructura AlertStrategy.

Del mismo modo, la política de alertas incluye el período para el cierre automático de incidentes. El valor predeterminado es 7 días. En el Explorador de registros, puedes seleccionar un valor diferente en el menú Duración del cierre automático de incidentes. La opción corresponde al campo autoclose en la estructura de la API de AlertStrategy. Cuando uses este campo, especifica el valor en segundos. El valor mínimo es 1,800 segundos o 30 minutos.

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

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

Especifica a quién notificar

Una política de alertas puede incluir una lista de canales de notificaciones. En el Explorador de registros, selecciona canales en un menú. A fin de representar estos valores en una estructura AlertPolicy, proporciona una lista de uno o más nombres de recursos para 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 Recupera canales en la documentación de Monitoring. No puedes obtener los ID del canal con la consola de Google Cloud.

Envía tu política de alertas a la API de Monitoring

Para crear una política de alertas con la API de Monitoring, crea un objeto AlertPolicy y envíalo al método alertPolicies.create. Puedes invocar el alertPolicies.create con Google Cloud CLI y llamar directamente a la API de Monitoring.

También puedes crear alertas basadas en registros mediante las bibliotecas cliente para C#, Go, Java, Python y Ruby. Es posible que también puedas usar otras bibliotecas 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. Pasa este archivo JSON a gcloud CLI con el siguiente comando:

    gcloud alpha monitoring policies create --policy-from-file="alert-invalid-ip.json"
    
  3. Si funciona, este comando mostrará el nombre de la política nueva, por ejemplo:

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

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

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

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

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

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

    3. Haz clic en Ejecutar.

      Si la llamada a 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 Usa el Explorador de APIs en la documentación de Monitoring.

Para obtener más información sobre la creación de políticas de alertas con la API de Monitoring, consulta Crea 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.

Prueba la política de alertas

Para probar la política de alertas nueva, puedes usar el mismo procedimiento que se describe en Prueba la alerta basada en registros de ejemplo.

Ejemplo: Crea una alerta cuando una entrada de registro contenga una string de texto

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

  1. En el panel de navegación de la consola de Google Cloud, elige Logging y, luego, Explorador de registros:

    Ir al Explorador de registros

  2. En el panel Consultas, ingresa 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 string “Uops”.

  3. Haz clic en Crear alerta y completa el cuadro de diálogo. Debes ingresar un nombre para la política, como Alert on Oops. La consulta que ingresaste en el paso anterior se incluye de forma automática 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 llamada test-log. La entrada tiene un nivel de gravedad ERROR y, además, incluye un campo textPayload.

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

    Después de actualizar la pantalla, podrás ver los detalles de la entrada de registro que escribiste en el paso anterior.

  6. Para ver la alerta, en el panel de navegación, selecciona Monitoring y, luego, Alertas. En el panel Incidentes, se muestra el incidente y los detalles sobre la política de alertas.

    Si no ves un incidente cuando abres la página Alertas, espera unos minutos y, luego, actualiza la página.

No verás otro incidente ni recibirás otra notificación si repites el comando de Google Cloud CLI de inmediato. La configuración de la política de alertas especifica el período mínimo entre incidentes. Para ver y cambiar esa configuración, edita la política.