다음을 통해 공유


데이터 API 작성기에서 Azure Log Analytics 사용

Azure Log Analytics는 앱, Azure 리소스, VM, 컨테이너 등에서 로그를 집계하는 중앙 집중식 로깅 플랫폼입니다. DAB(Data API Builder)와 통합하면 기업이 규정 준수, 거버넌스 및 관찰 가능성 요구 사항을 충족할 수 있습니다. APM에 중점을 둔 Application Insights와 달리 Log Analytics는 KQL(Kusto Query Language) 지원을 통해 더 광범위한 로그 집계를 제공합니다.

Log Analytics 원격 분석 흐름을 보여 주는 다이어그램

필수 조건

  • 기존 DAB 구성 파일입니다.
  • Log Analytics 리소스를 만들 수 있는 권한이 있는 Azure 구독
  • 다음을 사용하는 Azure Log Analytics 작업 영역:
    • 사용자 지정 테이블(_CL로 끝남)
    • DCR(데이터 수집 규칙)
    • DCE(데이터 수집 엔드포인트)
  • DAB 호스트에서 사용하도록 설정된 관리 ID(Azure App Service, Container Apps, VM 등).
  • 데이터 API 작성기 CLI. CLI 설치

Azure Log Analytics 리소스 설정

DAB를 구성하기 전에 필요한 Azure 리소스를 만듭니다.

Log Analytics 작업 영역 만들기

  1. Azure Portal>Log Analytics 작업 영역으로 이동합니다.
  2. +만들기를 선택합니다.
  3. 구독, 리소스 그룹 및 지역을 선택합니다.
  4. 작업 영역 이름을 제공합니다.
  5. 검토 + 만들기>를 선택한 다음, 만들기를 클릭합니다.

사용자 지정 표 만들기

로그 수집 API에 대한 사용자 지정 테이블은 .로 _CL끝나야 합니다.

  1. Log Analytics 작업 영역에서 테이블로 이동합니다.
  2. +> 만들기(DCR 기반)를 선택합니다.
  3. 테이블 이름(예: DabLogs_CL)을 입력합니다.
  4. 다음 열을 사용하여 스키마를 정의합니다.
    • Time 날짜 및 시간
    • LogLevel(문자열)
    • Message(문자열)
    • Component(문자열)
    • Identifier(문자열)
  5. 선택하고생성합니다.

