

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 로그 이상 탐지
<a name="LogsAnomalyDetection"></a>

로그 데이터에서 이상 징후를 감지할 수 있는 방법은 지속적인 모니터링을 위해 *로그 이상 탐지기*를 생성하는 것, 그리고 온디맨드 분석을 위해 CloudWatch Log Insights 쿼리에서 [`anomaly detection`](CWL_QuerySyntax-Anomaly.md) 명령을 사용하는 것입니다.

로그 이상 탐지기는 로그 그룹에 수집된 로그 이벤트를 스캔하여 로그 데이터에서 이상을 자동으로 찾습니다. 이상 탐지는 기계 학습 및 패턴 인식을 사용하여 일반적인 로그 콘텐츠의 기준을 설정합니다. 온디맨드 분석의 경우 CloudWatch Logs Insights 쿼리에서 `anomaly detection` 명령을 사용하여 시계열 데이터의 비정상적인 패턴을 식별할 수 있습니다. 쿼리 기반 이상 탐지에 대한 자세한 내용은 [CloudWatch Logs Insights에서 이상 탐지 사용](LogsAnomalyDetection-Insights.md)을 참조하세요.

로그 그룹 이상 탐지기를 생성하면 이상 탐지기는 로그 그룹의 지난 2주 동안의 로그 이벤트를 사용하여 훈련됩니다. 훈련 기간은 최대 15분이 소요될 수 있습니다. 훈련이 완료되면 들어오는 로그를 분석하여 이상을 식별하기 시작하고, 검사할 수 있도록 CloudWatch Logs 콘솔에 이상이 표시됩니다.

CloudWatch Logs 패턴 인식은 로그에서 정적 및 동적 콘텐츠를 식별하여 로그 패턴을 추출합니다. 많은 수의 로그 이벤트를 몇 가지 패턴으로 압축할 수 있기 때문에 패턴은 큰 로그 집합을 분석하는 데 유용합니다.

예를 들어, 다음 세 가지 로그 이벤트 샘플을 참조하세요.

```
2023-01-01 19:00:01 [INFO] Calling DynamoDB to store for ResourceID: 12342342k124-12345
2023-01-01 19:00:02 [INFO] Calling DynamoDB to store for ResourceID: 324892398123-1234R
2023-01-01 19:00:03 [INFO] Calling DynamoDB to store for ResourceID: 3ff231242342-12345
```

이전 샘플에서 세 로그 이벤트는 모두 한 가지 패턴을 따릅니다.

```
<Date-1> <Time-2> [INFO] Calling DynamoDB to store for resource id <ResourceID-3>
```

패턴 내의 필드를 *토큰*이라고 합니다. 요청 ID나 타임스탬프 같이 패턴 내에서 달라지는 필드를 *동적 토큰*이라고 합니다. 동적 토큰에 대해 발견된 각 값을 *토큰 값*이라고 합니다.

CloudWatch Logs는 동적 토큰이 나타내는 데이터 유형을 추론할 수 있는 경우 토큰을 `<string-number>`으로 표시합니다. *string*은 토큰이 나타내는 데이터 유형에 대한 설명입니다. *number*는 다른 동적 토큰과 비교하여 패턴에서 이 토큰이 나타나는 위치를 보여줍니다.

CloudWatch Logs는 문자열을 포함하는 로그 이벤트의 콘텐츠 분석을 기반으로 이름의 문자열 부분을 할당합니다.

CloudWatch Logs는 동적 토큰이 나타내는 데이터 유형을 추론할 수 없는 경우 토큰을 <Token-*number*>로 표시하며, *number*는 패턴에서 이 토큰이 나타나는 위치를 다른 동적 토큰과 비교하여 나타냅니다.

동적 토큰의 일반적인 예로는 오류 코드, IP 주소, 타임스탬프, 요청 ID가 있습니다.

로그 이상 탐지는 이러한 패턴을 사용하여 이상을 찾습니다. 이상 탐지기 모델 훈련 기간이 지나면 알려진 추세와 비교하여 로그가 평가됩니다. 이상 탐지기는 상당한 변동을 이상으로 플래그 지정합니다.

