

• AWS Systems Manager CloudWatch 대시보드는 2026년 4월 30일 이후에는 더 이상 사용할 수 없습니다. 고객은 Amazon CloudWatch 콘솔을 계속 사용하여 현재와 마찬가지로 Amazon CloudWatch 대시보드를 보고, 생성하고, 관리할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 대시보드 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)를 참조하세요.

# OpsItems를 생성하도록 기존 CloudWatch 경보 구성(프로그래밍 방식으로)
<a name="OpsCenter-configuring-an-existing-alarm-programmatically"></a>

AWS Command Line Interface(AWS CLI), AWS CloudFormation 템플릿 또는 Java 코드 조각을 사용하여 프로그래밍 방식으로 OpsItems를 생성하도록 Amazon CloudWatch 경보를 구성할 수 있습니다.

**Topics**
+ [시작하기 전 준비 사항](#OpsCenter-create-OpsItems-from-CloudWatch-Alarms-before-you-begin)
+ [OpsItems(AWS CLI)를 생성하도록 CloudWatch 경보 구성](#OpsCenter-create-OpsItems-from-CloudWatch-Alarms-manually-configure-cli)
+ [OpsItems를 생성하거나 업데이트하도록 CloudWatch 경보 구성(CloudFormation)](#OpsCenter-create-OpsItems-from-CloudWatch-Alarms-programmatically-configure-CloudFormation)
+ [OpsItems(Java)를 생성하거나 업데이트하도록 CloudWatch 경보 구성](#OpsCenter-create-OpsItems-from-CloudWatch-Alarms-programmatically-configure-java)

## 시작하기 전 준비 사항
<a name="OpsCenter-create-OpsItems-from-CloudWatch-Alarms-before-you-begin"></a>

기존 경보를 프로그래밍 방식으로 편집하거나 OpsItems를 생성하는 경보를 생성하는 경우 Amazon 리소스 이름(ARN)을 지정해야 합니다. 이 ARN은 경보에서 생성된 OpsItems의 대상으로 Systems Manager OpsCenter를 식별합니다. 경보에서 생성된 OpsItems에 심각도 또는 범주와 같은 특정 정보가 포함되도록 ARN을 사용자 지정할 수 있습니다. 각 ARN에는 다음 표에 설명된 정보가 포함됩니다.


****  

| 파라미터 | 세부 정보 | 
| --- | --- | 
|  `Region`(필수)  |  경보가 있는 AWS 리전입니다. 예를 들면 `us-west-2`입니다. OpsCenter를 사용할 수 있는 AWS 리전에 대한 자세한 내용은 [AWS Systems Manager 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/ssm.html)을 참조하세요.  | 
|  `account_ID`(필수)  |  경보 생성에 사용된 동일한 AWS 계정 ID입니다. 예를 들면 `123456789012`입니다. 계정 ID 다음에는 다음 예와 같이 콜론(`:`)과 파라미터 `opsitem`이 와야 합니다.  | 
|  `severity`(필수)  |  경보에서 생성된 OpsItems에 대한 사용자 정의 심각도 수준입니다. 유효값: `1`, `2`, `3`, `4`   | 
|  `Category`(선택 사항)  |  경보에서 생성된 OpsItems에 대한 범주입니다. 유효한 값: `Availability`, `Cost`, `Performance`, `Recovery` 및 `Security`.  | 

다음 구문을 사용하여 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 경보 구성
<a name="OpsCenter-create-OpsItems-from-CloudWatch-Alarms-manually-configure-cli"></a>

이 명령을 사용하려면 `alarm-actions` 파라미터에 대한 ARN을 지정해야 합니다. ARN을 생성하는 방법에 대한 자세한 내용은 [시작하기 전 준비 사항](#OpsCenter-create-OpsItems-from-CloudWatch-Alarms-before-you-begin) 섹션을 참조하세요.

**OpsItems(AWS CLI)를 생성하도록 CloudWatch 경보 구성**

1. 아직 하지 않은 경우 AWS Command Line Interface(AWS CLI)을 설치하고 구성합니다.

   자세한 내용은 [최신 버전의 AWS CLI 설치 또는 업데이트](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

1. 다음 명령을 실행하여 구성하려는 경보에 대한 정보를 수집합니다.

   ```
   aws cloudwatch describe-alarms --alarm-names "alarm name"
   ```

1. 다음 명령을 실행하여 경보를 업데이트합니다. 각 *example resource placeholder*를 사용자의 정보로 바꿉니다.

   ```
   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
   ```

------

## OpsItems를 생성하거나 업데이트하도록 CloudWatch 경보 구성(CloudFormation)
<a name="OpsCenter-create-OpsItems-from-CloudWatch-Alarms-programmatically-configure-CloudFormation"></a>

이 섹션에는 AWS CloudFormation을 자동으로 생성하거나 업데이트하도록 CloudWatch 경보를 구성하는 데 사용할 수 있는 OpsItems 템플릿이 포함되어 있습니다. 각 템플릿을 사용하려면 `AlarmActions` 파라미터에 대한 ARN을 지정해야 합니다. ARN을 생성하는 방법에 대한 자세한 내용은 [시작하기 전 준비 사항](#OpsCenter-create-OpsItems-from-CloudWatch-Alarms-before-you-begin) 섹션을 참조하세요.

**지표 경보** - 다음 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: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"}}]
          }
        }
      }
    }
```

**복합 경보** - 다음 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: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"
          }
       }
    }
```

## OpsItems(Java)를 생성하거나 업데이트하도록 CloudWatch 경보 구성
<a name="OpsCenter-create-OpsItems-from-CloudWatch-Alarms-programmatically-configure-java"></a>

이 섹션에는 OpsItems를 자동으로 생성하거나 업데이트하도록 CloudWatch 경보를 구성하는 데 사용할 수 있는 Java 코드 조각이 포함되어 있습니다. 각 코드 조각을 사용하려면 `validSsmActionStr` 파라미터에 대한 ARN을 지정해야 합니다. ARN을 생성하는 방법에 대한 자세한 내용은 [시작하기 전 준비 사항](#OpsCenter-create-OpsItems-from-CloudWatch-Alarms-before-you-begin) 섹션을 참조하세요.

**특정 경보** - 다음 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: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 코드 조각을 사용하여 경보가 `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: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;
            }
        }
    }
```