共用方式為


批次查詢

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
  • 標題
  • 本文
  • method
  • path
  • 工作區

範例:

    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 格式無效。
  • 驗證失敗:使用者未提供驗證權杖,或權杖無效。
  • 批次中的個別要求物件沒有必要的屬性,或有重複的識別碼。

在這些情況下,回應的形狀會與一般容器不同。 批次物件內包含的物件可能會各自失敗或成功。 如需範例,請參閱下方內容。

範例錯誤

此清單是可能的錯誤及其意義範例的非詳盡清單。

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