이 장에서는 이상 탐지를 활성화하고, 이상을 보고, 로그 이상 탐지기를 위한 경보를 생성하고, 로그 이상 탐지기가 게시하는 지표를 생성하는 방법을 설명합니다. 또한 이상 탐지기와 그 결과를 암호화하는 방법도 설명합니다 AWS Key Management Service.

로그 이상 탐지기 생성에는 요금이 발생하지 않습니다.

## 이상 및 패턴의 심각도 및 우선순위
<a name="LogsAnomalyDetection-Severity-Priority"></a>

로그 이상 탐지기가 발견한 각 이상에는 *우선순위*가 할당됩니다. 발견된 각 패턴에는 *심각도*가 할당됩니다.
+ *우선순위*는 자동으로 계산되며, 패턴의 심각도 수준 및 예상 값과의 편차 양을 기반으로 합니다. 예를 들어, 특정 토큰 값이 갑자기 500% 증가하는 경우 심각도가 `NONE`이더라도 해당 이상을 `HIGH` 우선순위로 지정할 수 있습니다.
+ *심각도*는 `FATAL`, `ERROR`, `WARN` 등 패턴에서 발견된 키워드만을 기반으로 합니다. 이러한 키워드를 찾을 수 없는 경우 패턴의 심각도는 `NONE`으로 표시됩니다.

## 이상 가시성 시간
<a name="LogsAnomalyDetection-Visibility"></a>

이상 탐지기를 생성할 때 이상 탐지기의 최대 가시성 기간을 지정합니다. 이 기간은 콘솔에 이상이 표시되고 [ListAnomalies](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListAnomalies.html) API 작업에 의해 이상이 반환되는 일수입니다. 이 기간이 경과한 후에도 계속 발생하는 이상은 자동으로 일반 동작으로 수락되고 이상 탐지기 모델은 이를 이상 현상으로 더 이상 플래그 지정하지 않습니다.

이상 탐지기를 생성할 때 가시성 시간을 조정하지 않으면 21일이 기본값으로 사용됩니다.

## 이상 항목 억제
<a name="LogsAnomalyDetection-Suppress"></a>

이상이 발견된 후 일시적으로 또는 영구적으로 이를 억제하도록 선택할 수 있습니다. 이상 항목 억제를 선택하면 이상 탐지기는 지정한 시간 동안 이를 이상으로 플래그 지정하지 않습니다. 이상을 억제할 때 해당 특정 이상만 억제하거나 이상이 발견된 패턴과 관련된 모든 이상을 억제하도록 선택할 수 있습니다.

콘솔에서는 여전히 억제된 이상을 볼 수 있습니다. 이상 억제를 중지하도록 선택할 수도 있습니다.

## 자주 묻는 질문(FAQ)
<a name="LogsAnomalyDetection-FAQ"></a>

 **내 데이터를 AWS 사용하여 AWS 사용 또는 다른 고객을 위한 기계 학습 알고리즘을 훈련하나요? ** 

아니요. 훈련에서 생성된 이상 탐지 모델은 로그 그룹의 로그 이벤트를 기반으로 하며 해당 로그 그룹 및 해당 AWS 계정 내에서만 사용됩니다.

 **이상 탐지에 적합한 로그 이벤트 유형은 무엇입니까?**

**로그 이상 탐지가 적합한 로그 이벤트 유형**은 애플리케이션 로그 및 대부분의 로그 항목이 일반적인 패턴에 맞는 기타 유형의 로그입니다. 로그 수준 또는 **INFO**, **ERROR**, **DEBUG** 같은 심각도 키워드가 포함된 이벤트가 있는 로그 그룹은 로그 이상 탐지에 특히 적합합니다.

**로그 이상 탐지가 적합하지 않은 로그 이벤트**는 CloudTrail Logs 같이 JSON 구조가 매우 긴 로그 이벤트입니다. 패턴 분석은 로그 줄의 처음 1,500자까지만 분석하므로 해당 한도를 넘는 모든 문자는 건너뜁니다.

VPC 흐름 로그 같은 감사 또는 액세스 로그도 이상 탐지 성공률이 떨어집니다. 이상 탐지는 애플리케이션 문제를 찾기 위한 것이므로 네트워크 또는 액세스 이상에는 적합하지 않을 수 있습니다.

