다음을 통해 공유


Azure Log Analytics를 사용하여 Apache Spark 애플리케이션 모니터링

이 자습서에서는 Log Analytics에 기본 제공되는 Synapse Studio 커넥터를 사용하도록 설정하는 방법을 알아봅니다. 그런 다음, Apache Spark 애플리케이션 메트릭 및 로그를 수집하여 Log Analytics 작업 영역으로 보낼 수 있습니다. 마지막으로, Azure Monitor 통합 문서를 사용하여 메트릭과 로그를 시각화할 수 있습니다.

작업 영역 정보 구성

다음 단계에 따라 Synapse Studio에서 필요한 정보를 구성합니다.

1단계: Log Analytics 작업 영역 만들기

다음 리소스 중 하나를 참조하여 이 작업 영역을 만듭니다.

2단계: 구성 정보 수집

다음 옵션 중에서 구성을 준비할 수 있습니다.

옵션 1: Azure Log Analytics 작업 영역 ID 및 키를 사용하여 구성

Spark 구성에 대해 다음 값을 수집합니다.

  • <LOG_ANALYTICS_WORKSPACE_ID>: Log Analytics 작업 영역 ID입니다.
  • <LOG_ANALYTICS_WORKSPACE_KEY>: Log Analytics 키입니다. Azure Portal에서 Azure Log Analytics 작업 영역>에이전트>기본 키로 이동하여 찾을 수 있습니다.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>

옵션 2: Azure Key Vault로 구성

참고 항목

Apache Spark 애플리케이션을 제출하는 사용자에게 비밀 읽기 권한을 부여해야 합니다. 자세한 내용은 Azure 역할 기반 액세스 제어를 사용하여 Key Vault 키, 인증서 및 비밀에 대한 액세스 제공을 참조하세요. Synapse 파이프라인에서 이 기능을 사용하는 경우 옵션 3을 사용해야 합니다. 이는 작업 영역 관리 ID가 있는 Azure Key Vault에서 비밀을 얻는 데 필요합니다.

작업 영역 키를 저장할 Azure Key Vault를 구성하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 키 자격 증명 모음을 만들고 해당 키 자격 증명 모음으로 이동합니다.

  2. 키 자격 증명 모음의 설정 페이지에서 비밀을 선택합니다.

  3. 생성/가져오기를 선택합니다.

  4. 비밀 만들기 화면에서 다음 값을 선택합니다.

    • 이름: 비밀의 이름을 입력합니다. 기본값으로 SparkLogAnalyticsSecret을 입력합니다.
    • : 비밀의 <LOG_ANALYTICS_WORKSPACE_KEY>를 입력합니다.
    • 다른 값은 기본값으로 그대로 둡니다. 그런 다음 만들기를 선택합니다.
  5. Spark 구성에 대해 다음 값을 수집합니다.

    • <LOG_ANALYTICS_WORKSPACE_ID>: Log Analytics 작업 영역 ID입니다.
    • <AZURE_KEY_VAULT_NAME>: 구성한 키 자격 증명 모음 이름입니다.
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME>(선택 사항): 작업 영역 키에 대한 키 자격 증명 모음의 비밀 이름입니다. 기본값은 SparkLogAnalyticsSecret입니다.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.name <AZURE_KEY_VAULT_NAME>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>

참고 항목

작업 영역 ID를 Key Vault에 저장할 수도 있습니다. 위의 단계를 참조하여 비밀 이름 SparkLogAnalyticsWorkspaceId가 포함된 작업 영역 ID를 저장합니다. 또는 spark.synapse.logAnalytics.keyVault.key.workspaceId 구성을 사용하여 Key Vault의 작업 영역 ID 비밀 이름을 지정할 수 있습니다.

옵션 3. 연결된 서비스를 통해 구성

참고 항목

이 옵션에서는 작업 영역 관리 ID에 읽기 비밀 권한을 부여해야 합니다. 자세한 내용은 Azure 역할 기반 액세스 제어를 사용하여 Key Vault 키, 인증서 및 비밀에 대한 액세스 제공을 참조하세요.

Synapse Studio에서 작업 영역 키를 저장할 Key Vault 연결된 서비스를 구성하려면 다음 단계를 수행합니다.

  1. 이전 섹션 "옵션 2"의 모든 단계를 따릅니다.

  2. Synapse Studio에서 다음과 같이 Key Vault 연결된 서비스를 만듭니다.

    a. Synapse Studio>관리>연결된 서비스, 새로 만들기로 이동합니다.

    b. 검색 상자에서 Azure Key Vault를 검색합니다.

    c. 연결된 서비스의 이름을 입력합니다.

    d. 해당하는 키 자격 증명 모음을 선택하고 만들기를 선택합니다.

  3. spark.synapse.logAnalytics.keyVault.linkedServiceName 항목을 Apache Spark 구성에 추가합니다.

spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.logAnalytics.keyVault.linkedServiceName <LINKED_SERVICE_NAME>

Apache Spark 구성 목록은 사용 가능한 Apache Spark 구성을 참조하세요.

3단계: Apache Spark 구성 만들기

