Configurazione di un CloudWatch allarme esistente da creare OpsItems (a livello di codice) - AWS Systems Manager

AWS Systems ManagerChange Managernon è più aperto a nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta AWS Systems ManagerChange Managerla pagina Modifica della disponibilità.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione di un CloudWatch allarme esistente da creare OpsItems (a livello di codice)

Puoi configurare gli CloudWatch allarmi Amazon per crearli a OpsItems livello di codice utilizzando AWS Command Line Interface (AWS CLI), AWS CloudFormation modelli o Java frammenti di codice.

Prima di iniziare

Se modifichi a livello di programmazione un allarme esistente o crei un allarme che crea OpsItems, devi specificare un nome della risorsa Amazon (ARN). Questo ARN identificherà Systems Manager OpsCenter come obiettivo per la creazione di OpsItems dall'allarme. È possibile personalizzare l'ARN in modo che OpsItems creati dall'allarme includano informazioni specifiche quali la gravità o la categoria. Ogni ARN include le informazioni descritte nella tabella seguente.

Parametro Informazioni

Region(richiesto)

La posizione Regione AWS in cui si trova l'allarme. Ad esempio: us-west-2. Per informazioni su Regioni AWS dove è possibile utilizzare OpsCenter, consulta Endpoint e quote AWS Systems Manager.

account_ID(richiesto)

Lo stesso Account AWS ID usato per creare l'allarme. Ad esempio: 123456789012. L'ID account deve essere seguito da due punti (:) e dal parametro opsitem come mostrato negli esempi seguenti.

severity(richiesto)

Un livello di gravità definito dall'utente per la creazione di OpsItems dall'allarme. Valori validi: 1, 2, 3, 4

Category (facoltativo)

categoria per la creazione di OpsItems dall'allarme. Valori validi: Availability, Cost, Performance, Recovery e Security.

Creare l'ARN utilizzando la seguente sintassi. Questo ARN non include l'opzione di parametro Category.

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

Di seguito è riportato un esempio.

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

Per creare un ARN che utilizza l'opzione Category utilizzare la seguente sintassi.

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

Di seguito è riportato un esempio.

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

Configurazione degli CloudWatch allarmi da creare OpsItems ()AWS CLI

Questo comando richiede di specificare un ARN per il parametro alarm-actions. Per informazioni su come creare l'ARN, consulta Prima di iniziare.

Per configurare un CloudWatch allarme da creare OpsItems ()AWS CLI
  1. Installa e configura AWS Command Line Interface (AWS CLI), se non l'hai già fatto.

    Per informazioni, consulta la pagina Installazione o aggiornamento della versione più recente di AWS CLI.

  2. Eseguire il seguente comando per raccogliere informazioni sull'allarme da configurare.

    aws cloudwatch describe-alarms --alarm-names "alarm name"
  3. Esegui il seguente comando per aggiornare un allarme. Sostituisci ogni example resource placeholder con le tue informazioni.

    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

    Ecco un esempio:

    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

Configurazione degli CloudWatch allarmi per creare o aggiornare OpsItems () CloudFormation

Questa sezione include AWS CloudFormation modelli che è possibile utilizzare per configurare gli CloudWatch allarmi da creare o aggiornare automaticamente. OpsItems Ogni modello richiede di specificare un ARN per il parametro AlarmActions. Per informazioni su come creare l'ARN, consulta Prima di iniziare.

Allarme metrico: utilizza il seguente CloudFormation modello per creare o aggiornare un allarme CloudWatch metrico. L'allarme specificato in questo modello monitora i controlli dello stato delle istanze Amazon Elastic Compute Cloud EC2 (Amazon). Se l'allarme entra nel ALARM, crea un OpsItem in 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"}}] } } } }

Allarme composito: utilizza il seguente CloudFormation modello per creare o aggiornare un allarme composito. Un allarme composito è costituito da più allarmi dei parametri. Se l'allarme entra nel ALARM, crea un OpsItem in 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" } } }

Configurazione degli CloudWatch allarmi per creare o aggiornare OpsItems () Java

Questa sezione include frammenti di Java codice che è possibile utilizzare per configurare gli CloudWatch allarmi da creare o aggiornare automaticamente. OpsItems Ogni frammento richiede di specificare un ARN per il parametro validSsmActionStr. Per informazioni su come creare l'ARN, consulta Prima di iniziare.

Un allarme specifico: utilizza il seguente frammento di Java codice per creare o aggiornare un avviso. CloudWatch L'allarme specificato in questo modello monitora i controlli dello stato delle EC2 istanze Amazon. Se l'allarme entra nel ALARM, crea un OpsItem in 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); }

Aggiorna tutti gli allarmi: utilizza il seguente frammento di Java codice per aggiornare tutti gli CloudWatch allarmi presenti nel tuo sistema e Account AWS creare OpsItems quando un allarme entra in uno stato. 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: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; } } }