CloudWatch Logs 패턴 분석을 사용하여 그룹의 로그 이벤트에서 패턴의 수를 찾으면 이상 탐지기가 특정 로그 그룹에 적합한지 여부를 결정하는 데 도움이 됩니다. 패턴의 수가 약 300개 이하인 경우 이상 탐지가 잘 작동할 수 있습니다. 패턴 분석에 대한 자세한 내용은 [패턴 분석](CWL_AnalyzeLogData_Patterns.md)을 참조하세요.

 **무엇이 이상으로 플래그 지정되나요?**

다음과 같은 경우 로그 이벤트가 이상으로 플래그 지정될 수 있습니다.
+ 로그 그룹에서 이전에 보이지 않던 패턴이 있는 로그 이벤트.
+ 알려진 패턴의 상당한 변형.
+ 일반적 값의 이산 집합이 있는 동적 토큰의 새 값.
+ 동적 토큰의 특정 값 발생 횟수의 큰 변화.

위의 모든 항목이 이상으로 플래그 지정될 수 있지만, 모두 다 애플리케이션이 제대로 작동하지 않는다는 의미는 아닙니다. 예를 들어, 평소보다 많은 수의 `200` 성공 값은 이상으로 플래그가 지정될 수 있습니다. 이와 같은 경우 문제를 나타내지 않는 이러한 이상을 억제하는 것이 좋습니다.

 **마스킹 처리되는 민감한 데이터는 어떻게 되나요?**

로그 이벤트에서 민감한 데이터로 마스킹 처리된 부분은 이상을 스캔하지 않습니다. 자세한 내용은 [Help protect sensitive log data with masking](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html)을 참조하세요.

# CloudWatch Logs Insights에서 이상 탐지 사용
<a name="LogsAnomalyDetection-Insights"></a>

지속적인 모니터링을 위한 로그 이상 탐지기를 생성하는 것 외에도 CloudWatch Logs Insights 쿼리에서 `anomaly` 명령을 사용하여 온디맨드 방식으로 로그 데이터의 비정상적인 패턴을 식별할 수도 있습니다. 이 명령은 기존 `pattern` 기능을 확장하고 기계 학습을 사용하여 패턴 빈도 변경, 새 패턴, 토큰 변형 등 5가지 유형의 이상을 감지합니다.

`anomaly` 명령은 다음과 같은 경우에 특히 유용합니다.
+ 비정상적인 패턴을 식별하기 위한 기록 로그 데이터의 임시 분석
+ 비정상적인 동작에 대한 특정 기간 조사
+ Lambda 함수와 같은 애플리케이션의 실행 문제 모니터링

쿼리에서 `anomaly` 명령 사용에 대한 자세한 내용은 [이상](CWL_QuerySyntax-Anomaly.md)을 참조하세요.

이 쿼리 기반 이상 탐지는 다음 섹션에 설명된 연속 이상 탐지기를 보완하여 실시간 모니터링과 온디맨드 분석 기능을 모두 제공합니다.

# 로그 그룹에서 이상 탐지 활성화
<a name="LogsAnomalyDetection-Enable"></a>

다음 단계에 따라 CloudWatch 콘솔을 사용하여 로그 그룹에 이상이 있는지 스캔하는 로그 이상 탐지기를 생성합니다.

프로그래밍 방식으로 이상 탐지기를 생성할 수도 있습니다. 자세한 내용은 [CreateLogAnomalyDetector](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogAnomalyDetector.html)를 참조하세요.

**로그 이상 탐지기를 생성하려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. **로그**, **로그 이상 항목**을 선택합니다.

1. **이상 탐지기 생성**을 선택합니다.

1. 이 이상 탐지기를 생성할 로그 그룹을 선택합니다.

1. **이상 탐지기 이름**에 탐지기 이름을 입력합니다.

1. (선택 사항) **평가 빈도**를 기본값인 5분에서 변경합니다. 로그 그룹이 새 로그를 수신하는 빈도에 따라 이 값을 설정합니다. 예를 들어, 로그 그룹이 10분마다 배치로 새 로그 이벤트를 수신하는 경우 평가 빈도를 15분으로 설정하는 것이 적절할 수 있습니다.

