CloudWatch 配置为通过警报创建 OpsItems 作 - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CloudWatch 配置为通过警报创建 OpsItems 作

您可以将 Amazon CloudWatch 配 OpsItem 在Amazon Web Services Systems Manager当警报进入ALARM状态。这样做使您能够快速诊断和修复Amazon从单个控制台中获取资源。

例如,您可以将警报配置为在 Application Load Balancer 生成的 HTTP 错误中自动创建 OpSiteM。为了帮助您诊断问题,OpsItem 包含与上下文相关的信息,例如受监控Amazon资源、警报详细信息、警报历史记录和警报时间线图。对于被监控Amazon资源,OpsCenter 会聚合来自Amazon Config、Amazon CloudTrail日志和 EventBridge,因此,您不必在调查期间浏览多个控制台页面。您可以在 OpsCenter 中运行 Systems Manager 自动化运行手册,以便轻松进行修复。

此功能在所有Amazon Web Services 区域提供 Systems Manager。请注意有关此功能的以下重要详细信息:

  • CloudWatch 可以在 OpsItems enter 中创建用于指标和复合报警的操作系统。

  • 警报必须使用默认aws命名空间,例如AWS/EC2(仅限公制警报)。

  • 在您将警报配置为创建 OpsItems 时,CloudWatch 会在 AWS Identity of Access Management (IAM) 中自动创建新的服务相关角色。新角色名为AWSServiceRoleForCloudWatchAlarms_ActionSSM。有关 CloudWatch 服务相关角色的更多信息,请参阅。对 CloudWatch 使用服务相关角色中的Amazon CloudWatch 用户指南

  • OpsCenter 使用重复数据消除功能禁止单个警报创建多个 OpsItems。有关更多信息,请参阅 减少重复的 OpsItems

有关如何创建新警报以在 OpsCenter 中自动创建 OpsCenter 中创建 OpsCenter 的信息,请参阅根据静态阈值创建 CloudWatch 警报中的Amazon CloudWatch 用户指南。在该过程的步骤 8 中,选择Systems Manager OpsCenter 操作,然后完成操作过程。

手动配置现有警报以创建 OpsItems(控制台)

可以使用以下过程编辑现有警报并配置Systems Manager作为该警报的目标。当警报进入ALARM状态时,CloudWatch 会在 OpsCenter 中创建一个新的操作系统。

编辑现有警报并将 Systems Manager 配置为该警报的目标

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  2. 在导航窗格中,选择 Alarms

  3. 选择警报,然后选择操作编辑

  4. (可选)更改指标条件部分,然后选择下一步

  5. Systems Manager部分,选择。添加 Systems Manager OpsCenter 操作

  6. 适用于严重性,选择一个数字。

    注意

    严重性是用户定义的值。您或您的组织确定每个严重性值的含义以及与每个严重性关联的任何服务级别协议。

  7. (可选)类别,选择一个选项。

  8. 选择下一步并完成向导。

通过警报创建的 OpsItem 将显示CloudWatch 警报警报警报警报警报名称'处于警报状态。要查看有关从警报创建的特定 OpsItem 的详细信息,请选择 OpenSiteM,然后选择相关资源详细信息选项卡。

注意

如果警报创建了 OpsItem,并且您指定了重复数据消除字符串,则即使您在 CloudWatch 中编辑警报,警报也不会创建其他 OpsItems。(如果在 OpsItem enter 中解析了操作系统,CloudWatch 控将创建一个新的 OpsItem 统。)

如果您编辑警报并更改通过该警报创建的任何新 OpsItems 的严重性或类别,Systems Manager 将不会更改已从该警报创建的 Opsitems 的严重性或类别。您可以手动编辑 OpsItems 以更改详细信息,例如严重性或类别。

以编程方式配置 CloudWatch 警报以创建 OpsItems

您可以通过编程方式配置 Amazon CloudWatch 警报以创建 OpsItems,方法是使用Amazon命令行界面 (AmazonCLI)、Amazon CloudFormation模板或 Java 代码片段。

开始前的准备工作

如果您以编程方式编辑现有警报或创建创建 OpsItems 的新警报,则必须指定亚马逊资源名称 (ARN)。此 ARN 将 Systems Manager OpsCenter 标识为从警报创建的 OpsItems 的目标。您可以自定义 ARN,以便从警报创建的 OpsItems 包含特定信息,如严重性或类别。每个 ARN 都包含下表中所述的信息。

参数 详细信息

区域(必填)

这些区域有:Amazon Web Services 区域警报存在的位置。例如:us-west-2。有关的信息Amazon Web Services 区域您可以使用 OpsCenter 的位置,请参阅Amazon Web Services Systems Manager终端节点和配额

Amazon Web Services 账户ID(必需)

相同的Amazon Web Services 账户用于创建警报的 ID。例如:12345689012. 账户 ID 后面必须跟冒号 (:) 和参数opsitem如下面的示例所示。

严重性(必需)

通过警报创建的 OpsItems 用户定义的严重性级别。有效值:1,2,3,4

由于这是用户定义的值,因此您或您的组织确定每个严重性值的含义以及与每个严重性关联的任何服务级别协议。

