

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

# EC2의 Kubernetes에 있는 기존 Prometheus 서버에서의 수집 설정
<a name="AMP-onboard-ingest-metrics-existing-Prometheus"></a>

Amazon Managed Service for Prometheus는 Amazon EKS를 실행하는 클러스터와 Amazon EC2에서 실행되는 자체 관리형 Kubernetes 클러스터의 Prometheus 서버에서 지표 수집을 지원합니다. 이 섹션의 세부 지침은 Amazon EKS 클러스터의 Prometheus 서버를 위한 것입니다. Amazon EC2의 자체 관리형 Kubernetes 클러스터의 경우 서비스 계정의 OIDC 공급자 및 IAM 역할을 직접 설정해야 한다는 점을 제외하고 수집 설정 단계는 동일합니다.

이 섹션의 지침에서는 Helm을 Kubernetes 패키지 관리자로 사용합니다.

**Topics**
+ [1단계: 서비스 계정의 IAM 역할 설정](#AMP-onboard-existing-Prometheus-IRSA)
+ [2단계: Helm을 사용하여 기존 Prometheus 서버 업그레이드](#AMP-onboard-ingest-metrics-existing-remotewrite)

## 1단계: 서비스 계정의 IAM 역할 설정
<a name="AMP-onboard-existing-Prometheus-IRSA"></a>

문서화하는 온보딩 방법에 대해서는 Prometheus 서버가 실행되는 Amazon EKS 클러스터에서 서비스 계정에 대한 IAM 역할을 사용해야 합니다. 이러한 역할을 **서비스 역할이라고도 합니다.

서비스 역할을 사용하면 IAM 역할을 Kubernetes 서비스 계정에 연결할 수 있습니다. 그러면이 서비스 계정은 해당 서비스 계정을 사용하는 모든 포드의 컨테이너에 AWS 권한을 제공할 수 있습니다. 자세한 내용은 [서비스 계정에 대한 IAM 역할](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)을 참조하세요.

이러한 역할을 아직 설정하지 않은 경우 [Amazon EKS 클러스터의 지표 수집을 위한 서비스 역할 설정](set-up-irsa.md#set-up-irsa-ingest)의 지침에 따라 역할을 설정하세요.

## 2단계: Helm을 사용하여 기존 Prometheus 서버 업그레이드
<a name="AMP-onboard-ingest-metrics-existing-remotewrite"></a>

이 섹션의 지침에는 Prometheus 서버가 Amazon Managed Service for Prometheus WorkSpace에 원격 쓰기를 수행할 수 있도록 인증하고 권한을 부여하기 위한 원격 쓰기 및 sigv4 설정 방법이 포함되어 있습니다.

### Prometheus 버전 2.26.0 이상 사용
<a name="AMP-onboard-ingest-metrics-Helm13"></a>

버전 2.26.0 이상의 Prometheus 서버 이미지에서 차트 Helm을 사용하는 경우 다음 단계를 따르세요.

**차트 Helm을 사용하여 Prometheus 서버에서 원격 쓰기를 설정하려면**

1. Helm 구성 파일에 새 원격 쓰기 섹션을 생성합니다.
   + `${IAM_PROXY_PROMETHEUS_ROLE_ARN}`을 [1단계: 서비스 계정의 IAM 역할 설정](#AMP-onboard-existing-Prometheus-IRSA)에서 생성한 **amp-iamproxy-ingest-role**의 ARN으로 바꿉니다. 역할 ARN의 형식은 `arn:aws:iam::your account ID:role/amp-iamproxy-ingest-role`입니다.
   + `${WORKSPACE_ID}`를 Amazon Managed Service for Prometheus WorkSpace ID로 바꿉니다.
   + `${REGION}`을 Amazon Managed Service for Prometheus WorkSpace의 리전(예: `us-west-2`)으로 바꿉니다.

   ```
   ## The following is a set of default values for prometheus server helm chart which enable remoteWrite to AMP
       ## For the rest of prometheus helm chart values see: https://github.com/prometheus-community/helm-charts/blob/main/charts/prometheus/values.yaml
       ##
       serviceAccounts:
         server:
           name: amp-iamproxy-ingest-service-account
           annotations: 
             eks.amazonaws.com/role-arn: ${IAM_PROXY_PROMETHEUS_ROLE_ARN}
       server:
         remoteWrite:
           - url: https://aps-workspaces.${REGION}.amazonaws.com/workspaces/${WORKSPACE_ID}/api/v1/remote_write
             sigv4:
               region: ${REGION}
             queue_config:
               max_samples_per_send: 1000
               max_shards: 200
               capacity: 2500
   ```

1. Helm을 사용하여 기존 Prometheus 서버 구성을 업데이트합니다.
   + `prometheus-chart-name`을 Prometheus 릴리스 이름으로 바꿉니다.
   + `prometheus-namespace`를 Prometheus 서버가 설치된 Kubernetes 네임스페이스로 바꿉니다.
   + `my_prometheus_values_yaml`을 Helm 구성 파일의 경로로 바꿉니다.
   + `current_helm_chart_version`을 Prometheus 서버 차트 Helm의 현재 버전으로 바꿉니다. [helm list](https://helm.sh/docs/helm/helm_list/) 명령을 사용하여 현재 차트 버전을 찾을 수 있습니다.

   ```
   helm upgrade prometheus-chart-name prometheus-community/prometheus \
          -n prometheus-namespace \
          -f my_prometheus_values_yaml \
          --version current_helm_chart_version
   ```

### 이전 버전의 Prometheus 사용
<a name="AMP-onboard-ingest-metrics-Helm8"></a>

2.26.0 이전의 Prometheus 버전을 사용하는 경우 다음 단계를 따르세요. 이전 버전의 Prometheus는 기본적으로 AWS 서명 버전 4 서명 프로세스(AWS SigV4)를 지원하지 않으므로이 단계에서는 사이드카 접근 방식을 사용합니다.

이 지침에서는 Helm을 사용하여 Prometheus를 배포한다고 가정합니다.

**Prometheus 서버에서 원격 쓰기를 설정하려면**

1. Prometheus 서버에서 새 원격 쓰기 구성을 생성합니다. 먼저 새 업데이트 파일을 생성합니다. `amp_ingest_override_values.yaml` 파일을 호출합니다.

   YAML 파일에 다음 값을 추가합니다.

   ```
   serviceAccounts:
           server:
               name: "amp-iamproxy-ingest-service-account"
               annotations:
                   eks.amazonaws.com/role-arn: "${SERVICE_ACCOUNT_IAM_INGEST_ROLE_ARN}"
       server:
           sidecarContainers:
               - name: aws-sigv4-proxy-sidecar
                 image: public.ecr.aws/aws-observability/aws-sigv4-proxy:1.0
                 args:
                 - --name
                 - aps
                 - --region
                 - ${REGION}
                 - --host
                 - aps-workspaces.${REGION}.amazonaws.com
                 - --port
                 - :8005
                 ports:
                 - name: aws-sigv4-proxy
                   containerPort: 8005
           statefulSet:
               enabled: "true"
           remoteWrite:
               - url: http://localhost:8005/workspaces/${WORKSPACE_ID}/api/v1/remote_write
   ```

   `${REGION}`을 Amazon Managed Service for Prometheus 워크스페이스의 리전으로 바꿉니다.

   `${SERVICE_ACCOUNT_IAM_INGEST_ROLE_ARN}`을 [1단계: 서비스 계정의 IAM 역할 설정](#AMP-onboard-existing-Prometheus-IRSA)에서 생성한 **amp-iamproxy-ingest-role**의 ARN으로 바꿉니다. 역할 ARN의 형식은 `arn:aws:iam::your account ID:role/amp-iamproxy-ingest-role`입니다.

   `${WORKSPACE_ID}`를 워크스페이스 ID로 바꿉니다.

1. Prometheus 차트 Helm을 업그레이드합니다. 먼저 다음 명령을 입력하여 차트 Helm 이름을 찾습니다. 이 명령의 출력에서 이름에 `prometheus`가 포함된 차트를 찾아보세요.

   ```
   helm ls --all-namespaces
   ```

   이어서 다음 명령을 입력합니다.

   ```
   helm upgrade --install prometheus-helm-chart-name prometheus-community/prometheus -n prometheus-namespace -f ./amp_ingest_override_values.yaml
   ```

   *prometheus-helm-chart-name*을 이전 명령에서 반환된 Prometheus 차트 Helm의 이름으로 바꿉니다. *prometheus-namespace*를 네임스페이스의 이름으로 바꿉니다.

#### 차트 Helm 다운로드
<a name="AMP-onboard-ingest-downloadHelm"></a>

차트 Helm을 아직 로컬로 다운로드하지 않은 경우, 다음 명령을 사용하여 다운로드할 수 있습니다.

```
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm pull prometheus-community/prometheus --untar
```