1. (선택 사항) 특정 단어나 문자열이 포함된 로그 이벤트에서만 이상을 찾도록 이상 탐지기를 구성하려면 **패턴 필터링**을 선택합니다.

   그런 다음 **이상 탐지 필터 패턴**에 패턴을 입력합니다. 패턴 구문에 대한 자세한 내용은 [지표 필터, 구독 필터, 필터 로그 이벤트 및 Live Tail에 대한 필터 패턴 구문](FilterAndPatternSyntax.md)을 참조하세요.

    (선택 사항) 필터 패턴을 테스트하려면 **로그 이벤트 메시지**에 몇몇 로그 메시지를 입력한 다음 **패턴 테스트**를 선택합니다.

1. (선택 사항) 이상 표시 기간을 기본값에서 변경하거나 AWS KMS 키를이 이상 탐지기와 연결하려면 **고급 구성을** 선택합니다.

   1. 이상 가시성 기간을 기본값에서 변경하려면 **최대 이상 항목 가시성 기간(일)**에 새 값을 입력합니다.

   1.  AWS KMS 키를이 이상 탐지기와 연결하려면 **KMS 키 ARN에 ARN**을 입력합니다. 키를 할당하면 이 탐지기가 발견한 이상 정보가 키를 사용하여 저장 시 암호화됩니다. 사용자는 이 키에 대한 권한과 이상 탐지기에 대한 권한이 있어야 이상 탐지기가 발견한 이상에 대한 정보를 검색할 수 있습니다.

      또한 CloudWatch Logs 서비스 보안 주체에게 키를 사용할 수 있는 권한이 있는지 확인해야 합니다. 자세한 내용은 [를 사용하여 이상 탐지기 및 그 결과 암호화 AWS KMS](LogsAnomalyDetection-KMS.md) 단원을 참조하십시오.

1. **이상 탐지 활성화**를 선택합니다.

   이상 탐지기가 생성되고, 로그 그룹이 수집 중인 로그 이벤트에 따라 모델 훈련을 시작합니다. 약 15분 후에 이상 탐지가 활성화되고 이상을 찾아서 표시하기 시작합니다.

# 발견된 이상 보기
<a name="LogsAnomalyDetection-View"></a>

하나 이상의 로그 이상 탐지기를 생성한 후 CloudWatch 콘솔을 사용하여 이상 탐지기가 발견한 이상을 볼 수 있습니다.

프로그래밍 방식으로 이상을 볼 수 있습니다. 자세한 내용은 [ListAnomalies](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListAnomalies.html)를 참조하세요.

**모든 로그 이상 탐지기에서 발견된 이상을 확인하려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. **로그**, **로그 이상 항목**을 선택합니다.

   **로그 이상 항목** 테이블이 나타납니다. **로그 이상 항목** 옆의 상단에 있는 숫자는 테이블에 나열된 로그 이상 수를 표시합니다. 테이블의 각 행에는 다음과 같은 정보가 표시됩니다.
   + **이상** 열에는 이상의 간략한 요약이 표시됩니다. 이러한 요약은 CloudWatch Logs에서 생성됩니다.
   + 이상 현상의 **우선순위**. 우선순위는 로그 이벤트의 변화량, 로그 이벤트에서 발생한 `Exception` 같은 키워드 등을 기반으로 자동으로 계산됩니다.
   + 이상의 기반이 되는 **로그 패턴**. 패턴에 대한 자세한 내용은 [로그 이상 탐지](LogsAnomalyDetection.md)을 참조하세요.
   + **이상 로그 추세**는 패턴과 일치하는 로그 볼륨을 나타내는 히스토그램을 표시합니다.
   + **마지막 탐지 시간**에는 이 이상이 발견된 최신 시간이 표시됩니다.
   + **첫 번째 탐지 시간**에는 이 이상이 처음 발견된 시간이 표시됩니다.
   + **이상 탐지기**에는 이 이상과 관련된 로그 이벤트를 포함하는 로그 그룹의 이름이 표시됩니다. 이 이름을 선택하면 로그 그룹 세부 정보 페이지를 볼 수 있습니다.

