

# Alarma en los registros
<a name="Alarm-On-Logs"></a>

Puede crear alarmas de CloudWatch que supervisen los datos de registro de dos maneras:
+ **Enfoque de alarma de registros**: cree una alarma de registro que ejecute una consulta de Información de registros de CloudWatch según una programación y evalúe los resultados agregados directamente con respecto a un umbral.
+ **Enfoque de filtro de métricas**: cree un filtro de métricas en un grupo de registro y, a continuación, cree una alarma de métricas estándar para la métrica resultante.

## Creación de una alarma de registro
<a name="Create_Log_Alarm"></a>

### Creación de una alarma de registro
<a name="log-alarm-overview"></a>

Puede crear una alarma de CloudWatch que utilice una consulta de Información de registros de CloudWatch para supervisar directamente los datos de registro. La consulta se ejecuta según una programación mediante una consulta programada, y la alarma evalúa los resultados agregados con respecto a un umbral. Para obtener más información sobre el funcionamiento de las alarmas de registro, consulte [Alarmas de registro](alarm-log.md).

### Requisitos previos
<a name="log-alarm-prerequisites"></a>

Antes de crear una alarma de registro, debe crear un rol de IAM que conceda a Registros de CloudWatch permiso para ejecutar la consulta programada. Para incluir también líneas de registro en las notificaciones de Amazon SNS, debe crear un segundo rol.

**nota**  
Si crea una alarma de registro desde la consola de CloudWatch, la consola le ayudará a crear estos roles.

#### Rol de ejecución de consultas programadas
<a name="log-alarm-prereq-query-role"></a>

El rol de ejecución de consultas programadas permite que Registros de CloudWatch ejecute la consulta en su nombre. Este rol es obligatorio para que todas las alarmas de registro puedan ejecutar la consulta programada. El rol debe confiar en la entidad principal de servicio `logs.amazonaws.com`.

En el siguiente ejemplo se muestra la política de confianza del rol de ejecución de consultas programadas.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

En el siguiente ejemplo se muestra la política de permisos. Limite el alcance de `Resource` a los ARN de los grupos de registro que son el objetivo de la consulta.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:StartQuery",
                "logs:StopQuery",
                "logs:GetQueryResults",
                "logs:DescribeLogGroups"
            ],
            "Resource": "arn:aws:logs:{{region}}:{{account-id}}:log-group:{{your-log-group}}:*"
        }
    ]
}
```

#### Rol de líneas de registro (opcional)
<a name="log-alarm-prereq-alarm-role"></a>

El rol de líneas de registro permite que CloudWatch obtenga líneas de registro para las notificaciones por correo electrónico de Amazon SNS. Este rol solo es obligatorio si establece `ActionLogLineCount` en un valor superior a 0. El rol debe confiar en la entidad principal de servicio `cloudwatch.amazonaws.com`.

En el siguiente ejemplo se muestra la política de confianza del rol de líneas de registro.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudwatch.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

En el siguiente ejemplo se muestra la política de permisos del rol de líneas de registro. El permiso `logs:GetQueryResults` es obligatorio para obtener líneas de registro. Limite el alcance de `Resource` a los ARN de los grupos de registro que son el objetivo de la consulta.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:GetQueryResults"
            ],
            "Resource": "arn:aws:logs:{{region}}:{{account-id}}:log-group:{{your-log-group}}:*"
        }
    ]
}
```

**nota**  
Para ver los resultados de las consultas de las alarmas de registro en la consola de CloudWatch, el usuario o rol de IAM que acceda a la consola debe tener el permiso `logs:GetScheduledQueryData`. Esta API solo está disponible en la consola y no se puede utilizar mediante la AWS CLI ni el SDK. CloudTrail registra esta API como un evento de datos, por lo que debe configurar un registro de seguimiento que registre eventos de datos para capturarla.

### Creación de una alarma de registro mediante la consola
<a name="log-alarm-create-console"></a>

