Azure Monitor와 Airflow 로그 통합

이 문서에서는 Microsoft Azure Data Manager for Energy 인스턴스에 대한 Airflow 로그를 Azure Monitor로 수집하기 시작하는 방법을 알아봅니다. 이 통합 기능을 사용하면 Airflow DAG(Directed Acyclic Graph) 실행 실패를 디버그할 수 있습니다.

필수 조건

  • 기존 로그 분석 작업 영역 이 작업 영역은 Log Analytics 작업 영역의 KQL(Kusto 쿼리 언어) 쿼리 편집기를 사용하여 Airflow 로그를 쿼리하는 데 사용됩니다. 유용한 리소스: Azure Portal에 로그 분석 작업 영역 만들기.

  • 기존 스토리지 계정: Airflow 로그의 JSON 덤프를 저장하는 데 사용됩니다. 스토리지 계정은 Log Analytics 작업 영역과 동일한 구독에 있을 필요가 없습니다.

진단 설정을 사용하도록 설정하여 스토리지 계정에 로그를 수집

모든 Azure Data Manager for Energy 인스턴스는 Azure Data Factory 워크플로 오케스트레이션 매니저(Apache Airflow에서 제공) 인스턴스와 함께 제공됩니다. 내부 문제 해결 및 디버깅을 위해 Airflow 로그를 수집합니다. Airflow 로그는 다음과 같은 방법으로 Azure Monitor와 통합할 수 있습니다.

  • 스토리지 계정
  • Log Analytics 작업 영역

위의 두 가지 옵션을 통해 로그에 액세스하려면 진단 설정을 만들어야 합니다. 각 진단 설정은 다음과 같은 세 가지 기본 부분으로 구성되어 있습니다.

요소 설명
이름 진단 로그의 이름입니다. 각 로그에 대해 고유한 이름이 설정되어 있는지 확인합니다.
범주 각 대상으로 보낼 로그 범주입니다. 범주 세트는 Azure 서비스마다 다릅니다. 방문: 지원되는 리소스 로그 범주
도착지 로그를 보낼 하나 이상의 대상입니다. 모든 Azure 서비스는 사용 가능한 동일한 대상 세트를 공유합니다. 각 진단 설정은 하나 이상의 대상을 정의할 수 있지만, 대상을 하나만 정의할 수 있는 유형도 있습니다. 스토리지 계정, Event Hubs 네임스페이스 또는 이벤트 허브여야 합니다.

다음 단계에 따라 진단 설정을 설정합니다.

  1. Microsoft Azure Data Manager for Energy의 개요 페이지를 엽니다.

  2. 왼쪽 패널에서 진단 설정을 선택합니다.

    Azure Monitor 진단 설정 개요 페이지의 스크린샷. 페이지에는 기존 진단 설정 목록과 새 진단 설정을 추가하는 옵션이 표시됩니다.

  3. + 진단 설정 추가를 선택합니다.

  4. 로그에서 Airflow 작업 로그를 선택합니다.

  5. 스토리지 계정에 보관을 선택합니다.

    스토리지 계정에 로그를 보관하는 진단 설정을 만드는 스크린샷. 이미지는 진단 설정에 대해 선택한 구독 및 스토리지 계정을 보여 줍니다.

  6. 로그를 보관할 구독 및 스토리지 계정을 확인합니다.

Airflow 작업 로그를 스토리지 계정에 보관하기 위한 진단 설정을 만든 후 스토리지 계정 개요 페이지로 이동할 수 있습니다. 그런 다음 왼쪽 패널에서 “Storage Browser”를 사용하여 조사하려는 정확한 JSON 파일을 찾을 수 있습니다. 1년에서 1개월에서 1일로 이동하기 때문에 직관적으로 여러 디렉터리를 탐색할 수 있습니다.

  1. 왼쪽 패널에서 사용할 수 있는 컨테이너를 탐색합니다.

    스토리지 계정의 컨테이너에서 보관된 로그를 탐색하는 스크린샷. 컨테이너는 설정된 모든 원본의 로그를 표시합니다.

  2. 오른쪽의 정보 창을 엽니다. 로그 파일을 로컬로 저장하는 “다운로드” 단추가 포함되어 있습니다.

  3. 다운로드한 로그는 모든 편집기에서 분석할 수 있습니다.