1. 이상 하나를 추가로 검사하려면 해당 행에서 라디오 버튼을 선택합니다.

   **패턴 검사** 창이 나타나고 다음이 표시됩니다.
   + 이 이상의 기반이 되는 **로그 패턴**. 패턴 내에서 토큰을 선택하여 해당 토큰의 값을 분석합니다.
   + 쿼리된 시간 범위에서 이상의 발생 횟수를 보여주는 히스토그램.
   + **로그 샘플** 탭에는 이상의 일부인 몇 가지 로그 이벤트가 표시됩니다.
   + **토큰 값** 탭에는 선택한 동적 토큰의 값이 표시됩니다(동적 토큰을 선택한 경우).
**참고**  
각 토큰마다 최대 10개의 토큰 값이 캡처됩니다. 토큰 개수가 정확하지 않을 수 있습니다. CloudWatch Logs는 확률 계수기를 사용하여 절대값이 아닌 토큰 개수를 생성합니다.

1. 이상을 억제하려면 해당 행에서 라디오 버튼을 선택한 후 다음을 수행합니다.

   1. **작업**, **이상 항목 억제**를 선택합니다.

   1. 그런 다음 이상을 억제할 기간을 지정합니다.

   1. 이 패턴과 관련된 모든 이상을 억제하려면 **패턴 억제**를 선택합니다.

   1. **이상 항목 억제**를 선택합니다.

**단일 로그 그룹에서 발견된 이상을 확인하려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. **로그**, **로그 그룹**을 선택합니다.

1. 로그 그룹의 이름을 선택한 다음 **이상 탐지** 탭을 선택합니다.

   **이상 탐지** 테이블이 나타납니다. **로그 이상 항목** 옆의 상단에 있는 숫자는 테이블에 나열된 로그 이상 수를 표시합니다. 테이블의 각 행에는 다음과 같은 정보가 표시됩니다.
   + **이상** 열에는 이상의 간략한 요약이 표시됩니다. 이러한 요약은 CloudWatch Logs에서 생성됩니다.
   + 이상 현상의 **우선순위**. 우선순위는 로그 이벤트의 변화량, 로그 이벤트에서 발생한 `Exception` 같은 키워드 등을 기반으로 자동으로 계산됩니다.
   + 이상의 기반이 되는 **로그 패턴**. 패턴에 대한 자세한 내용은 [로그 이상 탐지](LogsAnomalyDetection.md)을 참조하세요.
   + **이상 로그 추세**는 패턴과 일치하는 로그 볼륨을 나타내는 히스토그램을 표시합니다.
   + **마지막 탐지 시간**에는 이 이상이 발견된 최신 시간이 표시됩니다.
   + **첫 번째 탐지 시간**에는 이 이상이 처음 발견된 시간이 표시됩니다.

1. 이상 하나를 추가로 검사하려면 해당 행에서 라디오 버튼을 선택합니다.

   **패턴 검사** 창이 나타나고 다음이 표시됩니다.
   + 이 이상의 기반이 되는 **로그 패턴**. 패턴 내에서 토큰을 선택하여 해당 토큰의 값을 분석합니다.
   + 쿼리된 시간 범위에서 이상의 발생 횟수를 보여주는 히스토그램.
   + **로그 샘플** 탭에는 이상의 일부인 몇 가지 로그 이벤트가 표시됩니다.
   + **토큰 값** 탭에는 선택한 동적 토큰의 값이 표시됩니다(동적 토큰을 선택한 경우).
**참고**  
각 토큰마다 최대 10개의 토큰 값이 캡처됩니다. 토큰 개수가 정확하지 않을 수 있습니다. CloudWatch Logs는 확률 계수기를 사용하여 절대값이 아닌 토큰 개수를 생성합니다.

1. 이상을 억제하려면 해당 행에서 라디오 버튼을 선택한 후 다음을 수행합니다.

   1. **작업**, **이상 항목 억제**를 선택합니다.

   1. 그런 다음 이상을 억제할 기간을 지정합니다.

   1. 이 패턴과 관련된 모든 이상을 억제하려면 **패턴 억제**를 선택합니다.

   1. **이상 항목 억제**를 선택합니다.

