Alarma en los registros
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
Creación de una alarma de registro
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.
Requisitos previos
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
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)
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
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.
Para crear una alarma de registro
-
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. -
En el panel de navegación, elija Alarmas.
-
Elija Crear alarma.
-
En Origen de datos, seleccione Registros.
-
En Consulta de registros:
-
Seleccione Crear consulta en Análisis de registros. Se abre la página Análisis de registros, donde puede crear la consulta.
-
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.
-
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(*)oavg(latency) by endpoint.
-
-
En Condiciones de la alarma:
-
En Cuando el resultado agregado sea…, seleccione un operador de comparación.
-
En que…, introduzca el valor del umbral.
-
(Opcional) En Configuración adicional:
-
Modifique Puntos de datos para activar la alarma para especificar cuántos resultados deben superar el umbral para activar el estado
ALARMde las últimas N consultas. -
Modifique Tratamiento de los datos faltantes para especificar cómo se deben tratar los datos faltantes.
-
-
-
En Programación:
-
En Frecuencia de evaluación, seleccione la frecuencia con la que se ejecutará la consulta, por ejemplo, cada 5 minutos.
-
En Desplazamiento de la hora de inicio, especifique el período retrospectivo de cada ejecución de la consulta.
-
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.
-
-
En Permiso de IAM:
-
Especifique el rol necesario para ejecutar la consulta programada. Puede crear un rol nuevo o utilizar uno existente.
-
-
Elija Siguiente.
-
En Configurar acciones, configure las acciones y notificaciones según sea necesario.
-
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:
-
Agregue Número de resultados de la consulta para especificar cuántas líneas de registro se incluirán.
-
Cree o seleccione un rol existente que se utilizará para obtener los resultados de consulta necesarios.
-
-
-
Elija Siguiente.
-
Introduzca un Nombre y, de manera opcional, una Descripción, que admite Markdown.
-
(Opcional) Añada etiquetas.
-
Elija Siguiente.
-
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
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á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
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
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 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 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 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
-
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. -
En el panel de navegación, elija Logs (Registros) y, luego, Log groups (Grupos de registro).
-
Elija el grupo de registro que incluye el filtro de métricas.
-
Elija Metric filters (Filtros de métricas).
-
En la pestaña de filtros de métricas, seleccione la casilla del filtro de métricas en el que quiera basar la alarma.
-
Elija Crear alarma.
-
(Opcional) En Metric (Métrica), modifique Metric name (Nombre de métrica), Statistic (Estadística) y Period (Periodo).
-
En Conditions (Condiciones), especifique lo siguiente:
-
En Threshold type (Tipo de límite), elija Static (Estático) o Anomaly detection (Detección de anomalías).
-
En Whenever
your-metric-nameis . . . (Cuando nombre-de-la-métrica sea...), elija Greater (Mayor), Greater/Equal (Mayor/igual), Lower/Equal (Menor/igual) o Lower (Menor). -
En Than . . . (Que...), especifique un número para el valor del umbral.
-
-
Elija Configuración adicional.
-
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 estadoALARMsi 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. -
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.
-
-
Elija Siguiente.
-
En Notification (Notificación), especifique el tema de Amazon SNS que se va a notificar cuando el estado de la alarma sea
ALARM,OKoINSUFFICIENT_DATA.-
(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.
-
(Opcional) Para que no envíe notificaciones, elija Remove (Eliminar).
-
-
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 y Creación de incidentes.
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.
-
Elija Siguiente.
-
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.
-
En Ver la vista previa y crear, compruebe que la configuración sea correcta y elija Crear alarma.