OpsItems を (プログラムで) 作成するように既存の CloudWatch アラームを設定する
AWS Command Line Interface (AWS CLI)、AWS CloudFormation テンプレート、または Java コードスニペットを使用して、OpsItems をプログラムで作成するように Amazon CloudWatch アラームを設定できます。
トピック
始める前に
既存のアラームをプログラムで編集するか、OpsItems を作成する新しいアラームを作成する場合は、Amazon リソースネーム (ARN) を指定する必要があります。この ARN により、Systems Manager OpsCenter はアラームから作成された OpsItems のターゲットとして識別されます。アラームから作成された OpsItems に重大度やカテゴリなどの特定の情報が含まれるように、ARN をカスタマイズできます。各 ARN には、次の表に示す情報が含まれています。
Parameter | 詳細 |
---|---|
|
アラームが存在する AWS リージョン。例: |
|
アラームの作成に使用したのと同じ AWS アカウント ID。例: |
|
アラームから作成された OpsItems のユーザー定義の重大度。有効な値: |
|
アラームから作成された OpsItems のカテゴリ。有効な値: |
次の構文を使用して ARN を作成します。この ARN には、オプションの Category
パラメータは含まれません。
arn:aws:ssm:
Region
:account_ID
:opsitem:severity
次に例を示します。
arn:aws:ssm:us-west-2:123456789012:opsitem:3
オプションの Category
パラメータを使用する ARN を作成するには、次の構文を使用します。
arn:aws:ssm:
Region
:account_ID
:opsitem:severity
#CATEGORY=category_name
次に例を示します。
arn:aws:ssm:us-west-2:123456789012:opsitem:3#CATEGORY=Security
OpsItems (AWS CLI) を作成するように CloudWatch アラームを設定する
このコマンドでは、alarm-actions
パラメータの ARN を指定する必要があります。ARN を作成する方法については、「始める前に」を参照してください。
OpsItems (AWS CLI) を作成するように CloudWatch アラームを設定するには
まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。
詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」を参照してください。
-
次のコマンドを実行して、設定するアラームに関する情報を収集します。
aws cloudwatch describe-alarms --alarm-names "
alarm name
" -
次のコマンドを実行してアラームを更新します。各
リソースプレースホルダーの例
をユーザー自身の情報に置き換えます。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
以下に例を示します。
OpsItems (CloudFormation) を作成または更新するように CloudWatch アラームを設定する
このセクションでは、OpsItems を自動的に作成または更新するように CloudWatch アラームを設定する際に使用できる AWS CloudFormation テンプレートを紹介します。各テンプレートでは、AlarmActions
パラメータの ARN を指定する必要があります。ARN を作成する方法については、「始める前に」を参照してください。
メトリクスアラーム – CloudWatch メトリクスアラームを作成または更新するには、以下の CloudFormation テンプレートを使用します。このテンプレートで指定されたアラームは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのステータスチェックをモニタリングします。アラームが ALARM
ステートになると、OpsCenter で OpsItem が作成されます。
{ "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
複合アラーム – 複合アラームを作成または更新するには、以下の CloudFormation テンプレートを使用します。複合アラームは、複数のメトリクスアラームで構成されます。アラームが ALARM
ステートになると、OpsCenter で OpsItem が作成されます。
"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
OpsItems (Java) を作成または更新するように CloudWatch アラームを設定する
このセクションでは、OpsItems を自動的に作成または更新する CloudWatch アラームの設定に使用できる Java コードスニペットについて説明します。各スニペットでは、validSsmActionStr
パラメータの ARN を指定する必要があります。ARN を作成する方法については、「始める前に」を参照してください。
特定のアラーム – 次の Java コードスニペットを使用して、CloudWatch アラームを作成または更新します。このテンプレートで指定されたアラームは、Amazon EC2 インスタンスのステータスチェックをモニタリングします。アラームが ALARM
ステートになると、OpsCenter で OpsItem が作成されます。
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
すべてのアラームを更新する – 次の Java コードスニペットを使用して、アラームが ALARM
状態になったときに OpsItems を作成するように、AWS アカウント 内のすべての CloudWatch アラームを更新します。
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