로그 데이터에서 정보를 추출하는 기본 Azure Monitor 로그 쿼리 만들기

완료됨

Azure Monitor 로그 쿼리를 사용하여 로그 데이터에서 정보를 추출할 수 있습니다. 쿼리는 Azure Monitor에서 캡처한 로그 데이터를 검사하는 데 중요한 부분입니다.

시나리오 예에서 운영 팀은 Azure Monitor 로그 쿼리를 사용하여 시스템 상태를 검사합니다.

Log Analytics를 사용하여 Azure Monitor 로그 쿼리 작성

Azure Portal에서 Log Analytics 도구를 찾고 이 도구를 사용하여 샘플 쿼리를 실행하거나 사용자 고유의 쿼리를 만들 수 있습니다.

  1. Azure Portal의 왼쪽 메뉴 창에서 모니터링을 선택합니다.

    Azure Monitor 페이지가 활동 로그, 경고, 메트릭, 로그 등의 추가 옵션과 함께 표시됩니다.

  2. 로그를 선택합니다.

    여기에서 쿼리를 입력하고 출력을 볼 수 있습니다.

    새 쿼리 탭이 열려 있는 Azure Monitor의 스크린샷

Kusto 언어를 사용하여 쿼리 작성

Kusto 쿼리 언어를 사용하여 Azure에서 실행되는 서비스에 대한 로그 정보를 쿼리할 수 있습니다. Kusto 쿼리는 데이터를 처리하고 결과를 반환하기 위한 읽기 전용 요청입니다. 구문을 쉽게 읽고 쓰고 자동화하는 데이터 흐름 모델을 사용하여 일반 텍스트로 쿼리를 작성합니다. 쿼리는 Azure SQL Database와 비슷한 계층 구조로 구성된 스키마 엔터티(데이터베이스, 테이블, 열)를 사용합니다.

Kusto 쿼리는 세미콜론(;)으로 구분된 일련의 쿼리 문으로 구성됩니다. 하나 이상의 문이 테이블 형식 식 문입니다. 테이블 형식 식 문은 열 및 행의 테이블로 정렬된 데이터의 형식을 지정합니다.

표 형식 식 문의 구문에는 데이터 원본에서 시작하여 한 표 형식 쿼리 연산자에서 다른 테이블 형식 쿼리 연산자로의 표 형식 데이터 흐름이 있습니다. 데이터 원본은 데이터베이스의 테이블 또는 데이터를 만드는 연산자일 수 있습니다. 데이터는 파이프(|) 구분 기호와 함께 바인딩되는 일련의 데이터 변환 연산자를 통해 흐릅니다.

예를 들어 다음 Kusto 쿼리에는 단일 테이블 형식 식 문이 있습니다. 해당 문은 Events라는 테이블에 대한 참조로 시작합니다. 이 테이블을 호스팅하는 데이터베이스는 암시적이며 연결 정보의 일부입니다. 행에 저장된 해당 테이블의 데이터는 StartTime 열 값을 기준으로 필터링됩니다. State 열의 값을 기준으로 데이터를 추가로 필터링합니다. 그 후 쿼리가 결과 행의 개수를 반환합니다.

Events
| where StartTime >= datetime(2018-11-01) and StartTime < datetime(2018-12-01)
| where State == "FLORIDA"  
| count

참고

Azure Monitor에서 사용되는 Kusto 쿼리 언어는 대/소문자를 구분합니다. 언어 키워드는 일반적으로 소문자로 작성됩니다. 쿼리에서 테이블 또는 열 이름을 사용하는 경우 정확한 대/소문자를 사용해야 합니다.

모니터링되는 컴퓨터의 이벤트 로그에서 캡처되는 이벤트는 데이터 원본의 한 유형입니다. Azure Monitor는 다른 많은 유형의 데이터 원본을 제공합니다. 예를 들어 Heartbeat 데이터 원본은 Log Analytics 작업 영역에 보고하는 모든 컴퓨터의 상태를 보고합니다. 또한 성능 카운터에서 데이터를 캡처하고 관리 레코드를 업데이트할 수 있습니다.

다음의 예에서는 각 컴퓨터의 가장 최근 하트비트 레코드를 검색합니다. 컴퓨터는 IP 주소로 식별됩니다. 이 예제에서 arg_max 함수를 사용하는 summarize 집계는 각 IP 주소에 대한 최신 값을 포함하는 레코드를 반환합니다.

Heartbeat
| summarize arg_max(TimeGenerated, *) by ComputerIP