Los pasos de esta sección explican cómo utilizar la consola de CloudWatch para crear una alarma de registro. También puede utilizar la AWS CLI para crear una alarma de registro. Para obtener más información, consulte [Creación de una alarma de registro mediante la AWS CLI](#log-alarm-create-cli).

**Para crear una alarma de registro**

1. Abra la consola de CloudWatch en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. En el panel de navegación, elija **Alarmas**.

1. Elija **Crear alarma**.

1. En **Origen de datos**, seleccione **Registros**.

1. En **Consulta de registros**:

   1. Seleccione **Crear consulta en Análisis de registros**. Se abre la página Análisis de registros, donde puede crear la consulta.

   1. En la página Análisis de registros, escriba la consulta. Cuando termine, seleccione **Continuar a Alarmas** en la esquina superior derecha para volver a la consola de alarmas.

   1. En **Expresión de agregación**, especifique cómo se agregarán los resultados de la consulta para devolver un valor numérico que se utilizará en la evaluación de la alarma, por ejemplo, `count(*)` o `avg(latency) by endpoint`.

1. En **Condiciones de la alarma**:

   1. En **Cuando el resultado agregado sea…**, seleccione un operador de comparación.

   1. En **que…**, introduzca el valor del umbral.

   1. (Opcional) En **Configuración adicional**:

      1. Modifique **Puntos de datos para activar la alarma** para especificar cuántos resultados deben superar el umbral para activar el estado `ALARM` de las últimas N consultas.

      1. Modifique **Tratamiento de los datos faltantes** para especificar cómo se deben tratar los datos faltantes.

1. En **Programación**:

   1. En **Frecuencia de evaluación**, seleccione la frecuencia con la que se ejecutará la consulta, por ejemplo, cada 5 minutos.

   1. En **Desplazamiento de la hora de inicio**, especifique el período retrospectivo de cada ejecución de la consulta.

   1. En **Desplazamiento de la hora de finalización** (opcional), especifique el final del intervalo de tiempo de la consulta como un desplazamiento, en segundos, con respecto a la hora actual.

1. En **Permiso de IAM**:

   1. Especifique el rol necesario para ejecutar la consulta programada. Puede crear un rol nuevo o utilizar uno existente.

1. Elija **Siguiente**.

1. En **Configurar acciones**, configure las acciones y notificaciones según sea necesario.

   1. Para incluir en las notificaciones por correo electrónico de Amazon SNS las líneas de registro que provocaron la transición de la alarma, en **Incluir los resultados de la consulta en las acciones**:

     1. Agregue **Número de resultados de la consulta** para especificar cuántas líneas de registro se incluirán.

     1. Cree o seleccione un rol existente que se utilizará para obtener los resultados de consulta necesarios.

1. Elija **Siguiente**.

1. Introduzca un **Nombre** y, de manera opcional, una **Descripción**, que admite Markdown.

1. (Opcional) Añada etiquetas.

1. Elija **Siguiente**.

1. En **Vista previa y creación**, revise la configuración y, a continuación, seleccione **Crear alarma**.

### Creación de una alarma de registro mediante la AWS CLI
<a name="log-alarm-create-cli"></a>

Puede utilizar el comando AWS CLI `put-log-alarm` para crear una alarma de registro.

En el siguiente ejemplo se crea una alarma de registro que supervisa los recuentos de errores de un grupo de registro y pasa al estado `ALARM` cuando el recuento supera 100 en 3 de 5 ejecuciones de la consulta.

```
aws cloudwatch put-log-alarm \
    --alarm-name "HighErrorCount" \
    --alarm-description "Alarm when error count exceeds 100" \
    --comparison-operator GreaterThanThreshold \
    --threshold 100 \
    --query-results-to-evaluate 5 \
    --query-results-to-alarm 3 \
    --treat-missing-data missing \
    --alarm-actions "arn:aws:sns:{{region}}:{{account-id}}:{{topic-name}}" \
    --scheduled-query-configuration '{
        "QueryString": "fields @timestamp, @message | filter @message like /ERROR/",
        "LogGroupIdentifiers": ["/aws/lambda/my-function"],
        "ScheduledQueryRoleARN": "arn:aws:iam::{{account-id}}:role/ScheduledQueryRole",
        "AggregationExpression": "count(*)",
        "ScheduleConfiguration": {
            "ScheduleExpression": "rate(10 minutes)",
            "StartTimeOffset": 600
        }
    }' \
    --action-log-line-count 5 \
    --action-log-line-role-arn "arn:aws:iam::{{account-id}}:role/LogLineRole"
```

En la siguiente tabla se describen los parámetros principales del comando `put-log-alarm`.


**Parámetros de put-log-alarm**  

| Parámetro | Obligatorio | Descripción | 
| --- | --- | --- | 
| --alarm-name | Sí | El nombre de la alarma. Debe contener únicamente caracteres UTF-8. | 
| --comparison-operator | Sí | Operador de comparación para la evaluación del umbral. Valores válidos: GreaterThanThreshold, GreaterThanOrEqualToThreshold, LessThanThreshold, LessThanOrEqualToThreshold. | 
| --threshold | Sí | Valor numérico del umbral con el que se realizará la comparación. | 
| --query-results-to-evaluate | Sí | Número de ejecuciones recientes de la consulta que se evaluarán, es decir, N en la evaluación de M de N. | 
| --query-results-to-alarm | Sí | Número de resultados que deben superar el umbral para activar ALARM, es decir, M en la evaluación de M de N. | 
| --treat-missing-data | No | Forma en que se tratarán los datos faltantes. Valores válidos: missing, (predeterminado), notBreaching, breaching, ignore. | 
| --scheduled-query-configuration | Sí | Configuración de la consulta, incluida la cadena de consulta, los identificadores de los grupos de registro, el ARN del rol de consulta programada, la expresión de agregación y la configuración de la programación. | 
| --action-log-line-count | No | Número de líneas de registro que se incluirán en las notificaciones por correo electrónico de Amazon SNS, de 0 a 50. El valor predeterminado es 0. | 
| --action-log-line-role-arn | No | ARN del rol de IAM que confía en cloudwatch.amazonaws.com. Es obligatorio si action-log-line-count es superior a 0. | 

### Creación de una alarma de registro mediante AWS CloudFormation
<a name="log-alarm-create-cfn"></a>

Puede utilizar el tipo de recurso `AWS::CloudWatch::LogAlarm` para crear una alarma de registro en una plantilla de AWS CloudFormation.

La siguiente plantilla de ejemplo crea una alarma de registro que supervisa los recuentos de errores.

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  HighErrorCountAlarm:
    Type: AWS::CloudWatch::LogAlarm
    Properties:
      AlarmName: HighErrorCount
      AlarmDescription: Alarm when error count exceeds 100
      ComparisonOperator: GreaterThanThreshold
      Threshold: 100
      QueryResultsToEvaluate: 5
      QueryResultsToAlarm: 3
      TreatMissingData: missing
      ActionLogLineCount: 5
      ActionLogLineRoleArn: !GetAtt LogLineRole.Arn
      ScheduledQueryConfiguration:
        QueryString: "fields @timestamp, @message | filter @message like /ERROR/"
        LogGroupIdentifiers:
          - /aws/lambda/my-function
        ScheduledQueryRoleARN: !GetAtt ScheduledQueryRole.Arn
        AggregationExpression: "count(*)"
        ScheduleConfiguration:
          ScheduleExpression: "rate(10 minutes)"
          StartTimeOffset: 600
      AlarmActions:
        - !Ref AlarmSNSTopic
```

### Crear una alarma de CloudWatch basada en un filtro por métricas del grupo de registro
<a name="Create_alarm_log_group_metric_filter"></a>

 El procedimiento de esta sección describe cómo crear una alarma basada en un filtro por métricas del grupo de registro. Con los filtros por métricas, puede buscar los términos y patrones de los datos del registro, ya que los datos se envían a CloudWatch. Para obtener más información, consulte [Crear métricas a partir de eventos de registro mediante filtros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html) en la *Guía del usuario de Registros de Amazon CloudWatch*. Antes de crear una alarma basada en un filtro por métricas del grupo de registro, debe llevar a cabo las siguientes acciones: 
+  Crear un grupo de registros. Para obtener más información, consulte [Trabajar con grupos de registros y flujos de registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#Create-Log-Group) en la *Guía del usuario de Registros de Amazon CloudWatch*. 
+  Crear un filtro de métricas. Para obtener más información, consulte [Crear un filtro de métricas para un grupo de registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CreateMetricFilterProcedure.html) en la *Guía del usuario de Registros de Amazon CloudWatch*. 

**Para crear una alarma basada en un filtro por métricas del grupo de registro**

1. Abra la consola de CloudWatch en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1.  En el panel de navegación, elija **Logs** (Registros) y, luego, **Log groups** (Grupos de registro). 

1.  Elija el grupo de registro que incluye el filtro de métricas. 

1.  Elija **Metric filters** (Filtros de métricas). 

1.  En la pestaña de filtros de métricas, seleccione la casilla del filtro de métricas en el que quiera basar la alarma. 

1.  Elija **Crear alarma**. 

1.  (Opcional) En **Metric** (Métrica), modifique **Metric name** (Nombre de métrica), **Statistic** (Estadística) y **Period** (Periodo). 

1.  En **Conditions (Condiciones)**, especifique lo siguiente: 

   1.  En **Threshold type** (Tipo de límite), elija **Static** (Estático) o **Anomaly detection** (Detección de anomalías). 

   1.  En **Whenever {{your-metric-name}} is . . .** (Cuando nombre-de-la-métrica sea...), elija **Greater** (Mayor), **Greater/Equal** (Mayor/igual), **Lower/Equal** (Menor/igual) o **Lower** (Menor). 

   1.  En **Than . . .** (Que...), especifique un número para el valor del umbral. 

1.  Elija **Configuración adicional**. 

   1.  En **Data points to alarm** (Puntos de datos para avisar), especifique cuántos puntos de datos activan la alarma para que pase al estado `ALARM`. Si especifica valores coincidentes, la alarma pasa al estado `ALARM` si se infringen muchos periodos consecutivos. Para crear una alarma M de N, especifique un número menor para el primer valor que el especificado para el segundo valor. Para obtener más información, consulte [Evaluación de alarmas](alarm-evaluation.md). 

   1.  En **Missing data treatment** (Tratamiento de datos faltantes), especifique una opción para especificar cómo tratar los datos que faltan cuando se evalúe la alarma. 

1.  Elija **Siguiente**. 

1.  En **Notification** (Notificación), especifique el tema de Amazon SNS que se va a notificar cuando el estado de la alarma sea `ALARM`, `OK` o `INSUFFICIENT_DATA`. 

   1.  (Opcional) Para que la alarma envíe varias notificaciones para el mismo estado de alarma o para estados de alarma diferentes, elija **Agregar notificación**. 

   1.  (Opcional) Para que no envíe notificaciones, elija **Remove** (Eliminar). 

1. Para que la alarma realice acciones de escalado automático, EC2, Lambda o de Systems Manager, elija el botón correspondiente y seleccione el estado de la alarma y la acción que se debe realizar. Si elige una función de Lambda como acción de la alarma, debe especificar el nombre de la función o el ARN y, si lo desea, puede elegir una versión específica de la función.

   Las alarmas solo pueden realizar acciones de Systems Manager cuando entran en el estado ALARMA. Para obtener más información sobre las acciones de Systems Manager, consulte [Configuración de CloudWatch para crear OpsItems a partir de alarmas](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-create-OpsItems-from-CloudWatch-Alarms.html) y [Creación de incidentes](https://docs.aws.amazon.com/incident-manager/latest/userguide/incident-creation.html).
**nota**  
Para crear una alarma que realice una acción de SSM Incident Manager, debe contar con determinados permisos. Para obtener más información, consulte [Ejemplos de políticas basadas en identidades del Administrador de incidentes de AWS Systems Manager](https://docs.aws.amazon.com/incident-manager/latest/userguide/security_iam_id-based-policy-examples.html).

1.  Elija **Siguiente**. 

1.  En **Name and description (Nombre y descripción)**, ingrese un nombre y una descripción para la alarma. El nombre debe contener solo caracteres UTF-8 y no puede contener caracteres de control ASCII. La descripción puede incluir el formato Markdown, que solo se muestra en la pestaña **Detalles** de la alarma de la consola de CloudWatch. Markdown puede resultar útil para añadir enlaces a runbooks u otros recursos internos. 

1.  En **Ver la vista previa y crear**, compruebe que la configuración sea correcta y elija **Crear alarma**. 