이 자습서에서는 결정적이고 반복 가능한 결과를 사용하여 정확한 KQL 쿼리를 실행하는 매개 변수가 있는 Kusto 도구를 만듭니다. 사용자가 "지난 7일 동안의 오류 표시"와 같은 질문을 하면 에이전트가 매개 변수를 대체하고 Azure Data Explorer 데이터베이스에 대해 정확한 쿼리를 실행합니다.
이 튜토리얼에서는 다음을 배우게 됩니다:
- 에이전트 캔버스에서 Kusto 도구 만들기
- 매개 변수가 있는 KQL 쿼리 정의
- 포털에서 쿼리 테스트
- 도구를 사용자 지정 에이전트에 연결하고 플레이그라운드에서 확인
예상 시간: 15분
사전 요구 사항
시작하기 전에 다음 필수 조건을 갖추고 있는지 확인합니다.
- 에이전트의 관리 ID에 AllDatabasesViewer 역할이 부여된 Azure Data Explorer 클러스터입니다. 자세한 내용은 Kusto 도구 필수 구성 요소를 참조하세요.
- 구성된 Kusto 커넥터입니다. 자세한 내용은 Kusto 커넥터 설정을 참조하세요.
- Azure SRE 에이전트 포털에서 Builder에 액세스합니다.
에이전트 캔버스로 이동합니다.
도구를 만들고 관리하는 에이전트 캔버스를 엽니다.
- SRE 에이전트 포털을 엽니다.
- 에이전트를 선택하세요.
- 왼쪽 네비게이션에서 Builder를 선택합니다.
- 에이전트 캔버스를 선택합니다.
도구 만들기 양식 열기
도구 모음에서 도구 만들기 프로세스를 시작합니다.
- 위쪽 도구 모음에서 만들기 드롭다운을 선택합니다.
- 도구>Kusto 도구를 선택합니다.
도구 세부 정보 입력
도구 구성을 사용하여 양식을 완성합니다.
| 분야 | 가치 | 설명 |
|---|---|---|
| 도구 이름 | QueryAppLogs |
에이전트가 이 도구를 참조하는 방법 |
| 설명 | "지정된 시간 범위의 오류에 대한 AppLogs 테이블 쿼리" | 에이전트가 이 도구를 사용해야 하는 경우 |
| 커넥터 | (Kusto 커넥터 선택) | 사용할 Azure Data Explorer 연결입니다. |
| Database | (커넥터 URL에서 자동 채워집니다.) | 데이터베이스 이름입니다. |
| 쿼리 | 다음 예를 참조하세요. | 매개 변수가 있는 KQL 쿼리입니다. |
다음 예제 쿼리를 입력합니다.
AppLogs
| where Timestamp > ago(##timeRange##)
| where Level == "Error"
| order by Timestamp desc
| take 10
구문은 ##timeRange## 매개 변수를 만듭니다. 누군가가 "지난 24시간 동안의 오류 표시"를 요청하면 에이전트가 채웁니다 timeRange = 24h.
매개 변수 추가
쿼리에서 사용하는 매개 변수를 정의합니다.
- 매개 변수 섹션으로 스크롤합니다.
- 매개 변수 추가를 선택합니다.
- 다음 값을 입력합니다.
-
이름:
timeRange - 형식: 문자열
- 설명: "얼마나 과거까지 찾을지 (예: 1h, 24h, 7d)"
-
이름:
매개 변수는 쿼리 아래의 매개 변수 테이블에 나타납니다.
쿼리 테스트
저장하기 전에 쿼리가 성공적으로 실행되는지 확인합니다.
- 양식 아래쪽에서 테스트를 선택합니다.
-
timeRange에 대한 테스트 값(예:7d)을 입력합니다. - 쿼리가 성공적으로 실행되는지 확인합니다.
실행 시간과 쿼리 실행을 확인하는 녹색 확인 표시가 표시됩니다. 쿼리가 0개의 행을 반환하더라도 확인 표시는 쿼리 구문이 유효하다는 것을 의미합니다.
도구 만들기
만들기를 선택하여 Kusto 도구를 저장합니다.
사용자 지정 에이전트에 도구 추가
도구를 만들었지만 사용자 지정 에이전트에 연결하지 않았습니다. 에이전트가 사용할 수 있도록 도구를 연결합니다.
- 캔버스 보기에서 사용자 지정 에이전트를 찾습니다.
- + 사용자 지정 에이전트 카드의 오른쪽에 있는 단추를 선택합니다.
- 기존 도구 추가를 선택합니다.
- 목록에서 Kusto 도구를 확인합니다.
- 도구 추가를 선택합니다.
추가한 후 사용자 지정 에이전트 카드의 도구 수가 증가합니다.
놀이터에서 도구 확인
에이전트가 Kusto 도구를 올바르게 호출했는지 테스트합니다.
- 왼쪽 탐색 영역에서 Test Playground를 선택합니다.
- 드롭다운 목록에서 사용자 지정 에이전트를 선택합니다.
- 질문: "지난 7일 동안의 오류를 보여줘"
- 에이전트는
timeRange = 7d를 사용하여 도구를 호출합니다.
에이전트가 Kusto 도구를 호출하고 쿼리 결과를 반환하는 것을 볼 수 있습니다. 작성한 정확한 쿼리는 클러스터에 대해 실행됩니다.
매개 변수 구문
쿼리에서 매개변수 자리 표시자로 ##parameterName## 또는 $parameterName를 사용하십시오.
query: |-
AppExceptions
| where TimeGenerated > ago(##timeRange##)
| where ServiceName == "$serviceName"
두 구문 모두 동일하게 작동합니다. 에이전트는 런타임 시 값을 대체합니다.
실행 모드
다음 표에서는 Kusto 도구에 사용할 수 있는 실행 모드에 대해 설명합니다.
| 모드 | 사용 시기 |
|---|---|
Query |
YAML(가장 일반적인)에서 쿼리 인라인을 정의합니다. |
Function |
쿼리 논리를 Azure Data Explorer 클러스터에 함수로 저장합니다. |
Script |
외부 .kql 파일에 쿼리를 배치합니다. |
# Function mode example
spec:
type: KustoTool
mode: Function
function: GetRecentErrors
# Script mode example
spec:
type: KustoTool
mode: Script
file: queries/complex-analysis.kql
예: 배포 상관 관계 도구
다음 YAML 정의는 지정된 서비스 및 시간 범위와 배포의 상관 관계를 지정하는 Kusto 도구를 만듭니다.
api_version: azuresre.ai/v2
kind: ExtendedAgentTool
metadata:
name: get-recent-deployments
spec:
type: KustoTool
connector: devops-logs
mode: Query
database: deployments
description: "Get deployments in a time range for a service"
toolMode: Auto
query: |-
Deployments
| where TimeGenerated > ago(##timeRange##)
| where ServiceName == "##serviceName##"
| project TimeGenerated, Version, DeployedBy, Environment
| order by TimeGenerated desc
parameters:
- name: serviceName
type: string
description: "Name of the service"
- name: timeRange
type: string
description: "How far back to look (e.g., 1h, 24h)"
도구 편집 또는 삭제
만든 후 도구를 수정하거나 제거할 수 있습니다.
Edit
- 에이전트 캔버스에서 도구 노드를 선택하여 정보 패널을 엽니다.
- 패널 머리글에서 편집 (연필) 아이콘을 선택합니다.
- 편집 대화 상자가 현재 설정과 함께 열립니다. 쿼리, 매개 변수 또는 커넥터를 수정합니다.
- 저장을 선택합니다.
Delete
- 도구 노드를 선택하여 정보 패널을 엽니다.
- 패널 헤더에서 ⋯ (추가 작업) 메뉴를 선택합니다.
- 삭제 도구를 선택합니다.
- 대화 상자에서 삭제를 확인합니다.
메모
도구를 삭제하면 도구를 사용하는 사용자 지정 에이전트에서 즉시 제거합니다.