

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

# Amazon Managed Service for Prometheus를 사용하여 Spark 지표 모니터링
<a name="monitor-with-prometheus"></a>

Amazon EMR 릴리스 7.1.0 이상에서는 Amazon Managed Service for Prometheus에 EMR Serverless를 통합하여 EMR Serverless 작업 및 애플리케이션에 대한 Apache Spark 지표를 수집할 수 있습니다. 이 통합은 콘솔, AWS EMR Serverless API 또는를 사용하여 작업을 제출하거나 애플리케이션을 생성할 때 사용할 수 있습니다 AWS CLI.

## 사전 조건
<a name="monitoring-with-prometheus-prereqs"></a>

Amazon Managed Service for Prometheus에 Spark 지표를 전달하려면 먼저 다음 사전 조건을 완료합니다.
+ [Amazon Managed Service for Prometheus WorkSpace를 생성합니다.](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html) 이 Workspace는 수집 엔드포인트 역할을 합니다. **엔드포인트 - 원격 쓰기 URL**에 표시되는 URL을 기록합니다. EMR Serverless 애플리케이션을 생성하는 경우 URL을 지정해야 합니다.
+ 모니터링 목적으로 Amazon Managed Service for Prometheus에 작업에 대한 액세스 권한을 부여하려면 작업 실행 역할에 다음 정책을 추가합니다.

  ```
  {
      "Sid": "AccessToPrometheus",
      "Effect": "Allow",
      "Action": ["aps:RemoteWrite"],
      "Resource": "arn:aws:aps:{{<AWS_REGION>}}:{{<AWS_ACCOUNT_ID>}}:workspace/{{<WORKSPACE_ID>}}"
  }
  ```

## 설정
<a name="monitoring-with-prometheus-setup"></a>

**AWS 콘솔을 사용하여 Amazon Managed Service for Prometheus와 통합된 애플리케이션을 생성하려면**

1. 애플리케이션을 생성하려면 [Amazon EMR Serverless 시작하기](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html                             )를 참조하세요.

1. 애플리케이션을 생성하는 동안 **사용자 지정 설정 사용**을 선택한 다음, 구성하려는 필드에 정보를 지정하여 애플리케이션을 구성합니다.

1. **애플리케이션 로그 및 지표**에서 **Amazon Managed Service for Prometheus에 엔진 지표 전달**을 선택한 다음, 원격 쓰기 URL을 지정합니다.

1. 원하는 다른 구성 설정을 지정한 다음, **애플리케이션 생성 및 시작**을 선택합니다.

** AWS CLI 또는 EMR Serverless API 사용**

 AWS CLI 또는 `create-application` `start-job-run` 명령을 실행할 때 또는 EMR Serverless API를 사용하여 EMR Serverless 애플리케이션을 Amazon Managed Service for Prometheus와 통합할 수도 있습니다.

------
#### [ create-application ]

```
aws emr-serverless create-application \
--release-label emr-7.1.0 \
--type "SPARK" \
--monitoring-configuration '{ 
    "prometheusMonitoringConfiguration": {
        "remoteWriteUrl": "https://aps-workspaces.{{<AWS_REGION>}}.amazonaws.com/workspaces/{{<WORKSPACE_ID>}}/api/v1/remote_write"
    }
}'
```

------
#### [ start-job-run ]

```
aws emr-serverless start-job-run \
--application-id {{<APPPLICATION_ID>}} \
--execution-role-arn {{<JOB_EXECUTION_ROLE>}} \
--job-driver '{
    "sparkSubmit": {
        "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py",
        "entryPointArguments": ["10000"],
        "sparkSubmitParameters": "--conf spark.dynamicAllocation.maxExecutors=10"
    }
}' \
--configuration-overrides '{
     "monitoringConfiguration": {
        "prometheusMonitoringConfiguration": {
            "remoteWriteUrl": "https://aps-workspaces.{{<AWS_REGION>}}.amazonaws.com/workspaces/{{<WORKSPACE_ID>}}/api/v1/remote_write"
        }
    }
}'
```

------