DCE(데이터 컬렉션 엔드포인트) 만들기

  1. 모니터>데이터 수집 엔드포인트로 이동합니다.
  2. +만들기를 선택합니다.
  3. 구독, 리소스 그룹 및 지역을 선택합니다.
  4. 이름(예: my-dce)을 입력합니다.
  5. 검토 + 만들기>를 선택한 다음, 만들기를 클릭합니다.
  6. 로그 수집 엔드포인트 URL(예: https://my-dce.eastus-1.ingest.monitor.azure.com)을 복사합니다.

DCR(데이터 수집 규칙) 만들기

  1. 모니터>데이터 수집 규칙으로 이동합니다.
  2. +만들기를 선택합니다.
  3. 구독, 리소스 그룹, 지역을 선택합니다.
  4. 이름(예: my-dcr)을 입력합니다.
  5. 데이터 원본에서 사용자 지정 텍스트 로그를 선택합니다.
  6. 구성:
    • 데이터 수집 엔드포인트: DCE를 선택합니다.
    • 대상: Log Analytics 작업 영역.
    • 테이블: 사용자 지정 테이블(DabLogs_CL).
  7. 검토 + 만들기>를 선택한 다음, 만들기를 클릭합니다.
  8. Immutable ID(dcr-로 시작하는)을 복사합니다.

인증 구성

DAB는 Azure 관리 ID 를 사용하여 Log Analytics에 인증합니다. 구성에 자격 증명이 저장되지 않습니다.

관리 아이디 활성화

az webapp identity assign \
  --name my-app \
  --resource-group my-rg

권한 할당

DCR의 관리 ID에 모니터링 메트릭 게시자 역할을 부여합니다.

# Get Managed Identity principal ID
PRINCIPAL_ID=$(az webapp identity show \
  --name my-app \
  --resource-group my-rg \
  --query principalId -o tsv)

# Get DCR resource ID
DCR_ID=$(az monitor data-collection rule show \
  --name my-dcr \
  --resource-group my-rg \
  --query id -o tsv)

# Assign role
az role assignment create \
  --assignee $PRINCIPAL_ID \
  --role "Monitoring Metrics Publisher" \
  --scope $DCR_ID

중요합니다

이 역할 할당이 없으면 DAB는 올바른 구성으로도 Log Analytics에 로그를 보낼 수 없습니다.

Log Analytics 구성

azure-log-analytics 구성 파일 아래에 runtime.telemetry 섹션을 추가합니다.

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": true,
        "dab-identifier": "my-dab-instance",
        "flush-interval-seconds": 10,
        "auth": {
          "custom-table-name": "DabLogs_CL",
          "dcr-immutable-id": "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

구성 속성

재산 Description Default Constraints
enabled Log Analytics 통합을 사용하거나 사용하지 않도록 설정합니다. false 불리언 (Boolean)
dab-identifier 이 DAB 인스턴스에서 로그 항목을 식별하는 고유 문자열입니다. DabLogs 모든 문자열
flush-interval-seconds Log Analytics에 로그가 플러시되는 빈도(초)입니다. 5 > 0이어야 합니다.
auth.custom-table-name Log Analytics 작업 영역의 사용자 지정 테이블 이름입니다. (필수) 반드시 _CL로 끝나야 합니다.
auth.dcr-immutable-id 데이터 수집 규칙의 변경할 수 없는 ID입니다. (필수) dcr-으로 시작
auth.dce-endpoint 데이터 수집 엔드포인트 URL입니다. (필수) HTTPS URL

Command-line

dab configure를 통해 Log Analytics를 구성합니다.

Log Analytics 사용

dab configure \
  --runtime.telemetry.azure-log-analytics.enabled true

DAB 식별자 설정

dab configure \
  --runtime.telemetry.azure-log-analytics.dab-identifier my-dab-instance

플러시 간격 설정

dab configure \
  --runtime.telemetry.azure-log-analytics.flush-interval-seconds 10

사용자 지정 테이블 이름 설정

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.custom-table-name DabLogs_CL

DCR 변경할 수 없는 ID 설정

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

DCE 엔드포인트 설정

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.dce-endpoint https://my-dce.eastus-1.ingest.monitor.azure.com

DAB 실행

구성 파일로 DAB를 시작합니다.

dab start

DAB 시작 로그에서 다음을 확인합니다.

Azure Log Analytics is enabled.

작동 방식

Log Analytics가 활성화되면 DAB:

  1. 호스트의 관리 ID를 사용하여 Azure에 인증합니다.
  2. flush-interval-seconds에 따라 로그 항목을 일괄 처리합니다.
  3. 로그를 DCE(데이터 수집 엔드포인트)로 보냅니다.
  4. DCE는 변환을 위해 DCR(데이터 수집 규칙)을 통해 로그를 라우팅합니다.
  5. DCR은 사용자 지정 Log Analytics 테이블에 로그를 수집합니다.

데이터 흐름

DAB Application
    ↓
ILogger (ASP.NET Core)
    ↓
Log Analytics Logger Provider
    ↓
Managed Identity Authentication
    ↓
Data Collection Endpoint (DCE)
    ↓
Data Collection Rule (DCR)
    ↓
Log Analytics Workspace (Custom Table)

캡처되는 항목

원격 분석 유형 출처 예시
Traces ILogger DAB에서의 통화 시작 로그, 쿼리 실행 로그, 경고
Errors 예외 처리 런타임 오류, 구성 오류, 데이터베이스 오류
구성 요소 정보 DAB 내부 로그를 생성한 모듈
인스턴스 ID 구성 / 설정 dab-identifier 필터링을 위한 값

로그 구조

Log Analytics로 전송된 각 로그 항목에는 다음 필드가 포함됩니다.

분야 유형 Description 예시
Time datetime 타임스탬프(ISO 8601) 2026-01-27T14:30:00Z
LogLevel 문자열 로그 심각도 Information, WarningError
Message 문자열 로그 메시지 Request completed successfully
Component 문자열 로그를 생성한 DAB 구성 요소 Azure.DataApiBuilder.Service.Startup
Identifier 문자열 구성의 dab-identifier my-dab-instance

비고

Log Analytics의 사용자 지정 테이블 열에는 문자열_s, doubles_d, datetimes_t 등의 접미사가 추가됩니다.

Log Analytics의 쿼리 로그

  1. Azure Portal에서 Log Analytics 작업 영역을 엽니다.

  2. 로그로 이동하고 KQL 쿼리를 실행 합니다 .

    DabLogs_CL
    | where Identifier_s == "my-dab-instance"
    | where LogLevel_s in ("Warning", "Error")
    | where TimeGenerated > ago(1h)
    | project TimeGenerated, LogLevel_s, Message_s, Component_s
    | order by TimeGenerated desc
    

예제 쿼리

수준별 로그 개수:

DabLogs_CL
| where TimeGenerated > ago(24h)
| summarize Count=count() by LogLevel_s

특정 구성 요소에서 오류를 찾습니다.

DabLogs_CL
| where Component_s contains "SqlQueryExecutor"
| where LogLevel_s == "Error"
| project TimeGenerated, Message_s

성능 및 비용 고려 사항

일괄 처리 동작

DAB는 로그를 일괄 처리하여 매 flush-interval-seconds마다 보냅니다.

  • 5초(기본값): 대부분의 시나리오에 적합한 균형입니다.
  • 1-2초: 거의 실시간 로깅(높은 API 호출, 더 높은 비용).
  • 10-60초: API 호출이 감소했지만 로그가 지연되었습니다.

비용 최적화

Log Analytics 가격 책정은 다음을 기반으로 합니다.

  1. 데이터 수집: 수집된 GB당.
  2. 데이터 보존: 무료 계층 이후 월별 GB당.

비용 절감:

  • flush-interval-seconds을 늘려서 로그를 더 많이 일괄 처리하십시오.
  • 로그 수준 필터를 사용하여 자세한 로그를 제외합니다. 자세한 내용은 로그 세부 정보 사용자 지정을 참조하세요.
  • Log Analytics 작업 영역에서 적절한 데이터 보존을 설정합니다.

예: 볼륨을 줄이기 위한 필터

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Default": "Warning",
        "Microsoft": "Error"
      },
      "azure-log-analytics": {
        "enabled": true,
        "flush-interval-seconds": 30,
        "auth": {
          "custom-table-name": "DabLogs_CL",
          "dcr-immutable-id": "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

이렇게 하면 경고오류 로그만 전송되어 볼륨이 크게 줄어듭니다.

데이터 보존

Log Analytics 데이터 보존은 작업 영역별로 구성할 수 있습니다.

계층 기본 보존 최대 보존 기간
무료 요금제 7 일 7 일
Pay-as-you-go 30일 730일(2년)

보존 구성: Log Analytics 작업 영역 → 사용량 및 예상 비용데이터 보존.

팁 (조언)

규정 준수 요구 사항의 경우 장기 보존을 위해 이전 로그를 Azure Storage에 보관하는 것이 좋습니다.

Troubleshooting

Log Analytics에 로그가 표시되지 않음

증상: DAB가 성공적으로 시작되지만 Log Analytics 작업 영역에 로그가 나타나지 않습니다.

가능한 원인:

  • 불완전한 구성: DAB 시작 로그에서 필요한 모든 인증 속성 확인과 같은 Logs won't be sent to Azure Log Analytics because the Custom Table Name is not available in the config file. 오류가 있는지 확인합니다custom-table-namedcr-immutable-iddce-endpoint.

  • 관리 ID가 할당되지 않음: 관리 ID가 사용되도록 az webapp identity show --name my-app --resource-group my-rg설정되어 있는지 확인합니다. 를 사용하여 역할 할당을 확인합니다 az role assignment list --assignee <principal-id> --scope <dcr-id>.

  • 잘못된 DCE 엔드포인트 또는 DCR ID: DCE 엔드포인트 형식이 https://<dce-name>.<region>-1.ingest.monitor.azure.com.인지 확인합니다. DCR 변경할 수 없는 ID가 .로 dcr-시작하는지 확인합니다.

  • 사용자 지정 테이블이 없습니다. 사용자 지정 테이블은 .로 _CL끝나야 합니다. 테이블 스키마는 로그 구조와 일치해야 합니다.

오류: 플러시 간격은 양수여야 합니다.

원인: flush-interval-seconds0로 설정되거나 음수로 설정됩니다.

해결 방법: 양의 정수(최소flush-interval-seconds)로 설정합니다1.

DAB 로그에 "Azure Log Analytics를 사용할 수 없음"이 표시됩니다.

원인: enabledfalse가 구성에서 누락되었거나 없습니다.

해결 방법: 구성에서 설정합니다 enabled: true .

Log Analytics 및 Application Insights 비교

Capability Application Insights (애플리케이션 인사이트) Log Analytics
포커스 APM(애플리케이션 성능 모니터링) 중앙 집중식 로그 집계
쿼리 언어 KQL KQL
Scope 단일 애플리케이션 앱, VM, 컨테이너, Azure 리소스
사용 사례 성능, 예외, 추적 규정 준수, 거버넌스, 리소스 간 상관 관계
Authentication 연결 문자열 관리 ID(DCR/DCE를 통해)

요청 추적, 종속성 매핑 및 성능 프로파일링과 같은 APM 기능이 필요한 경우 Application Insights를 사용합니다. 엔터프라이즈 규정 준수 요구 사항이 있는 여러 리소스에서 중앙 집중식 로깅이 필요한 경우 Log Analytics를 사용합니다.