

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

# CloudWatch 지표와 Amazon Managed Service for Prometheus의 통합
<a name="integrating-cw-firehose"></a>

모든 지표를 한 곳에 모으는 데 도움이 될 수 있습니다. Amazon Managed Service for Prometheus는 Amazon CloudWatch 지표를 자동으로 수집하지 않습니다. 그러나 Amazon Data Firehose 및 AWS Lambda를 사용하여 Amazon Managed Service for Prometheus로 CloudWatch 지표를 푸시할 수 있습니다.

이 섹션에서는 [Amazon CloudWatch 지표 스트림](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metric-Streams.html)을 계측하고 [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) 및 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)를 사용하여 Amazon Managed Service for Prometheus로 지표를 수집하는 방법을 설명합니다.

[AWS 클라우드 개발 키트(CDK)](https://aws.amazon.com/cdk/)를 사용하여 Firehose 전송 스트림, Lambda 및 Amazon S3 버킷을 생성하도록 스택을 설정하여 전체 시나리오를 시연합니다.

## 인프라
<a name="integ-cw-fh-infrastructure"></a>

가장 먼저 해야 할 일은 이 레시피의 인프라를 설정하는 것입니다.

CloudWatch 지표 스트림을 사용하면 스트리밍 지표 데이터를 HTTP 엔드포인트 또는 [Amazon S3 버킷](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)으로 전달할 수 있습니다.

인프라 설정은 다음 4단계로 구성됩니다.
+ 사전 조건 구성
+ Amazon Managed Service for Prometheus 워크스페이스 생성
+ 종속성 설치
+ 스택 배포

**사전 조건**
+ 사용자 환경에 AWS CLI가 [설치](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 및 [구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)되어야 합니다.
+ [AWS CDK Typescript](https://docs.aws.amazon.com/cdk/latest/guide/work-with-cdk-typescript.html)가 사용자 환경에 설치되어 있어야 합니다.
+ Node.js 및 Go가 사용자 환경에 설치되어 있어야 합니다.
+ [AWS 관찰성 CloudWatch 지표 내보내기 github 리포지토리](https://github.com/aws-observability/observability-best-practices/tree/main/sandbox/CWMetricStreamExporter)(`CWMetricsStreamExporter`)가 로컬 시스템에 복제되어야 합니다.

**Amazon Managed Service for Prometheus 워크스페이스를 생성하려면**

1. 이 레시피의 데모 애플리케이션은 Amazon Managed Service for Prometheus에서 실행됩니다. 다음 명령을 사용하여 Amazon Managed Service for Prometheus 워크스페이스를 생성합니다.

   ```
   aws amp create-workspace --alias prometheus-demo-recipe
   ```

1. 다음 명령으로 워크스페이스가 생성되었는지 확인하세요.

   ```
   aws amp list-workspaces
   ```

   Amazon Managed Service for Prometheus에 대한 자세한 내용은 [Amazon Managed Service for Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-getting-started.html) 사용 설명서를 참조하세요.

**종속성을 설치하려면**

1. ****종속성 설치

   `aws-o11y-recipes` 리포지토리의 루트에서 다음 명령을 사용하여 디렉터리를 `CWMetricStreamExporter`로 변경합니다.

   ```
   cd sandbox/CWMetricStreamExporter
   ```

   앞으로는 이 위치가 리포지토리의 루트로 간주될 것입니다.

1. 다음 명령을 사용하여 디렉터리를 `/cdk`로 변경합니다.

   ```
   cd cdk
   ```

1. 다음 명령을 실행하여 CDK 종속성을 설치합니다.

   ```
   npm install
   ```

1. 디렉터리를 리포지토리의 루트로 다시 변경한 후 다음 명령을 사용하여 디렉터리를 다시 `/lambda`로 변경합니다.

   ```
   cd lambda
   ```

1. `/lambda` 폴더에 들어가면 다음을 사용하여 Go 종속성을 설치합니다.

   ```
   go get
   ```

   이제 모든 종속성이 설치되었습니다.

**스택을 배포하려면**

1. 리포지토리의 루트에서 `config.yaml`을 열고 `{workspace}`를 새로 생성한 워크스페이스 ID와 Amazon Managed Service for Prometheus 워크스페이스가 있는 리전으로 대체하여 Amazon Managed Service for Prometheus 워크스페이스 URL을 수정합니다.

   예를 들어 다음을 수정합니다.

   ```
   AMP: 
       remote_write_url: "https://aps-workspaces.us-east-2.amazonaws.com/workspaces/{workspaceId}/api/v1/remote_write" 
       region: us-east-2
   ```

   Firehose 전송 스트림과 Amazon S3 버킷의 이름을 원하는 이름으로 변경합니다.

1. AWS CDK 및 Lambda 코드를 빌드하려면 리포지토리의 루트에서 다음 명령을 실행합니다.

   ```
   npm run build
   ```

   이 빌드 단계를 통해 Go Lambda 바이너리가 빌드되고 CDK를 CloudFormation에 배포할 수 있습니다.

1. 배포를 완료하려면 스택에 필요한 IAM 변경 사항을 검토하고 수락해야 합니다.

1. (선택 사항) 다음 명령을 실행하여 스택이 생성되었는지 확인할 수 있습니다.

   ```
   aws cloudformation list-stacks
   ```

   이름이 `CDK Stack`인 스택이 목록에 표시됩니다.

## Amazon CloudWatch 스트림 생성
<a name="integ-cw-fh-stream"></a>

이제 지표를 처리하는 Lambda 함수가 생성되었으므로 Amazon CloudWatch에서 지표 스트림을 생성할 수 있습니다.

**CloudWatch 지표 스트림을 생성하려면**

1. [https://console.aws.amazon.com/cloudwatch/home\#metric-streams:streamsList](https://console.aws.amazon.com/cloudwatch/home#metric-streams:streamsList)에서 CloudWatch 콘솔로 이동하고 **지표 스트림 생성**을 선택합니다.

1. 필요한 지표(모든 지표 또는 선택한 네임스페이스의 지표)를 선택합니다.

1. `Configuration`에서 **계정에서 소유한 기존 Firehose 선택**을 선택합니다.

1. CDK에서 이전에 만든 Firehose를 사용하게 됩니다. **Kinesis Data Firehose 전송 스트림 선택** 드롭다운에서 이전에 만든 스트림을 선택합니다. 이름은 `CdkStack-KinesisFirehoseStream123456AB-sample1234`와 같습니다.

1. 출력 형식을 **JSON**으로 변경합니다.

1. 지표 스트림에 의미 있는 이름을 지정합니다.

1. **지표 스트림 생성**을 선택합니다.

1. (선택 사항) Lambda 함수 간접 호출을 확인하려면 [Lambda 콘솔](https://console.aws.amazon.com/lambda/home)로 이동하고 함수 `KinesisMessageHandler`를 선택합니다. **모니터링** 탭과 **로그** 하위 탭을 선택하면 **최근 간접 호출** 아래에 트리거되는 Lambda 함수 항목이 표시됩니다.
**참고**  
**모니터링** 탭에 간접 호출이 표시되기 시작하는 데 최대 5분이 걸릴 수 있습니다.

이제 Amazon CloudWatch에서 Amazon Managed Service for Prometheus로 지표가 스트리밍됩니다.

## 정리
<a name="integ-cw-fh-cleanup"></a>

이 예제에서 사용된 리소스를 정리할 수 있습니다. 다음 절차에서는 정리하는 방법을 설명합니다. 이렇게 하면 생성한 지표 스트림이 중지됩니다.

**리소스를 정리하려면**

1. 먼저 다음 명령을 사용하여 CloudFormation 스택을 삭제합니다.

   ```
   cd cdk
   cdk destroy
   ```

1. Amazon Managed Service for Prometheus 워크스페이스를 제거합니다.

   ```
   aws amp delete-workspace --workspace-id \
       `aws amp list-workspaces --alias prometheus-sample-app --query 'workspaces[0].workspaceId' --output text`
   ```

1. 마지막으로, [Amazon CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch/home#metric-streams:streamsList)을 사용하여 Amazon CloudWatch 지표 스트림을 제거합니다.