Configuration d'une CloudWatch alarme existante à créer OpsItems (par programmation) - AWS Systems Manager

AWS Systems ManagerChange Managern'est plus ouvert aux nouveaux clients. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez AWS Systems ManagerChange Managerla section Modification de la disponibilité.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration d'une CloudWatch alarme existante à créer OpsItems (par programmation)

Vous pouvez configurer les CloudWatch alarmes Amazon pour qu'elles OpsItems soient créées par programmation à l'aide de AWS Command Line Interface (AWS CLI), de AWS CloudFormation modèles ou d'extraits de Java code.

Avant de commencer

Si vous modifiez une alarme existante par programmation ou que vous créez une nouvelle alarme créant des OpsItems, vous devez spécifier un Amazon Resource Name (ARN). Cet ARN identifie Systems Manager OpsCenter comme la cible des OpsItems créés à partir de l'alarme. Vous pouvez personnaliser l'ARN de sorte que des OpsItems créés à partir de l'alarme incluent des informations spécifiques telles que la sévérité ou la catégorie. Chaque ARN inclut les informations décrites dans le tableau suivant.

Paramètre Détails

Region (obligatoire)

L' Région AWS endroit où se trouve l'alarme. Par exemple : us-west-2. Pour obtenir des informations sur les Régions AWS dans lesquelles utiliser OpsCenter, consultez AWS Systems Manager Points de terminaison et quotas.

account_ID (obligatoire)

Le même Compte AWS identifiant que celui utilisé pour créer l'alarme. Par exemple : 123456789012. L'ID de compte doit être suivi du signe deux-points (:) et du paramètre opsitem, comme le montrent les exemples suivants.

severity (obligatoire)

Un niveau de sévérité défini par l'utilisateur pour les OpsItems créés à partir de l'alarme. Valeurs valides : 1, 2, 3, 4

Category (facultatif)

Une catégorie pour des OpsItems créés à partir de l'alarme. Valeurs valides : Availability, Cost, Performance, Recovery et Security.

Créez l'ARN en utilisant la syntaxe suivante. Cet ARN n'inclut pas le paramètre Category facultatif.

arn:aws:ssm:Region:account_ID:opsitem:severity

Voici un exemple.

arn:aws:ssm:us-west-2:123456789012:opsitem:3

Pour créer un ARN utilisant le paramètre Category facultatif, respectez la syntaxe suivante.

arn:aws:ssm:Region:account_ID:opsitem:severity#CATEGORY=category_name

Voici un exemple.

arn:aws:ssm:us-west-2:123456789012:opsitem:3#CATEGORY=Security

Configuration des CloudWatch alarmes pour créer OpsItems (AWS CLI)

Cette commande exige que vous spécifiiez un ARN pour le paramètre alarm-actions. Pour de plus amples informations sur la création de l'ARN, consultez Avant de commencer.

Pour configurer une CloudWatch alarme à créer OpsItems (AWS CLI)
  1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait.

    Pour de plus amples informations, consultez Installation ou mise à jour de la version la plus récente de l' AWS CLI.

  2. Exécutez la commande suivante pour collecter des informations sur l'alarme à configurer.

    aws cloudwatch describe-alarms --alarm-names "alarm name"
  3. Exécutez la commande suivante pour mettre à jour une alarme. Remplacez chaque example resource placeholder par vos propres informations.

    aws cloudwatch put-metric-alarm --alarm-name name \ --alarm-description "description" \ --metric-name name --namespace namespace \ --statistic statistic --period value --threshold value \ --comparison-operator value \ --dimensions "dimensions" --evaluation-periods value \ --alarm-actions arn:aws:ssm:Region:account_ID:opsitem:severity#CATEGORY=category_name \ --unit unit

    Voici un exemple :

    Linux & macOS
    aws cloudwatch put-metric-alarm --alarm-name cpu-mon \ --alarm-description "Alarm when CPU exceeds 70 percent" \ --metric-name CPUUtilization --namespace AWS/EC2 \ --statistic Average --period 300 --threshold 70 \ --comparison-operator GreaterThanThreshold \ --dimensions "Name=InstanceId,Value=i-12345678" --evaluation-periods 2 \ --alarm-actions arn:aws:ssm:us-east-1:123456789012:opsitem:3#CATEGORY=Security \ --unit Percent
    Windows
    aws cloudwatch put-metric-alarm --alarm-name cpu-mon ^ --alarm-description "Alarm when CPU exceeds 70 percent" ^ --metric-name CPUUtilization --namespace AWS/EC2 ^ --statistic Average --period 300 --threshold 70 ^ --comparison-operator GreaterThanThreshold ^ --dimensions "Name=InstanceId,Value=i-12345678" --evaluation-periods 2 ^ --alarm-actions arn:aws:ssm:us-east-1:123456789012:opsitem:3#CATEGORY=Security ^ --unit Percent

