검색 작업은 Log Analytics의 모든 데이터에서 비동기 쿼리를 실행하는 것으로, 이는 분석과 장기 보존 모두에 적용됩니다. 이 작업은 작업 영역 내의 새 검색 테이블에서 대화형 쿼리에 쿼리 결과를 활용할 수 있게 합니다. 검색 작업은 병렬 처리를 사용하며 대규모 데이터 세트에서 몇 시간 동안 실행할 수 있습니다. 이 문서에서는 쿼리 작업을 만드는 방법과 결과 데이터를 쿼리하는 방법에 대해 설명합니다.
이 동영상에서는 검색 작업을 사용하는 시기와 방법을 설명합니다.
필요한 사용 권한
작업 |
필요한 사용 권한 |
검색 작업 실행 |
예를 들어 Microsoft.OperationalInsights/workspaces/tables/write 에서 제공하는 Log Analytics 작업 영역에 대한 Microsoft.OperationalInsights/workspaces/searchJobs/write 및 권한. |
참고
Entra ID 테넌트가 Azure Lighthouse를 통해 관리되는 경우에도 테넌트 간 검색 작업은 현재 지원되지 않습니다.
검색 작업을 사용하는 경우
검색 작업을 사용하여 다음을 수행합니다.
-
장기 보존 및 기본 및 보조 계획이 있는 테이블에서 레코드를 검색하여 Azure Monitor Log의 모든 분석 기능을 활용할 수 있는 새 분석 테이블로 이동합니다.
- 로그 쿼리 시간 제한(10분)이 충분하지 않은 경우 대량의 데이터를 검색합니다.
검색 작업은 무엇을 하나요?
검색 작업은 데이터를 검색하고 원본 데이터와 동일한 작업 영역의 새 테이블로 결과를 보냅니다. 결과 테이블은 검색 작업이 시작되는 즉시 사용할 수 있지만 결과가 나타나기 시작하는 데 시간이 걸릴 수 있습니다. 검색된 데이터의 가격 책정 모델 및 수집된 결과의 크기에 따라 비용이 발생합니다. 검색 작업을 실행하기 전에 작업 실행 여부를 결정하는 데 도움이 되는 비용 추정을 사용할 수 있습니다.
검색 작업 결과 테이블은 작업 영역의 테이블을 사용하는 로그 쿼리 및 기타 Azure Monitor 기능에 사용할 수 있는 Analytics 테이블입니다. 테이블은 작업 영역에 대해 설정된 보존 값을 사용하지만 테이블이 만들어진 후 이 값을 수정할 수 있습니다.
검색 결과 테이블 스키마는 원본 테이블 스키마와 지정된 쿼리를 기반으로 합니다. 다음과 같은 다른 열은 원본 레코드를 추적하는 데 도움이 됩니다.
칼럼 |
값 |
_OriginalType |
원본 테이블에서 값을 입력합니다. |
_OriginalItemId |
원본 테이블의 _ItemID 값입니다. |
_OriginalTimeGenerated |
원본 테이블의 TimeGenerated 값. |
타임제너레이티드 |
검색 작업이 실행된 시간. |
결과 테이블의 쿼리는 로그 쿼리 감사에 나타나지만 초기 쿼리 작업에는 나타나지 않습니다.
검색 작업 실행
검색 작업을 실행하여 대규모 데이터 세트의 레코드를 작업 영역의 새 검색 결과 테이블로 가져옵니다.
팁
검색 작업을 실행하면 요금이 청구됩니다. 검색 작업을 실행하기 전에 대화형 쿼리 모드에서 쿼리를 작성하고 최적화합니다. 비용 예측 미리 보기를 사용하여 잠재적인 비용을 파악합니다.
Azure Portal에서 검색 작업을 실행하려면 다음을 수행합니다.
Log Analytics 작업 영역 메뉴에서 로그를 선택합니다.
검색 작업 쿼리를 입력하거나 원하는 테이블을 선택하기만 하면 됩니다.
화면 오른쪽에 있는 줄임표 메뉴를 선택하고 검색 작업을 선택합니다.
시간 선택기를 사용하여 검색 작업 날짜 범위를 지정합니다. 총 보존 기간 내의 기간을 선택합니다.
Kusto 쿼리에서 시간 범위도 지정하는 경우 시간 범위의 합은 검색 작업에 사용됩니다.
검색 작업 결과 테이블의 이름을 입력하고 검색 작업 실행을 선택합니다.
Azure Monitor 로그는 검색 작업을 실행하고 검색 작업 결과에 대한 작업 영역에 새 테이블을 만듭니다.
새 테이블이 준비되면 '<searchtablename>_SRCH' 보기를 선택하여 Log Analytics에서 테이블을 봅니다.
검색 작업 결과는 새로 만든 검색 작업 결과 테이블로 전달되기 시작할 때 사용할 수 있습니다.
Azure Monitor 로그는 검색 작업이 완료되면 완료 된 메시지를 표시합니다. 해당 메시지가 보이거나 진행률이%100%로 표시되면, 이제 검색과 일치하는 모든 레코드가 결과 테이블에 준비됩니다.
검색 작업을 실행하려면 테이블 - 만들기 또는 업데이트 API를 호출합니다. 호출에는 만들 결과 테이블의 이름이 포함됩니다. 결과 테이블의 이름은 _SRCH로 끝나야 합니다.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/<TableName>_SRCH?api-version=2021-12-01-preview
요청 본문
요청 본문에 다음 값을 포함합니다.
이름 |
형식 |
설명 |
properties.searchResults.query |
문자열 |
데이터를 쿼리하기 위해 KQL로 작성된 로그 쿼리입니다. |
properties.searchResults.limit |
integer |
결과 집합의 최대 레코드 수( 최대 1억 개의 레코드) (선택 사항) |
속성.검색결과.검색시작시간 |
문자열 |
검색 시간 범위의 시작입니다. |
속성.검색결과.검색종료시간 |
문자열 |
검색 시간 범위의 끝입니다. |
샘플 요청
이 예에서는 Syslog 테이블에서 특정 레코드를 검색하는 쿼리 결과로 Syslog_suspected_SRCH라는 테이블을 만듭니다.
요청
PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-00000000000/resourcegroups/testRG/providers/Microsoft.OperationalInsights/workspaces/testWS/tables/Syslog_suspected_SRCH?api-version=2021-12-01-preview
요청 본문
{
"properties": {
"searchResults": {
"query": "Syslog | where * has 'suspected.exe'",
"limit": 1000,
"startSearchTime": "2020-01-01T00:00:00Z",
"endSearchTime": "2020-01-31T00:00:00Z"
}
}
}
응답
상태 코드: 202 수락됨.
검색 작업을 실행하려면 az monitor log-analytics workspace table search-job create 명령을 실행합니다.
--name
매개 변수를 사용하여 설정한 결과 테이블의 이름은 _SRCH로 끝나야 합니다.
예제
az monitor log-analytics workspace table search-job create --subscription ContosoSID --resource-group ContosoRG --workspace-name ContosoWorkspace --name HeartbeatByIp_SRCH --search-query 'Heartbeat | where ComputerIP has "00.000.00.000"' --limit 1500 --start-search-time "2022-01-01T00:00:00.000Z" --end-search-time "2022-01-08T00:00:00.000Z" --no-wait
검색 작업을 실행하려면 New-AzOperationalInsightsSearchTable 명령을 실행합니다.
TableName
매개 변수를 사용하여 설정한 결과 테이블의 이름은 _SRCH로 끝나야 합니다.
예제
New-AzOperationalInsightsSearchTable -ResourceGroupName ContosoRG -WorkspaceName ContosoWorkspace -TableName HeartbeatByIp_SRCH -SearchQuery "Heartbeat" -StartSearchTime "01-01-2022 00:00:00" -EndSearchTime "01-01-2022 00:00:00"
검색 작업 상태 및 세부 정보 가져오기
Log Analytics 작업 영역 메뉴에서 로그를 선택합니다.
테이블>검색 결과에서 검색 결과 테이블을 마우스로 가리켜 진행률을 확인합니다.
검색 작업 결과 테이블의 아이콘은 검색 작업이 완료될 때까지 업데이트 표시기 아이콘을 표시합니다.
테이블 - 가져오기 API를 호출하여 검색 작업의 상태 및 세부 정보를 가져옵니다.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/<TableName>_SRCH?api-version=2021-12-01-preview
테이블 상태
각 검색 작업 테이블에는 다음 값 중 하나를 가질 수 있는 provisioningState라는 속성이 있습니다.
상태 |
설명 |
업데이트 중 |
테이블 및 해당 스키마 채우기. |
진행 중 |
검색 작업이 실행 중이며 데이터를 가져오는 중입니다. |
성공 |
검색 작업이 완료되었습니다. |
삭제 중 |
검색 작업 테이블을 삭제합니다. |
샘플 요청
이 예에서는 이전 예의 검색 작업에 대한 테이블 상태를 검색합니다.
요청
GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-00000000000/resourcegroups/testRG/providers/Microsoft.OperationalInsights/workspaces/testWS/tables/Syslog_SRCH?api-version=2021-12-01-preview
응답
{
"properties": {
"retentionInDays": 30,
"totalRetentionInDays": 30,
"archiveRetentionInDays": 0,
"plan": "Analytics",
"lastPlanModifiedDate": "Mon, 01 Nov 2021 16:38:01 GMT",
"schema": {
"name": "Syslog_SRCH",
"tableType": "SearchResults",
"description": "This table was created using a Search Job with the following query: 'Syslog | where * has 'suspected.exe'.'",
"columns": [...],
"standardColumns": [...],
"solutions": [
"LogManagement"
],
"searchResults": {
"query": "Syslog | where * has 'suspected.exe'",
"limit": 1000,
"startSearchTime": "Wed, 01 Jan 2020 00:00:00 GMT",
"endSearchTime": "Fri, 31 Jan 2020 00:00:00 GMT",
"sourceTable": "Syslog"
}
},
"provisioningState": "Succeeded"
},
"id": "subscriptions/00000000-0000-0000-0000-00000000000/resourcegroups/testRG/providers/Microsoft.OperationalInsights/workspaces/testWS/tables/Syslog_SRCH",
"name": "Syslog_SRCH"
}
검색 작업 테이블의 상태 및 세부 정보를 확인하려면 az monitor log-analytics workspace table show 명령을 실행합니다.
예제
az monitor log-analytics workspace table show --subscription ContosoSID --resource-group ContosoRG --workspace-name ContosoWorkspace --name HeartbeatByIp_SRCH --output table \
검색 작업 테이블의 상태와 세부 정보를 확인하려면 Get-AzOperationalInsightsTable 명령을 실행합니다.
예제
Get-AzOperationalInsightsTable -ResourceGroupName "ContosoRG" -WorkspaceName "ContosoWorkspace" -tableName "HeartbeatByIp_SRCH"
참고
"-TableName"이 제공되지 않으면 명령은 작업 영역과 연결된 모든 테이블을 나열합니다.
검색 작업 테이블 삭제
테이블 쿼리를 완료하면 쿼리 작업 테이블을 삭제하는 것이 좋습니다. 이 모범 사례는 작업 영역의 혼란과 데이터 보존에 대한 추가 요금을 줄입니다.
고려 사항
검색 작업에는 다음과 같은 고려 사항이 적용됩니다.
- 한 번에 하나의 테이블을 쿼리하도록 최적화되었습니다.
- 검색 날짜 범위는 총 보존 기간 내의 모든 기간입니다.
- 최대 24시간 제한 시간까지 장기간 실행되는 검색을 지원합니다.
- 결과는 레코드 집합에서 1억 개의 레코드로 제한됩니다.
- 동시 실행은 작업 영역당 10개의 검색 작업으로 제한됩니다.
- 작업 영역당 검색 결과 테이블이 200개로 제한됩니다.
- 작업 영역당 하루에 200개의 검색 작업 실행으로 제한됩니다.
레코드 제한에 도달하면 Azure는 부분 성공 상태로 작업을 중단하고 테이블에는 해당 지점까지 수집된 레코드만 포함됩니다.
KQL 쿼리 고려 사항
검색 작업은 특정 테이블에서 대량의 데이터를 검색하기 위한 것이므로 검색 작업 쿼리는 항상 테이블 이름으로 시작해야 합니다. 배포 및 구분을 사용하여 비동기 실행을 사용하도록 설정하기 위해 쿼리는 다음 연산자를 포함하여 KQL의 하위 집합을 지원합니다.
이러한 연산자 내의 모든 함수와 이진 연산자를 사용할 수 있습니다.
가격 책정 모델
검색 작업 요금은 다음을 기준으로 합니다.
예를 들어, 기본 테이블에 대한 검색이 30일 동안 이루어지고 테이블에 하루에 500GB의 데이터가 있는 경우, 검사된 데이터 15,000GB에 대한 요금이 부과됩니다. 검색 작업으로 1,000개 레코드가 반환되는 경우, 이 1,000개 레코드를 결과 테이블에 수집하는 데 요금이 부과됩니다.
자세한 내용은 Azure Monitor 가격을 참조하세요.
관련 콘텐츠