

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

# 고가용성 데이터를 위해 Amazon Managed Service for Prometheus 설정
<a name="AMP-ingest-high-availability"></a>

Amazon Managed Service for Prometheus로 데이터를 전송하면 해당 리전의 AWS 가용성 영역 전체에 데이터가 자동으로 복제되며 확장성, 가용성 및 보안을 제공하는 호스트 클러스터에서 사용자에게 제공됩니다. 특정 설정에 따라 고가용성 유사 시 대기를 더 추가할 수 있습니다. 설정에 고가용성 안전 기능을 추가하는 두 가지 일반적인 방법은 다음과 같습니다.
+ 동일한 데이터를 포함하는 컨테이너 또는 인스턴스가 여러 개 있는 경우, 해당 데이터를 Amazon Managed Service for Prometheus로 전송하면 데이터의 중복을 자동으로 제거할 수 있습니다. 이렇게 하면 데이터가 Amazon Managed Service for Prometheus 워크스페이스로 전송되도록 할 수 있습니다.

  고가용성 데이터 중복 제거에 대한 자세한 내용은 [Amazon Managed Service for Prometheus로 전송된 고가용성 지표 중복 제거](AMP-ingest-dedupe.md) 섹션을 참조하세요.
+  AWS 리전을 사용할 수 없는 경우에도 데이터에 액세스할 수 있도록 하려면 지표를 다른 리전의 또 다른 WorkSpace로 보낼 수 있습니다.

  지표 데이터를 여러 워크스페이스로 보내는 방법에 대한 자세한 내용은 [리전 간 워크스페이스를 사용하여 Amazon Managed Service for Prometheus에서 고가용성 추가](AMP-send-to-multiple-workspaces.md) 섹션을 참조하세요.

**Topics**
+ [Amazon Managed Service for Prometheus로 전송된 고가용성 지표 중복 제거](AMP-ingest-dedupe.md)
+ [Prometheus를 사용하여 Amazon Managed Service for Prometheus로 고가용성 데이터 전송](Send-high-availability-data.md)
+ [Prometheus Operator Helm 차트를 사용하여 Amazon Managed Service for Prometheus로 고가용성 데이터 설정](Send-high-availability-data-operator.md)
+ [AWS Distro for OpenTelemetry를 사용하여 Amazon Managed Service for Prometheus로 고가용성 데이터 전송](Send-high-availability-data-ADOT.md)
+ [Prometheus 커뮤니티 Helm 차트를 사용하여 Amazon Managed Service for Prometheus로 고가용성 데이터 전송](Send-high-availability-prom-community.md)
+ [Amazon Managed Service for Prometheus의 고가용성 구성에 대한 일반적인 질문과 답변](HA_FAQ.md)
+ [리전 간 워크스페이스를 사용하여 Amazon Managed Service for Prometheus에서 고가용성 추가](AMP-send-to-multiple-workspaces.md)

# Amazon Managed Service for Prometheus로 전송된 고가용성 지표 중복 제거
<a name="AMP-ingest-dedupe"></a>

여러 Prometheus **에이전트(에이전트 모드에서 실행되는 Prometheus 인스턴스)에서 Amazon Managed Service for Prometheus 워크스페이스로 데이터를 보낼 수 있습니다. 이러한 인스턴스 중 일부가 동일한 지표를 기록하고 전송하는 경우 데이터의 가용성이 높아집니다(에이전트 중 하나가 데이터 전송을 중단하더라도 Amazon Managed Service for Prometheus 워크스페이스는 다른 인스턴스에서 데이터를 계속 수신함). 하지만 지표가 여러 번 표시되지 않고 데이터 모으기 및 저장 요금이 여러 번 청구되지 않도록 Amazon Managed Service for Prometheus 워크스페이스에서 지표가 자동으로 중복 제거되도록 할 수 있습니다.

Amazon Managed Service for Prometheus에서 여러 Prometheus 에이전트의 데이터가 자동으로 중복 제거되도록 하려면 중복 데이터를 보내는 에이전트 세트에 단일 **클러스터 이름을 지정하고 각 인스턴스에 **복제본 이름을 지정합니다. 클러스터 이름은 인스턴스를 공유 데이터가 있는 것으로 식별하며, 복제본 이름은 Amazon Managed Service for Prometheus가 각 지표의 소스를 식별할 수 있도록 합니다. 최종 저장된 지표에는 클러스터 레이블이 포함되지만 복제본은 포함되지 않으므로 지표는 단일 소스에서 가져온 것으로 나타납니다.

