0Pricing
Cloud & IT Cert Prep · 강의

Log Analytics 및 KQL 기초

진단 로그를 Log Analytics 작업 영역으로 수집하고, Kusto Query Language 쿼리를 작성해 운영 데이터를 필터링·집계·시각화합니다.

Log Analytics 및 KQL 기초은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

Log Analytics 작업 영역이란 무엇인가요?

Log Analytics 작업 영역은 Azure Monitor에서 로그 및 원격 분석 데이터를 저장하는 중앙 데이터 저장소입니다. Azure 리소스에서 진단 설정을 구성하면 구조화된 로그와 메트릭이 작업 영역으로 전달됩니다. 그런 다음 Kusto Query Language (KQL)을 사용하여 데이터를 쿼리할 수 있습니다. 작업 영역에는 자체 보존 정책이 있으며(기본 30일, 최대 730일), 액세스 제어도 설정할 수 있습니다.

# Create a Log Analytics workspace
az monitor log-analytics workspace create \
  --resource-group myRG \
  --workspace-name myWorkspace \
  --location eastus \
  --retention-time 90

진단 로그를 작업 영역으로 보내기

모든 Azure 리소스는 API 호출, 인증 이벤트, 쿼리 실행과 같은 작업의 상세 기록인 진단 로그를 생성할 수 있습니다. 리소스의 진단 설정에서 로그를 사용하도록 설정하고, 대상으로 Log Analytics 작업 영역을 지정합니다. 일반적인 로그 범주로는 Key Vault의 AuditEvent, App Service의 AppServiceHTTPLogs, NSG의 NetworkSecurityGroupFlowEvent가 있습니다.

# Enable diagnostic settings to send Key Vault logs to Log Analytics
az monitor diagnostic-settings create \
  --name 'KVLogs' \
  --resource /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.KeyVault/vaults/myKV \
  --workspace myWorkspace \
  --logs '[{"category":"AuditEvent","enabled":true}]'

KQL 구문 소개

Kusto Query Language (KQL)은 로그 데이터를 분석하기 위한 읽기 전용 쿼리 언어입니다. KQL 쿼리는 파이프라인처럼 왼쪽에서 오른쪽으로 읽습니다. 먼저 테이블 이름으로 시작한 다음 파이프(|)를 사용하여 연산자를 연결합니다. 일반적인 연산자로는 필터링에 사용하는 where, 열 선택에 사용하는 project, 집계에 사용하는 summarize, 정렬에 사용하는 order by가 있습니다. KQL은 열 이름에서 대소문자를 구분하지만 키워드에서는 구분하지 않습니다.

// Basic KQL query structure
AzureActivity
| where TimeGenerated > ago(24h)
| where OperationNameValue == 'MICROSOFT.COMPUTE/VIRTUALMACHINES/DELETE'
| project TimeGenerated, Caller, ResourceGroup, Resource
| order by TimeGenerated desc

Where 연산자로 필터링하기

where 연산자는 부울 식을 사용하여 행을 필터링합니다. and, or, not을 사용하여 조건을 결합할 수 있습니다. has 연산자는 문자열에서 대소문자를 구분하지 않는 단어 경계 검색을 수행하고, contains는 부분 문자열 검색을 수행합니다. in 연산자는 목록에 포함되는지 확인합니다. ago()를 사용하면 ago(1h) 또는 ago(7d)와 같이 상대적인 시간 범위를 표현할 수 있습니다.

// Filter for failed HTTP requests in the last hour
AppRequests
| where TimeGenerated > ago(1h)
| where Success == false
| where ResultCode in (500, 502, 503)
| project TimeGenerated, Name, ResultCode, DurationMs
| order by DurationMs desc

Summarize로 데이터 집계하기

summarize 연산자는 행 전체에서 집계값을 계산합니다. 일반적인 집계 함수로는 count(), sum(), avg(), max(), min(), 고유 항목 수를 계산하는 dcount()가 있습니다. by 절을 사용하여 하나 이상의 열을 기준으로 그룹화할 수 있습니다. bin() 함수는 시계열 집계를 위해 타임스탬프를 일정한 간격으로 반올림합니다.

// Count failed requests per hour per endpoint
AppRequests
| where TimeGenerated > ago(24h)
| where Success == false
| summarize FailureCount = count() by bin(TimeGenerated, 1h), Name
| order by TimeGenerated desc, FailureCount desc

KQL에서 테이블 조인하기

KQL은 여러 테이블의 데이터를 상호 연관시키는 join을 지원합니다. 기본 조인 종류는 innerunique이지만 inner, leftouter, rightouter, fullouter를 지정할 수도 있습니다. 일반적인 패턴은 AzureActivity와 AzureMetrics를 조인하여 관리 변경 사항과 성능 저하를 상호 연관시키는 것입니다. lookup 연산자는 작은 참조 테이블의 데이터로 행을 보강할 때 사용할 수 있는 더 간단한 대안입니다.