작업 영역에 Apache Spark 구성을 만들 수 있으며 Notebook 또는 Apache Spark 작업 정의를 만들 때 Apache Spark 풀에서 사용할 Apache Spark 구성을 선택할 수 있습니다. 이 옵션을 선택하면 구성의 세부 정보가 표시됩니다.

  1. 관리>Apache Spark 구성을 선택합니다.

  2. 새로 만들기 단추를 선택하여 새 Apache Spark 구성을 만듭니다.

  3. 새로 만들기 단추를 선택하면 새 Apache Spark 구성 페이지가 열립니다.

    spark 구성을 만드는 스크린샷

  4. 이름으로 원하는 유효한 이름을 입력할 수 있습니다.

  5. 설명으로 일부 설명을 입력할 수 있습니다.

  6. 주석의 경우 새로 만들기 단추를 클릭하여 주석을 추가할 수 있으며 삭제 단추를 선택하고 클릭하여 기존 주석을 삭제할 수도 있습니다.

  7. 구성 속성의 경우 추가 단추를 선택하여 선택한 구성 옵션의 모든 속성을 추가합니다. 속성의 경우 나열된 대로 속성 이름을 추가하고 값의 경우 2단계에서 수집한 값을 사용합니다. 속성을 추가하지 않으면 Azure Synapse는 해당하는 경우 기본값을 사용합니다.

    구성 속성을 업데이트하는 예제가 있는 스크린샷

Apache Spark 애플리케이션을 제출하고 로그 및 메트릭 보기

이 경우 가능한 방법은 다음과 같습니다.

  1. Apache Spark 애플리케이션을 이전 단계에서 구성한 Apache Spark 풀에 제출합니다. 다음 방법 중 하나를 사용하여 제출할 수 있습니다.

    • Synapse Studio에서 Notebook을 실행합니다.
    • Synapse Studio에서 Apache Spark 작업 정의를 통해 Apache Spark 일괄 작업을 제출합니다.
    • Apache Spark 작업이 포함된 파이프라인을 실행합니다.
  2. 지정된 Log Analytics 작업 영역으로 이동한 다음, Apache Spark 애플리케이션이 실행되기 시작할 때 애플리케이션 메트릭 및 로그를 확인합니다.

사용자 지정 애플리케이션 로그 작성

Apache Log4j 라이브러리를 사용하여 사용자 지정 로그를 작성할 수 있습니다.

Scala 예제:

%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
      1/0
 } catch {
      case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()

PySpark 예제:

%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")

샘플 통합 문서를 사용하여 메트릭 및 로그 시각화

  1. 통합 문서를 다운로드합니다.

  2. 통합 문서 파일 콘텐츠를 열고 복사합니다.

  3. Azure Portal에서 Log Analytics 작업 영역>통합 문서를 선택합니다

  4. 통합 문서를 엽니다. </> 아이콘을 선택하여 고급 편집기 모드를 사용합니다.

  5. 존재하는 모든 JSON 위에 붙여넣습니다.

  6. 적용을 선택한 다음, 편집 완료를 선택합니다.

    새 통합 문서를 보여 주는 스크린샷

    통합 문서를 가져오는 방법을 보여 주는 스크린샷

그런 다음, Apache Spark 애플리케이션을 구성된 Apache Spark 풀에 제출합니다. 애플리케이션이 실행 중 상태가 되면 통합 문서 드롭다운 목록에서 실행 중인 애플리케이션을 선택합니다.

통합 문서를 보여 주는 스크린샷

통합 문서를 사용자 지정할 수 있습니다. 예를 들어 Kusto 쿼리를 사용하고 경고를 구성할 수 있습니다.

쿼리 및 경고를 통해 통합 문서를 사용자 지정하는 것을 보여 주는 스크린샷

Kusto를 사용하여 데이터 쿼리

다음은 Apache Spark 이벤트를 쿼리하는 예제입니다.

SparkListenerEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

다음은 Apache Spark 애플리케이션 드라이버 및 실행기 로그를 쿼리하는 예제입니다.

SparkLoggingEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100

그리고 다음은 Apache Spark 메트릭을 쿼리하는 예제입니다.

SparkMetrics_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc

경고 만들기 및 관리

사용자는 설정된 빈도로 메트릭 및 로그를 평가하고 그 결과에 따라 경고를 발생하도록 쿼리할 수 있습니다. 자세한 내용은 Azure Monitor를 사용하여 로그 경고 만들기, 보기 및 관리를 참조하세요.

데이터 반출 보호가 사용하도록 설정된 Synapse 작업 영역

데이터 반출 보호가 사용하도록 설정된 Synapse 작업 영역을 만든 후입니다.

이 기능을 사용하도록 설정하려면 작업 영역의 승인된 Microsoft Entra 테넌트에서 Azure Monitor AMPLS(프라이빗 링크 범위)에 대한 관리형 프라이빗 엔드포인트 연결 요청을 만들어야 합니다.

아래 단계에 따라 AMPLS(Azure Monitor 프라이빗 링크 범위)에 대한 관리형 프라이빗 엔드포인트 연결을 만들 수 있습니다.

  1. 기존 AMPLS가 없는 경우 Azure Monitor Private Link 연결 설정에 따라 만들 수 있습니다.
  2. Azure Portal에서 AMPLS로 이동하고, Azure Monitor 리소스 페이지에서 추가를 선택하여 Azure Log Analytics 작업 영역에 연결을 추가합니다.
  3. Synapse Studio 관리 프라이빗 엔드포인트로 이동하고, 새로 만들기 단추를 선택하고, Azure Monitor Private Link 범위를 선택하고, 계속합니다.> >

    AMPLS 관리되는 프라이빗 엔드포인트 1 만들기의 스크린샷

  4. 만든 Azure Monitor Private Link 범위를 선택하고 만들기 단추를 선택합니다.

    AMPLS 관리되는 프라이빗 엔드포인트 2 만들기의 스크린샷

  5. 프라이빗 엔드포인트를 프로비전할 때까지 몇 분 정도 기다립니다.
  6. Azure Portal에서 AMPLS로 이동하고, 프라이빗 엔드포인트 연결 페이지에서 프로비저닝된 연결을 선택하고, 승인을 선택합니다.

참고 항목