**참고**  
특정 버전의 Kubernetes(1.28 및 1.29)는 `cluster` 레이블이 있는 자체 지표를 내보낼 수 있습니다. 이로 인해 Amazon Managed Service for Prometheus 중복 제거에 문제가 발생할 수 있습니다. 자세한 내용은 [고가용성 FAQ](HA_FAQ.md#HA_FAQ_cluster-label)를 참조하세요.

다음 주제에서는 데이터를 전송하고, `cluster` 및 `__replica__` 레이블을 포함하여 Amazon Managed Service for Prometheus에서 자동으로 데이터를 중복 제거하도록 하는 방법을 보여 줍니다.

**중요**  
중복 제거를 설정하지 않으면 Amazon Managed Service for Prometheus로 전송되는 모든 데이터 샘플에 대해 요금이 부과됩니다. 이러한 데이터 샘플에는 중복 샘플이 포함되어 있습니다.

# Prometheus를 사용하여 Amazon Managed Service for Prometheus로 고가용성 데이터 전송
<a name="Send-high-availability-data"></a>

Prometheus를 사용하여 고가용성 구성을 설정하려면 Amazon Managed Service for Prometheus에서 식별할 수 있도록 고가용성 그룹의 모든 인스턴스에 외부 레이블을 적용해야 합니다. Prometheus 인스턴스 에이전트를 고가용성 그룹의 일부로 식별하려면 `cluster` 레이블을 사용합니다. 그룹 내 각 복제본을 개별적으로 식별하려면 `__replica__` 레이블을 사용합니다. 중복 제거가 제대로 작동하려면 `__replica__` 및 `cluster` 레이블을 모두 적용해야 합니다.

**참고**  
`__replica__` 레이블은 단어 `replica` 앞뒤에 두 개의 밑줄 기호를 사용하여 서식이 지정되어 있습니다.

**예제: 코드 조각**

다음 코드 조각에서 `cluster` 레이블은 Prometheus 인스턴스 에이전트 `prom-team1`을 식별하고 `_replica_` 레이블은 복제본 `replica1` 및 `replica2`를 식별합니다.

```
cluster: prom-team1
__replica__: replica1
```

```
cluster: prom-team1
__replica__: replica2
```

Amazon Managed Service for Prometheus는 이러한 레이블과 함께 고가용성 복제본의 데이터 샘플을 저장하므로 샘플이 승인되면 `replica` 레이블이 제거됩니다. 즉, 현재 시리즈에 대해 복제본당 시리즈가 아닌 1:1 시리즈 매핑만 사용할 수 있습니다. `cluster` 레이블은 유지됩니다.

**참고**  
특정 버전의 Kubernetes(1.28 및 1.29)는 `cluster` 레이블이 있는 자체 지표를 내보낼 수 있습니다. 이로 인해 Amazon Managed Service for Prometheus 중복 제거에 문제가 발생할 수 있습니다. 자세한 내용은 [고가용성 FAQ](HA_FAQ.md#HA_FAQ_cluster-label)를 참조하세요.

# Prometheus Operator Helm 차트를 사용하여 Amazon Managed Service for Prometheus로 고가용성 데이터 설정
<a name="Send-high-availability-data-operator"></a>

Helm에서 Prometheus Operator를 사용하여 고가용성 구성을 설정하려면 Amazon Managed Service for Prometheus에서 식별할 수 있도록 고가용성 그룹의 모든 인스턴스에 외부 레이블을 적용해야 합니다. 또한 Prometheus Operator 차트 Helm에서도 `replicaExternalLabelName` 및 `externalLabels` 속성을 설정해야 합니다.

**예제: YAML 헤더**

다음 YAML 헤더에서는 Prometheus 인스턴스 에이전트를 고가용성 그룹의 일부로 식별하기 위해 `externalLabel`에 `cluster`가 추가되고 `replicaExternalLabels`는 그룹 내의 각 복제본을 식별합니다.

```
replicaExternalLabelName: __replica__
externalLabels:
cluster: prom-dev
```

**참고**  
특정 버전의 Kubernetes(1.28 및 1.29)는 `cluster` 레이블이 있는 자체 지표를 내보낼 수 있습니다. 이로 인해 Amazon Managed Service for Prometheus 중복 제거에 문제가 발생할 수 있습니다. 자세한 내용은 [고가용성 FAQ](HA_FAQ.md#HA_FAQ_cluster-label)를 참조하세요.

# AWS Distro for OpenTelemetry를 사용하여 Amazon Managed Service for Prometheus로 고가용성 데이터 전송
<a name="Send-high-availability-data-ADOT"></a>

AWS Distro for OpenTelemetry(ADOT)는 OpenTelemetry 프로젝트의 안전하고 프로덕션에 바로 사용할 수 있는 배포판입니다. ADOT는 소스 API, 라이브러리 및 에이전트를 제공하므로 애플리케이션 모니터링을 위한 분산 추적 및 지표를 수집할 수 있습니다. ADOT에 대한 자세한 내용은 [AWS Distro for Open Telemetry 정보를](https://aws-otel.github.io/about) 참조하세요.

고가용성 구성으로 ADOT를 설정하려면 ADOT 수집기 컨테이너 이미지를 구성하고 외부 레이블 `cluster` 및를 AWS Prometheus 원격 쓰기 내보내기`__replica__`에 적용해야 합니다. 이 내보내기는 스크래핑한 지표를 `remote_write` 엔드포인트를 통해 Amazon Managed Service for Prometheus WorkSpace로 보냅니다. 원격 쓰기 내보내기에서 이러한 레이블을 설정하면 중복 복제본이 실행되는 동안 중복 지표가 유지되는 것을 방지할 수 있습니다. AWS Prometheus 원격 쓰기 내보내기에 대한 자세한 내용은 [Amazon Managed Service for Prometheus용 Prometheus 원격 쓰기 내보내기 시작하기를 참조하세요](https://aws-otel.github.io/docs/getting-started/prometheus-remote-write-exporter).

**참고**  
특정 버전의 Kubernetes(1.28 및 1.29)는 `cluster` 레이블이 있는 자체 지표를 내보낼 수 있습니다. 이로 인해 Amazon Managed Service for Prometheus 중복 제거에 문제가 발생할 수 있습니다. 자세한 내용은 [고가용성 FAQ](HA_FAQ.md#HA_FAQ_cluster-label)를 참조하세요.

# Prometheus 커뮤니티 Helm 차트를 사용하여 Amazon Managed Service for Prometheus로 고가용성 데이터 전송
<a name="Send-high-availability-prom-community"></a>

Prometheus 커뮤니티 Helm 차트를 사용하여 고가용성 구성을 설정하려면 Amazon Managed Service for Prometheus에서 식별할 수 있도록 고가용성 그룹의 모든 인스턴스에 외부 레이블을 적용해야 합니다. 다음은 Prometheus 커뮤니티 차트 Helm에서 Prometheus의 단일 인스턴스에 `external_labels`를 추가하는 방법의 예입니다.

```
server:
global:
  external_labels:
      cluster: monitoring-cluster
      __replica__: replica-1
```

**참고**  
Prometheus 커뮤니티 Helm 차트에서는 컨트롤러 그룹에서 직접 복제본 수를 늘릴 때 복제본 값을 동적으로 설정할 수 없으므로 여러 복제본을 원하는 경우 다른 복제본 값을 사용하여 차트를 여러 번 배포해야 합니다. `replica` 레이블이 자동으로 설정되도록 하려면 prometheus-operator Helm 차트를 사용하세요.

**참고**  
특정 버전의 Kubernetes(1.28 및 1.29)는 `cluster` 레이블이 있는 자체 지표를 내보낼 수 있습니다. 이로 인해 Amazon Managed Service for Prometheus 중복 제거에 문제가 발생할 수 있습니다. 자세한 내용은 [고가용성 FAQ](HA_FAQ.md#HA_FAQ_cluster-label)를 참조하세요.

# Amazon Managed Service for Prometheus의 고가용성 구성에 대한 일반적인 질문과 답변
<a name="HA_FAQ"></a>

## 샘플 포인트를 추적하려면 *\$1\$1replica\$1\$1* 값을 다른 레이블에 포함해야 하나요?
<a name="HA_FAQ_replica-label"></a>

 고가용성 설정에서 Amazon Managed Service for Prometheus는 Prometheus 인스턴스 클러스터의 리더를 선택하여 데이터 샘플이 중복되지 않도록 합니다. 리더 복제본이 30초 동안 데이터 샘플 전송을 중단하면 Amazon Managed Service for Prometheus는 자동으로 다른 Prometheus 인스턴스를 리더 복제본으로 만들고 새 리더로부터 누락된 데이터를 비롯한 데이터를 수집합니다. 따라서 대답은 '아니요'로, 이 작업은 권장되지 않습니다.  이렇게 하면 다음과 같은 문제가 발생할 수 있습니다.
+  새 리더를 선택하는 기간 동안 **PromQL에서** `count`를 쿼리하면 예상보다 높은 값이 반환될 수 있습니다.
+  새 리더를 선택하는 기간 동안 `active series` 수가 증가하여 `active series limits`에 도달합니다. 자세한 내용은 [AMP 할당량](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP_quotas.html)을 참조하세요.

## Kubernetes에 자체 *클러스터* 레이블이 있는 것으로 보이며 내 지표의 중복을 제거하지 않습니다. 해결하려면 어떻게 해야 합니까?
<a name="HA_FAQ_cluster-label"></a>

Kubernetes 1.28에 `cluster` 레이블이 있는 새로운 지표 `apiserver_storage_size_bytes`가 도입되었습니다. 이로 인해 `cluster` 레이블에 따라 Amazon Managed Service for Prometheus에서 중복 제거 문제가 발생할 수 있습니다. Kubernetes 1.3에서는 레이블의 이름이 `storage-cluster_id`로 변경됩니다(이름은 이후 패치인 1.28 및 1.29에서도 변경됩니다). 클러스터가 `cluster` 레이블이 있는 이 지표를 내보내는 경우 Amazon Managed Service for Prometheus는 연결된 시계열을 중복 제거할 수 없습니다. 이 문제를 방지하려면 Kubernetes 클러스터를 최신 패치 버전으로 업그레이드하는 것이 좋습니다. 또는 Amazon Managed Service for Prometheus에 수집하기 전에 `apiserver_storage_size_bytes` 지표의 `cluster` 레이블을 다시 지정할 수 있습니다.

**참고**  
Kubernetes 변경에 대한 자세한 내용은 *Kubernetes GitHub 프로젝트*의 [apiserver\$1storage\$1size\$1bytes 지표에 대한 레이블 클러스터 이름을 storage\$1cluster\$1id로 변경](https://github.com/kubernetes/kubernetes/pull/124283)을 참조하세요.

# 리전 간 워크스페이스를 사용하여 Amazon Managed Service for Prometheus에서 고가용성 추가
<a name="AMP-send-to-multiple-workspaces"></a>

데이터에 리전 간 가용성을 추가하려면 여러 AWS 리전의 여러 워크스페이스로 지표를 보낼 수 있습니다. Prometheus는 다중 작성자와 교차 리전 쓰기를 모두 지원합니다.

다음 예제는 에이전트 모드에서 실행되는 Prometheus 서버가 Helm을 사용하여 서로 다른 리전의 두 WorkSpace에 지표를 보내도록 설정하는 방법을 보여 줍니다.

```
extensions:
      sigv4auth:
        service: "aps"
     
    receivers:
      prometheus:
        config:
          scrape_configs:
            - job_name: 'kubernetes-kubelet'
              scheme: https
              tls_config:
                ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
                insecure_skip_verify: true
              bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
              kubernetes_sd_configs:
              - role: node
              relabel_configs:
              - action: labelmap
                regex: __meta_kubernetes_node_label_(.+)
              - target_label: __address__
                replacement: kubernetes.default.svc.cluster.local:443
              - source_labels: [__meta_kubernetes_node_name]
                regex: (.+)
                target_label: __metrics_path__
                replacement: /api/v1/nodes/$${1}/proxy/metrics
     
    exporters:
      prometheusremotewrite/one:
        endpoint: "https://aps-workspaces.workspace_1_region.amazonaws.com/workspaces/ws-workspace_1_id/api/v1/remote_write"
        auth:
          authenticator: sigv4auth
      prometheusremotewrite/two:
        endpoint: "https://aps-workspaces.workspace_2_region.amazonaws.com/workspaces/ws-workspace_2_id/api/v1/remote_write"
        auth:
          authenticator: sigv4auth
     
    service:
      extensions: [sigv4auth]
      pipelines:
        metrics/one:
          receivers: [prometheus]
          exporters: [prometheusremotewrite/one]
        metrics/two:
          receivers: [prometheus]
          exporters: [prometheusremotewrite/two]
```