Sdílet prostřednictvím


Dávkové dotazy

Rozhraní API služby Azure Monitor Log Analytics podporuje dávkové dotazy společně. Dávkové dotazy v současné době vyžadují ověřování Microsoft Entra.

Formát požadavku

K dávkovému dotazování použijte koncový bod rozhraní API a na konec adresy URL přidejte $batch: https://api.loganalytics.azure.com/v1/$batch.

Pokud není zahrnuta žádná metoda, dávkování ve výchozím nastavení metody GET. U požadavků GET rozhraní API ignoruje základní parametr objektu požadavku.

Dávkový požadavek zahrnuje běžné hlavičky pro jiné operace:

Content-Type: application/json
Authorization: Bearer <user token>

Tělo požadavku je pole objektů obsahujících následující vlastnosti:

  • id
  • headers
  • body
  • method
  • path
  • workspace

Příklad:

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

Formát odpovědi

Formát odpovědi je podobné pole objektů. Každý objekt obsahuje:

  • The ID
  • Stavový kód HTTP konkrétního dotazu
  • Tělo vrácené odpovědi pro tento dotaz.

Pokud se dotaz úspěšně nevrátí, text odpovědi obsahuje chybové zprávy. Chybové zprávy se vztahují pouze na jednotlivé dotazy v dávce; samotná dávka vrátí stavový kód nezávislý na návratových hodnotách jejích členů. Dávka se úspěšně vrátí, pokud je dávka:

  • Správně formátované a správně formátované
  • Ověřeno
  • Autorizovaný

Dávka se úspěšně vrátí i v případě, že výsledky dotazů členů můžou být kombinací úspěchů a selhání.

Příklad:

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

Chování a chyby

Pořadí odpovědí uvnitř vráceného objektu nesouvisí s pořadím v požadavku. Doba, která trvá, určuje dokončení jednotlivých dotazů. Pomocí ID namapujte objekty odpovědi dotazu na původní požadavky. Nepředpokládáme, že odpovědi na dotazy jsou v pořadí.

Celá dávková žádost selže pouze v případě, že:

  • Formát JSON vnější datové části není platný.
  • Ověřování selže: Uživatel nezadá ověřovací token nebo je neplatný.
  • Jednotlivé objekty požadavku v dávce nemají požadované vlastnosti nebo existují duplicitní ID.

Za těchto podmínek se tvar odpovědi liší od normálního kontejneru. Objekty obsažené v dávkovém objektu můžou být neúspěšné nebo úspěšné nezávisle, viz následující ukázkové chyby.

Příklady chyb

Tento seznam je neexhausivní seznam příkladů možných chyb a jejich významů.

  • 400 - Poškozený požadavek. Vnější objekt požadavku nebyl platný 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 - Zakázáno. Zadaný token nemá přístup k prostředku, ke kterém se pokoušíte získat přístup. Ujistěte se, že váš požadavek na token má správný prostředek a že jste udělili oprávnění pro vaši aplikaci 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 - Není umístěn. Nemáte žádná data, která by rozhraní API mohlo načíst do záložního úložiště. Jedná se o technicky úspěšnou žádost jako chybu 2xx. V dávce je ale užitečné si tuto chybu poznamenat.

    {
        "responses": [
            {
                "id": "2",
                "status": 204,
                "body": {
                    "error": {
                        "code": "WorkspaceNotPlacedError"
                    }
                }
            }
        ]
    }
    
  • 404 - Nenalezena. Cesta dotazu neexistuje. K této chybě může dojít také v dávce, pokud v individuálním požadavku zadáte neplatnou metodu HTTP.

    {
        "responses": [
            {
                "id": "1",
                "status": 404,
                "body": {
                    "error": {
                        "message": "The requested path does not exist",
                        "code": "PathNotFoundError"
                    }
                }
            }
        ]
    }
    
  • 400 – Nepodařilo se přeložit prostředek. Identifikátor GUID představující pracovní prostor je nesprávný.

    {
        "responses": [
            {
                "id": "1",
                "status": 400,
                "body": {
                    "error": {
                        "code": "FailedToResolveResource",
                        "message": "Resource identity could not be resovled"
                    }
                }
            }
        ]
    }