Configuración de una alarma de CloudWatch existente para crear OpsItems (mediante programación)
Puede configurar alarmas de Amazon CloudWatch para crear OpsItems mediante la AWS Command Line Interface (AWS CLI), las plantillas de AWS CloudFormation o los fragmentos de código Java.
Temas
Antes de empezar
Si edita mediante programación una alarma existente o crea una alarma que crea OpsItems, debe especificar un nombre de recurso de Amazon (ARN). Este ARN identifica Systems Manager OpsCenter como el objetivo de OpsItems creado a partir de la alarma. Puede personalizar el ARN para que los OpsItems creados a partir de la alarma incluyan información específica, como la severidad o la categoría. Cada ARN incluye la información que se describe en la tabla siguiente.
Parámetro | Detalles |
---|---|
|
La Región de AWS donde existe la alarma. Por ejemplo: |
|
El mismo ID de Cuenta de AWS utilizado para crear la alarma. Por ejemplo: |
|
Un nivel de severidad definido por el usuario para OpsItems creados a partir de la alarma. Valores válidos: |
|
Una categoría para los OpsItems creados a partir de la alarma. Valores válidos: |
Cree el ARN utilizando la siguiente sintaxis. Este ARN no incluye el parámetro opcional Category
.
arn:aws:ssm:
Region
:account_ID
:opsitem:severity
A continuación se muestra un ejemplo.
arn:aws:ssm:us-west-2:123456789012:opsitem:3
Para crear un ARN que utilice el parámetro opcional Category
, utilice la siguiente sintaxis.
arn:aws:ssm:
Region
:account_ID
:opsitem:severity
#CATEGORY=category_name
A continuación se muestra un ejemplo.
arn:aws:ssm:us-west-2:123456789012:opsitem:3#CATEGORY=Security
Configuración de alarmas de CloudWatch para crear OpsItems (AWS CLI)
Este comando requiere que especifique un ARN para el parámetro alarm-actions
. Para obtener más información acerca de cómo crear el ARN, consulte Antes de empezar.
Para configurar CloudWatch a fin de crear OpsItems (AWS CLI)
Si aún no lo ha hecho, instale y configure la AWS Command Line Interface (AWS CLI).
Para obtener más información, consulte Instalación o actualización de la última versión de la AWS CLI.
-
Ejecute el siguiente comando a fin de recopilar información sobre la alarma que desea configurar.
aws cloudwatch describe-alarms --alarm-names "
alarm name
" -
Ejecute el siguiente comando para actualizar una alarma. Reemplace cada
example resource placeholder
con su propia información.aws cloudwatch put-metric-alarm --alarm-name
name
\ --alarm-description "description
" \ --metric-namename
--namespacenamespace
\ --statisticstatistic
--periodvalue
--thresholdvalue
\ --comparison-operatorvalue
\ --dimensions "dimensions
" --evaluation-periodsvalue
\ --alarm-actions arn:aws:ssm:Region
:account_ID
:opsitem:severity
#CATEGORY=category_name
\ --unitunit
A continuación se muestra un ejemplo.
Configuración de alarmas de CloudWatch para crear o actualizar OpsItems (CloudFormation)
En esta sección, se incluyen plantillas de AWS CloudFormation que puede utilizar para configurar las alarmas de CloudWatch para crear o actualizar OpsItems de manera automática. Cada plantilla requiere que especifique un ARN para el parámetro AlarmActions
. Para obtener más información acerca de cómo crear el ARN, consulte Antes de empezar.
Alarma métrica: utilice la siguiente plantilla de CloudFormation para crear o actualizar una alarma métrica de CloudWatch. La alarma especificada en esta plantilla monitorea las comprobaciones de estado de las instancias de Amazon Elastic Compute Cloud (Amazon EC2). Si la alarma ingresa en el estado ALARM
, crea un OpsItem en OpsCenter.
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters" : { "RecoveryInstance" : { "Description" : "The EC2 instance ID to associate this alarm with.", "Type" : "AWS::EC2::Instance::Id" } }, "Resources": { "RecoveryTestAlarm": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": "Run a recovery action when instance status check fails for 15 consecutive minutes.", "Namespace": "AWS/EC2" , "MetricName": "StatusCheckFailed_System", "Statistic": "Minimum", "Period": "60", "EvaluationPeriods": "15", "ComparisonOperator": "GreaterThanThreshold", "Threshold": "0", "AlarmActions": [ {"Fn::Join" : ["", ["arn:
arn:aws:ssm:
", { "Ref" : "AWS::Partition" }, ":ssm:", { "Ref" : "AWS::Region" }, { "Ref" : "AWS:: AccountId" }, ":opsitem:3" ]]} ], "Dimensions": [{"Name": "InstanceId","Value": {"Ref": "RecoveryInstance"}}] } } } }Region
:account_ID
:opsitem:severity
#CATEGORY=category_name
Alarma compuesta: utilice la siguiente plantilla de CloudFormation para crear o actualizar una alarma compuesta. Una alarma compuesta consta de múltiples alarmas métricas. Si la alarma ingresa en el estado ALARM
, crea un OpsItem en OpsCenter.
"Resources":{ "HighResourceUsage":{ "Type":"AWS::CloudWatch::CompositeAlarm", "Properties":{ "AlarmName":"HighResourceUsage", "AlarmRule":"(ALARM(HighCPUUsage) OR ALARM(HighMemoryUsage)) AND NOT ALARM(DeploymentInProgress)", "AlarmActions":"
arn:aws:ssm:
", "AlarmDescription":"Indicates that the system resource usage is high while no known deployment is in progress" }, "DependsOn":[ "DeploymentInProgress", "HighCPUUsage", "HighMemoryUsage" ] }, "DeploymentInProgress":{ "Type":"AWS::CloudWatch::CompositeAlarm", "Properties":{ "AlarmName":"DeploymentInProgress", "AlarmRule":"FALSE", "AlarmDescription":"Manually updated to TRUE/FALSE to disable other alarms" } }, "HighCPUUsage":{ "Type":"AWS::CloudWatch::Alarm", "Properties":{ "AlarmDescription":"CPUusageishigh", "AlarmName":"HighCPUUsage", "ComparisonOperator":"GreaterThanThreshold", "EvaluationPeriods":1, "MetricName":"CPUUsage", "Namespace":"CustomNamespace", "Period":60, "Statistic":"Average", "Threshold":70, "TreatMissingData":"notBreaching" } }, "HighMemoryUsage":{ "Type":"AWS::CloudWatch::Alarm", "Properties":{ "AlarmDescription":"Memoryusageishigh", "AlarmName":"HighMemoryUsage", "ComparisonOperator":"GreaterThanThreshold", "EvaluationPeriods":1, "MetricName":"MemoryUsage", "Namespace":"CustomNamespace", "Period":60, "Statistic":"Average", "Threshold":65, "TreatMissingData":"breaching" } } }Region
:account_ID
:opsitem:severity
#CATEGORY=category_name
Configuración de alarmas de CloudWatch para crear o actualizar OpsItems (Java)
Esta sección incluye fragmentos de código Java que puede usar para configurar alarmas de CloudWatch para crear o actualizar OpsItems de manera automática. Cada fragmento requiere que especifique un ARN para el parámetro validSsmActionStr
. Para obtener más información acerca de cómo crear el ARN, consulte Antes de empezar.
Una alarma específica: utilice el siguiente fragmento de código Java para crear o actualizar una alarma de CloudWatch. La alarma especificada en esta plantilla monitorea las verificaciones del estado de las instancias de Amazon EC2. Si la alarma ingresa en el estado ALARM
, crea un OpsItem en OpsCenter.
import com.amazonaws.services.cloudwatch.AmazonCloudWatch; import com.amazonaws.services.cloudwatch.AmazonCloudWatchClientBuilder; import com.amazonaws.services.cloudwatch.model.ComparisonOperator; import com.amazonaws.services.cloudwatch.model.Dimension; import com.amazonaws.services.cloudwatch.model.PutMetricAlarmRequest; import com.amazonaws.services.cloudwatch.model.PutMetricAlarmResult; import com.amazonaws.services.cloudwatch.model.StandardUnit; import com.amazonaws.services.cloudwatch.model.Statistic; private void putMetricAlarmWithSsmAction() { final AmazonCloudWatch cw = AmazonCloudWatchClientBuilder.defaultClient(); Dimension dimension = new Dimension() .withName("InstanceId") .withValue(instanceId); String validSsmActionStr = "
arn:aws:ssm:
"; PutMetricAlarmRequest request = new PutMetricAlarmRequest() .withAlarmName(alarmName) .withComparisonOperator( ComparisonOperator.GreaterThanThreshold) .withEvaluationPeriods(1) .withMetricName("CPUUtilization") .withNamespace("AWS/EC2") .withPeriod(60) .withStatistic(Statistic.Average) .withThreshold(70.0) .withActionsEnabled(false) .withAlarmDescription( "Alarm when server CPU utilization exceeds 70%") .withUnit(StandardUnit.Seconds) .withDimensions(dimension) .withAlarmActions(validSsmActionStr); PutMetricAlarmResult response = cw.putMetricAlarm(request); }Region
:account_ID
:opsitem:severity
#CATEGORY=category_name
Actualizar todas las alarmas: utilice el siguiente fragmento de código Java para actualizar todas las alarmas de CloudWatch en su Cuenta de AWS para crear OpsItems cuando una alarma ingresa en el estado ALARM
.
import com.amazonaws.services.cloudwatch.AmazonCloudWatch; import com.amazonaws.services.cloudwatch.AmazonCloudWatchClientBuilder; import com.amazonaws.services.cloudwatch.model.DescribeAlarmsRequest; import com.amazonaws.services.cloudwatch.model.DescribeAlarmsResult; import com.amazonaws.services.cloudwatch.model.MetricAlarm; private void listMetricAlarmsAndAddSsmAction() { final AmazonCloudWatch cw = AmazonCloudWatchClientBuilder.defaultClient(); boolean done = false; DescribeAlarmsRequest request = new DescribeAlarmsRequest(); String validSsmActionStr = "
arn:aws:ssm:
"; while(!done) { DescribeAlarmsResult response = cw.describeAlarms(request); for(MetricAlarm alarm : response.getMetricAlarms()) { // assuming there are no alarm actions added for the metric alarm alarm.setAlarmActions(ImmutableList.of(validSsmActionStr)); } request.setNextToken(response.getNextToken()); if(response.getNextToken() == null) { done = true; } } }Region
:account_ID
:opsitem:severity
#CATEGORY=category_name