명령에 `prometheusMonitoringConfiguration`을 포함하면 EMR Serverless가 Spark 지표를 수집하고 Amazon Managed Service for Prometheus의 `remoteWriteUrl` 엔드포인트에 쓰는 에이전트와 함께 Spark 작업을 실행해야 함을 나타냅니다. 그런 다음, 시각화, 알림 및 분석을 위해 Amazon Managed Service for Prometheus의 Spark 지표를 사용할 수 있습니다.

## 고급 구성 속성
<a name="monitoring-with-prometheus-config-options"></a>

EMR Serverless는 Spark 내 구성 요소(`PrometheusServlet`)를 사용하여 Spark 지표를 수집하고 성능 데이터를 Amazon Managed Service for Prometheus와 호환되는 데이터로 변환합니다. 기본적으로 EMR Serverless는 Spark에서 기본값을 설정하고 `PrometheusMonitoringConfiguration`을 사용하여 작업을 제출할 때 드라이버 및 실행기 지표를 구문 분석합니다.

다음 표에서는 Amazon Managed Service for Prometheus로 지표를 전송하는 Spark 작업을 제출하는 경우 구성할 수 있는 모든 속성을 설명합니다.


| Spark 속성 | 기본값  | 설명 | 
| --- | --- | --- | 
| spark.metrics.conf.\*.sink.prometheusServlet.class | org.apache.spark.metrics.sink.PrometheusServlet | Spark가 Amazon Managed Service for Prometheus로 지표를 전송하는 데 사용하는 클래스. 기본 동작을 재정의하려면 사용자 지정 클래스를 지정합니다. | 
| spark.metrics.conf.\*.source.jvm.class | org.apache.spark.metrics.source.JvmSource | Spark가 기본 Java 가상 머신에서 중요한 지표를 수집하고 전송하는 데 사용하는 클래스. JVM 지표 수집을 중지하려면 빈 문자열(예: `""`)로 설정하여 이 속성을 비활성화합니다. 기본 동작을 재정의하려면 사용자 지정 클래스를 지정합니다. | 
| spark.metrics.conf.driver.sink.prometheusServlet.path | /metrics/prometheus | Amazon Managed Service for Prometheus가 드라이버에서 지표를 수집하는 데 사용하는 고유한 URL. 기본 동작을 재정의하려면 자체 경로를 지정합니다. 드라이버 지표 수집을 중지하려면 빈 문자열(예: `""`)로 설정하여 이 속성을 비활성화합니다. | 
| spark.metrics.conf.executor.sink.prometheusServlet.path | /metrics/executor/prometheus | Amazon Managed Service for Prometheus가 실행기에서 지표를 수집하는 데 사용하는 고유한 URL. 기본 동작을 재정의하려면 자체 경로를 지정합니다. 실행기 지표 수집을 중지하려면 빈 문자열(예: `""`)로 설정하여 이 속성을 비활성화합니다. | 

Spark 지표에 대한 자세한 내용은 [Apache Spark metrics](https://spark.apache.org/docs/latest/monitoring.html#metrics)를 참조하세요.

## 고려 사항 및 제한 사항
<a name="monitoring-with-prometheus-limitations"></a>

Amazon Managed Service for Prometheus를 사용하여 EMR Serverless에서 지표를 수집하는 경우 다음 고려 사항 및 제한 사항을 고려합니다.
+ [Amazon Managed Service for Prometheus가 정식 출시된AWS 리전](https://docs.aws.amazon.com/general/latest/gr/prometheus-service.html)에서만 EMR Serverless에서 Amazon Managed Service for Prometheus 사용에 대한 지원이 제공됩니다.
+ Amazon Managed Service for Prometheus에서 Spark 지표를 수집하기 위해 에이전트를 실행하는 경우 작업자의 리소스가 더 필요합니다. vCPU 작업자 한 명과 같이 더 작은 작업자 크기를 선택하면 작업 실행 시간이 늘어날 수 있습니다.
+ EMR Serverless에서 Amazon Managed Service for Prometheus 사용 지원은 Amazon EMR 릴리스 7.1.0 이상에서만 사용 가능합니다.
+ 지표를 수집하려면 EMR Serverless를 실행하는 동일한 계정에 Amazon Managed Service for Prometheus를 배포해야 합니다.