

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

# 원격 쓰기를 사용한 Amazon EC2 인스턴스에서의 지표 수집 설정
<a name="AMP-onboard-ingest-metrics-remote-write-EC2"></a>

이 섹션에서는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 원격 쓰기로 Prometheus 서버를 실행하는 방법을 설명합니다. Go로 작성된 데모 애플리케이션에서 지표를 수집한 후 Amazon Managed Service for Prometheus 워크스페이스로 보내는 방법을 설명합니다.

## 사전 조건
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-prereq"></a>

**중요**  
시작하기 전에 Prometheus v2.26 이상을 설치해야 합니다. Prometheus, Amazon EC2 및 Amazon Managed Service for Prometheus에 대해 잘 알고 있다고 가정합니다. Prometheus 설치 방법에 대한 자세한 내용은 Prometheus 웹 사이트에서 [시작하기](https://prometheus.io/docs/prometheus/latest/getting_started/)를 참조하세요.

Amazon EC2 또는 Amazon Managed Service for Prometheus에 익숙하지 않은 경우 먼저 다음 섹션을 읽는 것이 좋습니다.
+ [Amazon Elastic Compute Cloud란?](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)
+ [Amazon Managed Service for Prometheus란?](https://docs.aws.amazon.com/prometheus/latest/userguide/what-is-Amazon-Managed-Service-Prometheus.html)

## Amazon EC2의 IAM 역할 생성
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-IAM"></a>

지표를 스트리밍하려면 먼저 AWS 관리형 정책 **AmazonPrometheusRemoteWriteAccess**를 사용하여 IAM 역할을 생성해야 합니다. 그런 다음, 역할과 함께 인스턴스를 시작하고 지표를 Amazon Managed Service for Prometheus WorkSpace로 스트리밍할 수 있습니다.

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

1. 탐색 창에서 **역할**을 선택한 후 **역할 생성**을 선택합니다.

1. 신뢰할 수 있는 엔터티 유형에서 **AWS 서비스**를 선택합니다. 사용 사례로 **EC2**를 선택합니다. **다음: 권한**을 선택합니다.

1. 검색 창에 **AmazonPrometheusRemoteWriteAccess**를 입력합니다. **정책 이름**으로 **AmazonPrometheusRemoteWriteAccess**를 선택한 다음, **정책 연결**을 선택합니다. **다음: 태그**를 선택합니다.

1. (선택 사항) IAM 역할을 위한 IAM 태그를 생성합니다. **다음: 검토**를 선택합니다.

1. 역할의 이름을 입력합니다. **정책 생성**을 선택합니다.

## Amazon EC2 인스턴스 시작하기
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-instance"></a>

Amazon EC2 인스턴스를 시작하려면 **Linux 인스턴스용 Amazon Elastic Compute Cloud 사용 설명서에서 [인스턴스 시작](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#launch-instance-with-role)의 지침을 따르세요.

## 데모 애플리케이션 실행
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-demo"></a>

IAM 역할을 생성하고 역할이 있는 EC2 인스턴스를 시작한 후 데모 애플리케이션을 실행하여 작동하는지 확인할 수 있습니다.

**데모 애플리케이션 및 테스트 지표를 실행하려면**

1. 다음 템플릿을 사용하여 `main.go`라는 Go 파일을 생성합니다.

   ```
   package main
   
   import (
       "github.com/prometheus/client_golang/prometheus/promhttp"
       "net/http"
   )
   
   func main() {
       http.Handle("/metrics", promhttp.Handler())
   
       http.ListenAndServe(":8000", nil)
   }
   ```

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

   ```
   sudo yum update -y
   sudo yum install -y golang
   go get github.com/prometheus/client_golang/prometheus/promhttp
   ```

1. 데모 애플리케이션을 실행합니다.

   ```
   go run main.go
   ```

   데모 애플리케이션은 포트 8000에서 실행되어야 하며 노출된 모든 Prometheus 지표를 표시합니다. 다음은 이러한 지표의 예입니다.

   ```
   curl -s http://localhost:8000/metrics 
   ...
   process_max_fds 4096# HELP process_open_fds Number of open file descriptors.# TYPE process_open_fds gauge
   process_open_fds 10# HELP process_resident_memory_bytes Resident memory size in bytes.# TYPE process_resident_memory_bytes gauge
   process_resident_memory_bytes 1.0657792e+07# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.# TYPE process_start_time_seconds gauge
   process_start_time_seconds 1.61131955899e+09# HELP process_virtual_memory_bytes Virtual memory size in bytes.# TYPE process_virtual_memory_bytes gauge
   process_virtual_memory_bytes 7.77281536e+08# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.# TYPE process_virtual_memory_max_bytes gauge
   process_virtual_memory_max_bytes -1# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.# TYPE promhttp_metric_handler_requests_in_flight gauge
   promhttp_metric_handler_requests_in_flight 1# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.# TYPE promhttp_metric_handler_requests_total counter
   promhttp_metric_handler_requests_total{code="200"} 1
   promhttp_metric_handler_requests_total{code="500"} 0
   promhttp_metric_handler_requests_total{code="503"} 0
   ```

## Amazon Managed Service for Prometheus WorkSpace 생성
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-workspace"></a>

Amazon Managed Service for Prometheus WorkSpace를 생성하려면 Amazon Managed Service for Prometheus 사용 설명서에서 [WorkSpace 생성](AMP-create-workspace.md)의 지침을 따르세요.

## Prometheus 서버 실행
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-server"></a>

1. 다음 예제 YAML 파일을 템플릿으로 사용하여 `prometheus.yaml`이라는 새 파일을 생성합니다. `url`의 경우 *my-region*을 리전 값으로 바꾸고 *my-workspace-id*를 Amazon Managed Service for Prometheus에서 생성한 워크스페이스 ID로 바꿉니다. `region`의 경우 *my-region*을 리전 값으로 바꿉니다.

   **예제: YAML 파일**

   ```
   global:
     scrape_interval: 15s
     external_labels:
       monitor: 'prometheus'
   
   scrape_configs:
     - job_name: 'prometheus'
       static_configs:
         - targets: ['localhost:8000']
   
   remote_write:
     -
       url: https://aps-workspaces.my-region.amazonaws.com/workspaces/my-workspace-id/api/v1/remote_write
       queue_config:
           max_samples_per_send: 1000
           max_shards: 200
           capacity: 2500
       sigv4:
            region: my-region
   ```

1. Prometheus 서버를 실행하여 데모 애플리케이션의 지표를 Amazon Managed Service for Prometheus 워크스페이스로 전송합니다.

   ```
   prometheus --config.file=prometheus.yaml
   ```

이제 Prometheus 서버가 데모 애플리케이션의 지표를 Amazon Managed Service for Prometheus WorkSpace로 전송합니다.