Configuração de um alarme existente do CloudWatch para criar OpsItems (programaticamente)
É possível configurar alarmes do Amazon CloudWatch para criar OpsItems programaticamente usando a AWS Command Line Interface (AWS CLI), modelos do AWS CloudFormation ou trechos de código Java.
Tópicos
Antes de começar
Caso edite um alarme existente programaticamente ou criar um alarme que crie OpsItems, você deverá especificar um nome do recurso da Amazon (ARN). Este ARN identifica o OpsCenter do Systems Manager como alvo para OpsItems criados a partir do alerta. Você pode personalizar o ARN para queOpsItemscriado a partir do alarme incluem informações específicas, como gravidade ou categoria. Cada ARN inclui as informações descritas na tabela a seguir.
Parâmetro | Detalhes |
---|---|
|
ORegião da AWSonde o alarme existe. Por exemplo: |
|
O mesmoConta da AWSO ID usado para criar o alarme. Por exemplo: |
|
Um nível de gravidade definido pelo usuário para OpsItems, criado no alerta. Valores válidos: |
|
Uma categoria para o OpsItems criada a partir do alerta. Valores válidos: |
Crie o ARN usando a sintaxe a seguir. Este ARN não inclui o opcionalCategory
parâmetro .
arn:aws:ssm:
Region
:account_ID
:opsitem:severity
Veja um exemplo a seguir.
arn:aws:ssm:us-west-2:123456789012:opsitem:3
Para criar um ARN que use oCategory
, use a sintaxe a seguir.
arn:aws:ssm:
Region
:account_ID
:opsitem:severity
#CATEGORY=category_name
Veja um exemplo a seguir.
arn:aws:ssm:us-west-2:123456789012:opsitem:3#CATEGORY=Security
Como configurar alarmes do CloudWatch para criar OpsItems (AWS CLI)
Este comando requer que você especifique um ARN para o parâmetro alarm-actions
. Para obter informações sobre como criar o ARN, consulte Antes de começar.
Como configurar um alarme do CloudWatch para criar OpsItems (AWS CLI)
Instale e configure a AWS Command Line Interface (AWS CLI), caso ainda não o tenha feito.
Para obter informações, consulte Instalar ou atualizar a versão mais recente da AWS CLI.
-
Execute o seguinte comando a fim de coletar informações sobre o alarme que você deseja configurar.
aws cloudwatch describe-alarms --alarm-names "
alarm name
" -
Execute o comando a seguir para atualizar um alarme. Substitua cada
espaço reservado para recurso de exemplo
por suas próprias informações.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
Aqui está um exemplo.
Como configurar alarmes do CloudWatch para criar ou atualizar OpsItems (CloudFormation)
Esta seção inclui modelos do AWS CloudFormation que você pode usar para configurar alarmes do CloudWatch para criar ou atualizar OpsItems automaticamente. Cada modelo requer que você especifique um ARN para o parâmetro AlarmActions
. Para obter informações sobre como criar o ARN, consulte Antes de começar.
Alarme de métrica: use o modelo do CloudFormation a seguir para criar ou atualizar um alarme de métrica do CloudWatch. O alarme especificado neste modelo monitora as verificações de status da instância do Amazon Elastic Compute Cloud (Amazon EC2). Se o alarme entrar no estado ALARM
, ele criará um OpsItem no 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
Alarme composto: use o modelo do CloudFormation a seguir para criar ou atualizar um alarme composto. Um alarme compite consiste em vários alarmes métricos. Se o alarme entrar no estado ALARM
, ele criará um OpsItem no 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
Como configurar alarmes do CloudWatch para criar ou atualizar OpsItems (Java)
Esta seção inclui trechos de código Java que você pode usar para configurar alarmes do CloudWatch para criar ou atualizar OpsItems automaticamente. Cada trecho requer que você especifique um ARN para o parâmetro validSsmActionStr
. Para obter informações sobre como criar o ARN, consulte Antes de começar.
Um alarme específico: use o trecho de código Java a seguir para criar ou atualizar um alarme do CloudWatch. O alarme especificado neste modelo monitora as verificações de status de instância do Amazon EC2. Se o alarme entrar no estado ALARM
, ele criará um OpsItem no 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
Atualizar todos os alarmes: use o trecho de código Java a seguir para atualizar todos os alarmes do CloudWatch em sua Conta da AWS para criar OpsItems quando um alarme entrar no 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