Configuration des CloudWatch alarmes pour créer ou mettre à jour OpsItems (CloudFormation)

Cette section inclut des AWS CloudFormation modèles que vous pouvez utiliser pour configurer des CloudWatch alarmes afin de les créer ou de les mettre à jour automatiquementOpsItems. Chaque modèle de code exige que vous spécifiiez un Amazon Resource Name (ARN) pour le paramètre AlarmActions. Pour de plus amples informations sur la création de l'ARN, consultez Avant de commencer.

Alarme métrique — Utilisez le CloudFormation modèle suivant pour créer ou mettre à jour une alarme CloudWatch métrique. L'alarme spécifiée dans ce modèle surveille les vérifications de l'état des instances Amazon Elastic Compute Cloud (Amazon EC2). Si l'alarme entre dans l'état ALARM, un OpsItem est créé dans 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:Region:account_ID:opsitem:severity#CATEGORY=category_name", { "Ref" : "AWS::Partition" }, ":ssm:", { "Ref" : "AWS::Region" }, { "Ref" : "AWS:: AccountId" }, ":opsitem:3" ]]} ], "Dimensions": [{"Name": "InstanceId","Value": {"Ref": "RecoveryInstance"}}] } } } }

Alarme composite : utilisez le CloudFormation modèle suivant pour créer ou mettre à jour une alarme composite. Une alarme composite est constituée de plusieurs alarmes de métrique. Si l'alarme entre dans l'état ALARM, un OpsItem est créé dans OpsCenter.

"Resources":{ "HighResourceUsage":{ "Type":"AWS::CloudWatch::CompositeAlarm", "Properties":{ "AlarmName":"HighResourceUsage", "AlarmRule":"(ALARM(HighCPUUsage) OR ALARM(HighMemoryUsage)) AND NOT ALARM(DeploymentInProgress)", "AlarmActions":"arn:aws:ssm:Region:account_ID:opsitem:severity#CATEGORY=category_name", "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" } } }

Configuration des CloudWatch alarmes pour créer ou mettre à jour OpsItems (Java)

Cette section inclut des extraits de Java code que vous pouvez utiliser pour configurer des CloudWatch alarmes afin qu'elles soient créées ou mises à jour automatiquement. OpsItems Chaque extrait exige que vous spécifiiez un ARN pour le paramètre validSsmActionStr. Pour de plus amples informations sur la création de l'ARN, consultez Avant de commencer.

Une alarme spécifique — Utilisez l'extrait de Java code suivant pour créer ou mettre à jour une CloudWatch alarme. L'alarme spécifiée dans ce modèle surveille les vérifications de statut des EC2 instances Amazon. Si l'alarme entre dans l'état ALARM, un OpsItem est créé dans 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:Region:account_ID:opsitem:severity#CATEGORY=category_name"; 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); }

Mettre à jour toutes les alarmes : utilisez l'extrait de Java code suivant pour mettre à jour toutes les CloudWatch alarmes de votre système Compte AWS afin de les créer OpsItems lorsqu'une alarme entre dans l'ALARMétat.

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:Region:account_ID:opsitem:severity#CATEGORY=category_name"; 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; } } }