// Correlate VM restarts with CPU spike events
AzureActivity
| where OperationNameValue has 'restart'
| join kind=leftouter (
    AzureMetrics
    | where MetricName == 'Percentage CPU'
    | where Average > 90
) on ResourceId
| project TimeGenerated, Resource, Average

KQL 결과 시각화하기

Log Analytics 포털에서 쿼리를 작성한 후 render 연산자를 사용하여 결과를 시간 차트, 막대 차트, 원형 차트 또는 테이블로 표시할 수 있습니다. 쿼리 결과를 Azure Dashboard에 고정하거나 Workbook으로 저장할 수도 있습니다. render timechart 명령은 시계열 summarize 쿼리를 추세 분석에 사용할 수 있는 즉시 선형 차트로 변환합니다.

// Render a time chart of request counts per 5-minute interval
AppRequests
| where TimeGenerated > ago(4h)
| summarize RequestCount = count() by bin(TimeGenerated, 5m)
| render timechart

로그 검색 경고

로그 검색 경고는 일정에 따라 KQL 쿼리를 실행하고, 결과 수가 0보다 크거나 숫자 열이 임계값을 초과하는 등 결과가 조건을 충족할 때 발생합니다. 여러 테이블의 모든 로그 데이터를 쿼리할 수 있으므로 메트릭 경고보다 유연합니다. 평가 빈도와 시간 범위는 서로 독립적으로 구성할 수 있습니다. 예를 들어 5분마다 최근 15분을 대상으로 실행할 수 있습니다.

// Example log search alert condition: more than 5 exceptions in 15 min
AppExceptions
| where TimeGenerated > ago(15m)
| summarize ExceptionCount = count()
// Alert when ExceptionCount > 5

일반적인 로그 테이블 참조

Azure Monitor는 잘 알려진 테이블에 로그를 저장합니다. AzureActivity는 구독 수준의 작업을 기록합니다. SecurityEvent에는 Log Analytics 에이전트가 설치된 VM의 Windows 보안 로그가 포함됩니다. Heartbeat는 연결된 VM마다 분당 한 개의 행으로 에이전트 연결 상태를 보여 줍니다. AppRequests, AppExceptions, AppDependencies는 Application Insights에서 생성됩니다. 이러한 테이블 이름을 아는 것은 효과적인 운영 쿼리를 작성하는 데 필수적입니다.

작업 영역 보존 및 비용

Log Analytics 요금은 두 가지 요소로 구성됩니다. 데이터 수집(수집된 GB당 요금)과 데이터 보존(처음 30일은 무료이며, 기본 기간을 초과하면 GB·월 단위로 요금 부과)입니다. 수집 전에 소음이 많은 로그 범주를 필터링하고, 대량의 가치가 낮은 데이터에는 할인된 요금의 Basic Logs를 사용하며, 장기 규정 준수를 위해 오래된 데이터를 Azure Data Explorer 또는 콜드 스토리지에 보관하면 비용을 줄일 수 있습니다.

작업 영역 액세스 제어 모델

Log Analytics 작업 영역은 두 가지 액세스 제어 모델을 지원합니다. 작업 영역 컨텍스트 모드에서는 작업 영역에 읽기 액세스 권한이 있는 사용자가 모든 테이블을 쿼리할 수 있습니다. 리소스 컨텍스트 모드에서는 명시적인 작업 영역 액세스 권한이 없어도 RBAC를 통해 읽기 권한을 가진 리소스에서 생성된 로그만 쿼리할 수 있습니다. 리소스 컨텍스트 모드는 서로 다른 팀이 서로 다른 리소스를 소유하는 대규모 조직에 권장됩니다.

빠른 확인

이 단원에서 다룬 Microsoft Azure Fundamentals (AZ-900) 개념을 얼마나 이해했는지 테스트해 보십시오.

단원 복습

이 단원에서는 다음을 배웠습니다. Log Analytics 작업 영역은 Azure 리소스의 진단 로그 데이터를 중앙에서 관리하고, KQL 연산자인 where, summarize, render 등을 사용하면 로그를 필터링하고 집계하며 시각화할 수 있으며, 로그 검색 경고는 KQL 쿼리 결과가 정의된 조건을 충족할 때 자동화된 응답을 트리거합니다. 다음 단원에서는 애플리케이션 수준의 원격 분석을 위한 Application Insights를 살펴봅니다.

자주 묻는 질문

“Log Analytics 및 KQL 기초” 강의는 무료인가요?

네 — “Log Analytics 및 KQL 기초” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“Log Analytics 및 KQL 기초”에서 뭘 배우나요?

진단 로그를 Log Analytics 작업 영역으로 수집하고, Kusto Query Language 쿼리를 작성해 운영 데이터를 필터링·집계·시각화합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“Log Analytics 및 KQL 기초” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Azure Monitor 메트릭 및 경고
  2. Log Analytics 및 KQL 기초
  3. Application Insights
  4. Azure 대시보드 및 통합 문서
← Cloud & IT Cert Prep(으)로 돌아가기