批次查詢
Azure 監視器 Log Analytics API 支援批次處理查詢。 批次查詢目前需要 Microsoft Entra 驗證。
要求格式
若要批次處理查詢,請使用 API 端點,並在 URL 結尾新增 $batch:https://api.loganalytics.azure.com/v1/$batch
。
如果未包含任何方法,則批次處理會預設為 GET 方法。 在 GET 要求上,API 會忽略要求物件的 body 參數。
批次要求包含其他作業的一般標頭:
Content-Type: application/json
Authorization: Bearer <user token>
要求的本文是包含下列屬性的物件陣列:
id
headers
body
method
path
workspace
範例:
POST https://api.loganalytics.azure.com/v1/$batch
Content-Type: application/json
Authorization: Bearer <user token>
Cache-Control: no-cache
{
"requests":
[
{
"id": "1",
"headers": {
"Content-Type": "application/json"
},
"body": {
"query": "AzureActivity | summarize count()",
"timespan": "PT1H"
},
"method": "POST",
"path": "/query",
"workspace": "workspace-1"
},
{
"id": "2",
"headers": {
"Content-Type": "application/json"
},
"body": {
"query": "ApplicationInsights | limit 10",
"timespan": "PT1H"
},
"method": "POST",
"path": "/fakePath",
"workspace": "workspace-2"
}
]
}
回應格式
回應格式是物件的類似陣列。 每個物件包含:
- 識別碼
- 特定查詢的 HTTP 狀態碼
- 該查詢所傳回回應的本文。
如果查詢未成功傳回,回應本文會包含錯誤訊息。 錯誤訊息只適用於批次中的個別查詢;批次本身會傳回的狀態碼會與其成員傳回的值無關。 批次會成功傳回,前提是批次:
- 語式正確且正確格式化
- 已驗證
- 已授權
即使成員查詢的結果可能是成功和失敗的混合,批次仍會成功傳回。
範例:
{
"responses":
[
{
"id": "2",
"status": 404,
"body": {
"error": {
"message": "The requested path does not exist",
"code": "PathNotFoundError"
}
}
},
{
"id": "1",
"status": 200,
"body": {
"tables": [
{
"name": "PrimaryResult",
"columns": [
{
"name": "Count",
"type": "long"
}
],
"rows": [
[
7240
]
]
}
]
}
}
]
}
行為和錯誤
傳回物件內的回應順序與要求中的順序無關。 完成每個個別查詢所花費的時間。 使用識別碼將查詢回應物件與原始要求對應。 請勿假設查詢回應會依序排列。
只有在下列條件成立時,整個批次要求才會失敗:
- 外部承載的 JSON 格式無效。
- 驗證失敗:使用者未提供驗證權杖,或權杖無效。
- 批次中的個別要求對象沒有必要的屬性,或有重複的標識碼。
在這些情況下,回應的形狀與一般容器不同。 批次物件中包含的物件可能會個別失敗或成功,請參閱下列範例錯誤。
範例錯誤
這份清單是可能錯誤及其意義之範例的非exhaustive 清單。
400 - 要求格式錯誤。 外部要求物件不是有效的 JSON。
{ "error": { "message": "The request had some invalid properties", "code": "BadArgumentError", "innererror": { "code": "QueryValidationError", "message": "Failed parsing the query", "details": [ { "code": "InvalidJsonBody", "message": "Unexpected end of JSON input", "target": null } ] } } }
403 - 禁止。 提供的令牌無法存取您嘗試存取的資源。 請確定您的令牌要求具有正確的資源,而且您已為 Microsoft Entra 應用程式授與許可權。
{ "error": { "message": "The provided authentication is not valid for this resource", "code": "InvalidTokenError", "innererror": { "code": "SignatureVerificationFailed", "message": "Could not validate the request" } } }
204 - 未放置。 您沒有可讓 API 提取至備份存放區的任何資料。 由於 2xx 錯誤,這在技術上是成功的要求。 不過,在批次中,記下錯誤很有用。
{ "responses": [ { "id": "2", "status": 204, "body": { "error": { "code": "WorkspaceNotPlacedError" } } } ] }
404 - 找不到。 查詢路徑不存在。 如果您在個別要求中指定無效的 HTTP 方法,則也會在批次中發生此錯誤。
{ "responses": [ { "id": "1", "status": 404, "body": { "error": { "message": "The requested path does not exist", "code": "PathNotFoundError" } } } ] }
400 - 無法解析資源。 代表工作區的 GUID 不正確。
{ "responses": [ { "id": "1", "status": 400, "body": { "error": { "code": "FailedToResolveResource", "message": "Resource identity could not be resovled" } } } ] }