共用方式為


批次查詢

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"
                    }
                }
            }
        ]
    }