类别(可选)

通过警报创建的 OpsItems 类别。有效值:可用性、成本、性能、恢复、安全性。

通过使用以下语法创建 ARN。该 ARN 不包括可选的Category参数。

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

以下是一个示例。

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

创建 ARN 用可选Category参数,请使用以下语法。

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

以下是一个示例。

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

手动配置现有警报以创建 OpsItems (AmazonCLI)

使用以下命令配置现有警报,OpsItems 过使用AmazonCLI。此命令要求您指定 Amazon 资源名称 (ARN)alarm-actions参数。有关如何创建 ARN 的信息,请参阅开始前的准备工作

配置现有警报以创建 OpsItems

  1. 安装和配置Amazon命令行界面 (AmazonCLI),如果尚未执行该操作。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具

  2. 运行以下命令以收集有关要配置的警报的信息。

    aws cloudwatch describe-alarms --alarm-names "alarm_name"
  3. 运行以下命令以更新警报。

    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

    下面是一个示例。

    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

通过警报创建的 OpsItem 将显示CloudWatch 警报警报警报警报警报名称'处于警报状态。要查看有关从警报创建的特定 OpsItem 的详细信息,请选择 OpenSiteM,然后选择相关资源详细信息选项卡。

注意

如果警报创建了 OpsItem,并且您指定了重复数据消除字符串,则即使您在 CloudWatch 中编辑警报,警报也不会创建其他 OpsItems。(如果在 OpsItem enter 中解析了操作系统,CloudWatch 控将创建一个新的 OpsItem 统。)

如果您编辑警报并更改通过该警报创建的任何新 OpsItems 的严重性或类别,Systems Manager 将不会更改已从该警报创建的 Opsitems 的严重性或类别。您可以手动编辑 OpsItems 以更改详细信息,例如严重性或类别。

使用Amazon CloudFormation模板来配置 Amazon CloudWatch 警报以自动创建 OpsItems

此部分包含Amazon CloudFormation模板,您可以使用这些模板来配置 CloudWatch 警报以自动创建 OpsItems。每个模板都要求您指定一个 Amazon 资源名称 (ARN)AlarmActions参数。有关如何创建 ARN 的信息,请参阅开始前的准备工作

指标警报

请使用以下Amazon CloudFormation模板创建或更新亚 Amazon CloudWatch 指标警报。此模板中指定的警报监控 Amazon EC2 实例状态检查。如果警报进入ALARM状态下,它会在 OOpsItem enter 中创建 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"}}] } } } }

复合警报

请使用以下Amazon CloudFormation模板以创建或更新复合警报。复合警报由多个指标警报组成。如果警报进入ALARM状态下,它会在 OOpsItem enter 中创建 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" } } }

通过警报创建的 OpsItem 将显示CloudWatch 警报警报警报警报警报名称'处于警报状态。要查看有关从警报创建的特定 OpsItem 的详细信息,请选择 OpenSiteM,然后选择相关资源详细信息选项卡。

注意

如果警报创建了 OpsItem,并且您指定了重复数据消除字符串,则即使您在 CloudWatch 中编辑警报,警报也不会创建其他 OpsItems。(如果在 OpsItem enter 中解析了操作系统,CloudWatch 控将创建一个新的 OpsItem 统。)

如果您编辑警报并更改通过该警报创建的任何新 OpsItems 的严重性或类别,Systems Manager 将不会更改已从该警报创建的 Opsitems 的严重性或类别。您可以手动编辑 OpsItems 以更改详细信息,例如严重性或类别。

使用 Java 代码片段配置 CloudWatch 警报以自动创建 OpsItems

本部分包含 Java 代码片段,您可以使用这些代码段配置 CloudWatch 警报以自动创建 OpsItems。每个代码段都要求您指定一个 Amazon 资源名称 (ARN)validSsmActionStr参数。有关如何创建 ARN 的信息,请参阅开始前的准备工作

特定警报

使用以下 Java 代码段创建或更新 CloudWatch 警报。此模板中指定的警报监控 Amazon EC2 实例状态检查。如果警报进入ALARM状态下,它会在 OOpsItem enter 中创建 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); }

更新所有警报

使用以下 Java 代码段更新您的Amazon Web Services 账户创建 OpsItems,当警报进入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; } } }

通过警报创建的 OpsItem 将显示CloudWatch 警报警报警报警报警报名称'处于警报状态。要查看有关从警报创建的特定 OpsItem 的详细信息,请选择 OpenSiteM,然后选择相关资源详细信息选项卡。

注意

如果警报创建了 OpsItem,并且您指定了重复数据消除字符串,则即使您在 CloudWatch 中编辑警报,警报也不会创建其他 OpsItems。(如果在 OpsItem enter 中解析了操作系统,CloudWatch 控将创建一个新的 OpsItem 统。)

如果您编辑警报并更改通过该警报创建的任何新 OpsItems 的严重性或类别,Systems Manager 将不会更改已从该警报创建的 Opsitems 的严重性或类别。您可以手动编辑 OpsItems 以更改详细信息,例如严重性或类别。