AWS Systems ManagerChange Manager 不再開放給新客戶。現有客戶可以繼續正常使用該服務。如需詳細資訊,請參閱AWS Systems ManagerChange Manager可用性變更。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定現有的 CloudWatch 警示以建立 OpsItems (以程式設計方式)
您可以使用 AWS Command Line Interface (AWS CLI)、 AWS CloudFormation 範本或Java程式碼片段,設定 Amazon CloudWatch 警示以OpsItems程式設計方式建立 。
主題
開始之前
如果以程式設計方式編輯現有的警示,或建立警示 (該警示會建立 OpsItems),則您必須指定 Amazon Resource Name (ARN)。此 ARN 可識別 Systems Manager OpsCenter 作為從警示建立之 OpsItems 的目標。您可以自訂 ARN,以便從警示建立之 OpsItems 包含特定資訊,例如嚴重性或類別。每個 ARN 包含下表中所述的資訊。
| 參數 | 詳細資訊 |
|---|---|
|
|
警示存在 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
設定 CloudWatch 警示以建立 OpsItems (AWS CLI)
此命令要求您為 alarm-actions 參數指定 ARN。如需如何建立 ARN 的相關資訊,請參閱 開始之前。
設定 CloudWatch 警示以建立 OpsItems (AWS CLI)
如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請安裝並設定 。
如需相關資訊,請參閱安裝或更新最新版本的 AWS CLI。
-
執行下列命令以收集您要設定之警示的相關資訊。
aws cloudwatch describe-alarms --alarm-names "alarm name" -
執行下列命令以更新警示。將每個
範例資源預留位置取代為您自己的資訊。aws cloudwatch put-metric-alarm --alarm-namename\ --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範例如下。
設定 CloudWatch 警示以建立或更新 OpsItems (CloudFormation)
本節包含可用來設定 CloudWatch 警示以自動建立或更新 的 AWS CloudFormation 範本OpsItems。每個範本都要求您為 AlarmActions 參數指定 ARN。如需如何建立 ARN 的相關資訊,請參閱 開始之前。
指標警示 – 使用下列 CloudFormation 範本來建立或更新 CloudWatch 指標警示。此範本中指定的警示會監控 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
設定 CloudWatch 警示以建立或更新 OpsItems (Java)
本節包含 Java 程式碼片段,您可以用這些程式碼片段來設定 CloudWatch 警示以自動建立或更新 OpsItems。每個程式碼片段都要求您為 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 程式碼片段來更新 AWS 帳戶 中的所有 CloudWatch 警示,以在警示進入 ALARM 狀態時建立 OpsItems。
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