Log Analytics 작업 영역과 로그를 통합하도록 진단 설정 사용

Microsoft Azure Data Manager for Energy 인스턴스 개요 페이지의 왼쪽 패널에서 진단 설정을 사용하여 Airflow 로그를 Log Analytics 작업 영역과 통합할 수 있습니다.

진단 설정을 만드는 스크린샷. 구독 및 통합할 Log Analytics 작업 영역을 선택하는 옵션이 표시됩니다.

Log Analytics 작업 영역에서 통합된 Airflow 로그 작업

KQL(Kusto 쿼리 언어)을 사용하여 Log Analytics 작업 영역의 수집된 Airflow 로그에서 원하는 데이터를 검색합니다. 미리 빌드된 샘플 쿼리를 Log Analytics 작업 영역에 로드하거나 사용자 고유의 쿼리를 만들 수 있습니다.

수집된 로그를 보기 위한 Azure Monitor Log Analytics 페이지의 스크린샷. 로그 관리에서 모든 원본의 테이블이 표시됩니다.

  1. 미리 빌드된 쿼리 로드: 리소스 메뉴에서 로그를 선택합니다. Log Analytics는 리소스 종류에 대해 미리 작성된 쿼리가 포함된 쿼리 창과 함께 열립니다. 사용 가능한 쿼리를 찾아봅니다. 실행할 하나를 식별하여 실행을 선택합니다. 쿼리가 쿼리 창에 추가되고 결과가 반환됩니다.

  2. 쿼리 편집기에서 쿼리 작성: 다음 쿼리를 복사, 붙여넣기 및 편집하거나 Log Analytics 작업 영역의 쿼리 편집기의 KQL로 직접 작성할 수 있습니다.

샘플 쿼리

이 쿼리는 수준이 ERROR인 모든 Airflow 로그를 반환합니다. DAG 실행의 Azure Data Manager for Energy 인스턴스 이름 및 상관 관계 ID에 대한 where 절을 추가(주석 처리 해제)하여 결과를 필터링할 수 있습니다.


OEPAirFlowTask
| extend ResourceName = tostring(split(_ResourceId , '/')[-1])
// | where ResourceName == "<the name of ADME instance>"        // to filter on resourceName replace <...> and uncomment line
// | where CorrelationId == "<DAG run's runId>"                 // to filter on correlationID replace <...> with correlationId (same as runId) - we have created a duplicate for to maintain consistency of column name across all services 
| where LogLevel  == "ERROR"
| project TimeGenerated, DagName, LogLevel, DagTaskName, CodePath, Content

이 쿼리는 언급된 Azure Data Manager for Energy 리소스의 모든 DAG 실행 및 해당 상관 관계 ID를 나열합니다.


OEPAirFlowTask
| extend ResourceName = tostring(split(_ResourceId , '/')[-1])
// | where ResourceName == "<the name of ADME instance>"        // to filter on resourceName replace <...> and uncomment line
| distinct DagName, CorrelationId                               // correlationId is same as runId - we have created a duplicate for consistency in search across logs of all services 
| sort by DagName asc

Log Analytics 작업 영역에서 수집된 Airflow 로그를 사용하여 매니페스트 수집 프로세스 문제를 해결하는 데 도움이 되는 문서가 추가되었습니다.

다음 단계

이제 리소스 로그를 수집하고 있으므로 로그 데이터에서 흥미로운 데이터가 식별되면 사전에 알림을 보낼 로그 쿼리 경고를 만듭니다.