# 로그 이상 탐지기에 대한 경보 생성
<a name="LogsAnomalyDetection-Alarms"></a>

로그 그룹에서 로그 이상 탐지기를 위한 경보를 생성할 수 있습니다. 지정된 기간 동안 로그 그룹에서 지정된 횟수의 이상이 발견되면 `ALARM` 상태가 되도록 경보를 지정할 수 있습니다. 필터를 사용하여 경보에서 지정된 우선순위의 이상만 계산되도록 할 수도 있습니다.

**로그 이상 탐지기에 대한 경보를 생성하려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 탐색 창에서 **로그**, **로그 그룹**을 선택합니다.

   로그 이상 탐지기 테이블이 나타납니다.

1. 경보를 설정하려는 이상 탐지기의 라디오 버튼을 선택하고 **경보 생성**을 선택합니다.

   CloudWatch 경보 생성 마법사가 나타납니다. **LogAnomalyDetector** 필드에는 선택한 이상 탐지기의 이름이 표시됩니다. **지표 이름** 필드에 **AnomalyCount**가 표시됩니다.

1. (선택 사항) 이상 우선순위로 이 경보를 필터링하려면 다음 중 하나를 수행합니다.
   + 경보에서 우선순위가 높은 이상만 계산되도록 하려면 **LogAnomalyPriority**에 **HIGH**를 입력합니다.
   + 경보에서 우선순위가 높음 및 중간인 이상만 계산되도록 하려면 **LogAnomalyPriority**에 **MEDIUM**를 입력합니다.

   우선순위 수준에 대한 자세한 내용은 [이상 및 패턴의 심각도 및 우선순위](LogsAnomalyDetection.md#LogsAnomalyDetection-Severity-Priority)을 참조하세요.

1. 경보에 정적 또는 지표 이상 탐지 임계값을 사용하도록 선택합니다. 이 선택에 따라 경보 임곗값 설정 방법이 결정됩니다. **정적** 임곗값은 경보 임곗값이 선택한 정적 상수 숫자임을 의미합니다. **이상 탐지** 임곗값은 CloudWatch가 일반적인 값의 범위를 결정하고 실제 개수가 이 대역의 임곗값을 초과하면 경보가 트리거됨을 의미합니다. 로그 이상 탐지 경보에 대해 **이상 탐지**를 선택할 필요는 없습니다. 지표 이상 탐지에 대한 자세한 내용은 [ CloudWatch 이상 탐지 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Anomaly_Detection.html)을 참조하세요.

1.  ***your-metric-name* is... 일 때마다** **Greater**, **Greater/Equal**, **Lower/Equal** 또는 **Lower**을 선택합니다. **than . . .**에 임곗값에 대한 숫자를 지정합니다. 이상 탐지기가 **기간**에 지정된 시간 동안 이 경보 횟수보다 많은 경보를 찾으면 경보가 `ALARM` 상태로 전환됩니다.

1. **추가 구성**을 선택합니다. **경보에 대한 데이터 포인트**에서 경보를 트리거하기 위해 평가 기간(데이터 포인트)이 `ALARM` 상태로 유지해야 하는 기간을 지정합니다. 두 값이 일치하는 경우 다수의 연속 기간이 위반되면 `ALARM` 상태가 되는 경보가 생성됩니다.

   N개 중 M번째 경보를 생성하려면 두 번째 값의 숫자보다 작은 값을 첫 번째 값에 지정합니다. 자세한 내용은 [경보 평가](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation)를 참조하세요.

1. **누락 데이터 처리**에서 일부 데이터 포인트가 누락된 경우 경보가 어떻게 동작할지 선택합니다. 자세한 내용은 [ CloudWatch 경보가 누락된 데이터를 처리하는 방법 구성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)을 참조하세요.

1. **다음**을 선택합니다.

1.  **알림**에서 **알림 추가**를 선택한 다음, 경보가 `ALARM`, `OK` 또는 `INSUFFICIENT_DATA` 상태로 전환될 때 알림을 보낼 Amazon SNS 주제를 지정합니다.

   1.  (선택 사항) 동일한 경보 상태 또는 다른 경보 상태에 대해 여러 개의 알림을 보내려면 **알림 추가**를 선택합니다.
**참고**  
**경보** 상태가 되는 경우와 함께 **데이터 부족** 상태가 되는 경우에도 조치를 취하도록 경보를 설정하는 것이 좋습니다. 데이터 소스에 연결되는 Lambda 함수와 관련된 많은 문제로 인해 경보가 **데이터 부족** 상태로 전환될 수 있기 때문입니다.

   1.  (선택 사항) Amazon SNS 알림을 보내지 않으려면 **제거**를 선택합니다.

1.  (선택 사항) 경보가 Amazon EC2 Auto Scaling, Amazon EC2, 티켓에 대한 작업을 수행하도록 하려면 적절한 버튼을 AWS Systems Manager선택하고 경보 상태 및 작업을 지정합니다.
**참고**  
 경보는 `ALARM` 상태일 때만 Systems Manager 작업을 수행할 수 있습니다. 시스템 관리자 작업에 대한 자세한 내용은 OpsItems 및 [Incident 생성](https://docs.aws.amazon.com/incident-manager/latest/userguide/incident-creation.html)을 위한 [CloudWatch 구성](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-create-OpsItems-from-CloudWatch-Alarms.html)을 참조하세요.

1. **다음**을 선택합니다.

1.  **이름 및 설명**에서 경보의 이름과 설명을 입력하고 **다음**을 선택합니다. 이름에는 UTF-8 문자만 포함해야 하며 ASCII 제어 문자는 포함할 수 없습니다. 설명에 마크다운 서식을 포함할 수 있으며, 이는 CloudWatch 콘솔에서 경보 **세부 정보** 탭에만 표시됩니다. 마크다운은 런북이나 기타 내부 리소스에 대한 링크를 추가하는 데 유용할 수 있습니다.
**작은 정보**  
 경보 이름에는 UTF-8 문자만 포함되어야 합니다. ASCII 제어 문자를 포함할 수 없습니다.

1.  **미리 보기 및 생성**에서 경보의 정보와 조건이 올바른지 확인하고 **경보 생성**을 선택합니다.

# 로그 이상 탐지기가 게시한 지표
<a name="LogsAnomalyDetection-Metrics"></a>

CloudWatch Logs는 **AnomalyCount** 지표를 CloudWatch 지표에 게시합니다. 이 지표는 `AWS/Logs` 네임스페이스에 게시됩니다.

**AnomalyCount** 지표는 다음 차원으로 게시됩니다.
+ **LogAnomalyDetector** - 이상 탐지기의 이름
+ **LogAnomalyPriority** - 이상의 우선순위 수준

# 를 사용하여 이상 탐지기 및 그 결과 암호화 AWS KMS
<a name="LogsAnomalyDetection-KMS"></a>

이상 탐지기 데이터는 항상 CloudWatch Logs에서 암호화됩니다. 기본적으로 CloudWatch Logs는 저장 데이터에 서버 측 암호화를 사용합니다. 또는이 암호화 AWS Key Management Service 에를 사용할 수 있습니다. 이렇게 하면 AWS KMS 키를 사용하여 암호화가 완료됩니다. AWS KMS 를 사용한 암호화는 KMS 키를 이상 탐지기와 연결하여 이상 탐지기 수준에서 활성화됩니다.

**중요**  
CloudWatch Logs는 대칭 KMS 키만 지원합니다. 비대칭 키를 사용하여 로그 그룹의 데이터를 암호화하지 마세요. 자세한 내용은 [대칭 및 비대칭 키 사용](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)을 참조하세요.

## 제한 사항
<a name="encryption-limits-anomaly"></a>
+ 다음 단계를 수행하려면 `kms:CreateKey`, `kms:GetKeyPolicy` 및 `kms:PutKeyPolicy` 권한이 있어야 합니다.
+ 로그 그룹에 키 연결 작업 또는 로그 그룹에서 키 연결 해제 작업이 적용되려면 최대 5분이 소요될 수 있습니다.
+ 연결된 키에 대한 CloudWatch Logs 액세스 권한을 취소하거나 연결된 KMS 키를 삭제한 경우에는 CloudWatch Logs에서 암호화된 데이터를 더 이상 검색할 수 없습니다.

### 1단계: AWS KMS 키 생성
<a name="create-cmk-anomaly"></a>

다음 [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html) 명령을 사용하여 KMS 키 생성:

```
aws kms create-key
```

이 명령의 출력 화면에는 키의 키 ID와 Amazon Resource Name(ARN)이 포함됩니다. 다음은 예제 출력입니다.

```
{
    "KeyMetadata": {
        "Origin": "AWS_KMS",
        "KeyId": "key-default-1",
        "Description": "",
        "KeyManager": "CUSTOMER",
        "Enabled": true,
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "CreationDate": 1478910250.94,
        "Arn": "arn:aws:kms:us-west-2:123456789012:key/key-default-1",
        "AWSAccountId": "123456789012",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ]
    }
}
```

### 2단계: KMS 키에 대한 권한 설정
<a name="cmk-permissions-ad"></a>

기본적으로 모든 AWS KMS 키는 프라이빗입니다. 리소스 소유자만 이를 사용하여 데이터를 암호화 및 해독할 수 있습니다. 그러나 리소스 소유자가 원한다면 다른 사용자 및 리소스에 KMS 키에 대한 액세스 권한을 부여할 수 있습니다. 이 단계에서는 키를 사용할 보안 주체 권한을 CloudWatch Logs 서비스에 제공합니다. 이 서비스 보안 주체는 KMS 키가 저장된 리전과 동일한 AWS 리전에 있어야 합니다.

가장 좋은 방법은 KMS 키 사용을 지정한 AWS 계정 또는 이상 탐지기로만 제한하는 것입니다.

먼저 다음 [get-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html) 명령을 사용하는 `policy.json`로 KMS 키에 대한 기본 정책을 저장합니다.

```
aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json
```

텍스트 편집기에서 `policy.json` 파일을 열고 다음 명령문 중 하나에서 굵은 글꼴로 표시된 섹션을 추가합니다. 기존 명령문과 새 명령문을 쉼표로 구분합니다. 이러한 문은 `Condition` 섹션을 사용하여 AWS KMS 키의 보안을 강화합니다. 자세한 내용은 [AWS KMS 키 및 암호화 컨텍스트](encrypt-log-data-kms.md#encrypt-log-data-kms-policy) 단원을 참조하십시오.

이 예제의 `Condition` 섹션에서는 AWS KMS 키 사용을 지정된 계정으로 제한하지만 모든 이상 탐지기에서 사용할 수 있습니다.

------
#### [ JSON ]

****  

```
    {
    "Version":"2012-10-17",		 	 	 
    "Id": "key-default-1",
    "Statement": [
        {
            "Sid": "EnableIAMUserPermissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "AllowCloudWatchLogsEncryption",
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.us-east-1.amazonaws.com"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-east-1:123456789012:anomaly-detector:*"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:anomaly-detector:*"
                }
            }
        },
        {
            "Sid": "AllowCloudWatchLogsDescribeKey",
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.us-east-1.amazonaws.com"
            },
            "Action": "kms:DescribeKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        },
        {
            "Sid": "AllowCloudWatchLogsReEncryption",
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.us-east-1.amazonaws.com"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws-crypto-ec:aws:logs:arn": "arn:aws:logs:us-east-1:123456789012:anomaly-detector:*"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:anomaly-detector:*"
                }
            }
        },
        {
            "Sid": "AllowCloudWatchLogsDescribeKeyForReEncryption",
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.us-east-1.amazonaws.com"
            },
            "Action": "kms:DescribeKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

마지막으로 아래 [put-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html) 명령을 사용하여 업데이트된 정책을 추가합니다.

```
aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json
```

### 3단계: KMS 키를 이상 탐지기와 연결
<a name="associate-cmk"></a>

콘솔에서 또는 AWS CLI 또는 APIs.

#### 4단계: 이상 탐지기에서 키 연결 해제
<a name="disassociate-cmk"></a>

키가 이상 탐지기와 연결된 후에는 키를 업데이트할 수 없습니다. 키를 제거하는 유일한 방법은 이상 탐지기를 삭제한 다음 다시 생성하는 것입니다.