Dela via


Batchfrågor

Azure Monitor Log Analytics-API:et stöder batchbearbetning av frågor tillsammans. Batch-frågor kräver för närvarande Microsoft Entra-autentisering.

Begärandeformat

Om du vill batcha frågor använder du API-slutpunkten och lägger till $batch i slutet av URL:en: https://api.loganalytics.azure.com/v1/$batch.

Om ingen metod ingår är batchbearbetning standardinställningen för GET-metoden. På GET-begäranden ignorerar API:et brödtextparametern för begärandeobjektet.

Batch-begäran innehåller vanliga rubriker för andra åtgärder:

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

Brödtexten i begäran är en matris med objekt som innehåller följande egenskaper:

  • id
  • rubriker
  • brödtext
  • metod
  • path
  • arbetsyta

Exempel:

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

Svarsformat

Svarsformatet är en liknande matris med objekt. Varje objekt innehåller:

  • ID:t
  • HTTP-statuskoden för den specifika frågan
  • Brödtexten för det returnerade svaret för den frågan.

Om en fråga inte returneras korrekt innehåller svarstexten felmeddelanden. Felmeddelandena gäller endast för enskilda frågor i batchen. själva batchen returnerar en statuskod oberoende av medlemmarnas returvärden. Batchen returnerar om batchen är:

  • Välformaterad och korrekt formaterad
  • Autentiserad
  • Auktoriserad Batchen returnerar korrekt även när resultatet av dess medlemsfrågor kan vara en blandning av lyckade och misslyckade.

Exempel

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

Beteende och fel

Ordningen på svar i det returnerade objektet är inte relaterad till ordningen i begäran. Det bestäms av den tid det tar för varje enskild fråga att slutföras. Använd ID:er för att mappa frågesvarsobjekten till de ursprungliga begärandena. Anta inte att frågesvaren är i ordning.

En hel batchbegäran misslyckas bara om:

  • JSON-formatet för den yttre nyttolasten är inte giltigt.
  • Autentiseringen misslyckas: Användaren anger ingen autentiseringstoken eller så är token ogiltig.
  • Enskilda begärandeobjekt i batchen har inte nödvändiga egenskaper, eller så finns det duplicerade ID:er.

Under dessa förhållanden skiljer sig svarets form från den normala containern. Objekten i batchobjektet kan misslyckas eller lyckas oberoende av varandra. Nedan visas ett exempel.

Exempelfel

Den här listan är en icke-fullständig lista över exempel på möjliga fel och deras betydelser.

  • 400 – Felaktig begäran. Det yttre begärandeobjektet var inte giltigt 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 - Förbjudet. Den angivna token har inte åtkomst till den resurs som du försöker komma åt. Kontrollera att din tokenbegäran har rätt resurs och att du har beviljat behörigheter för ditt Microsoft Entra-program.
    {
        "error": {
            "message": "The provided authentication is not valid for this resource",
            "code": "InvalidTokenError",
            "innererror": {
                "code": "SignatureVerificationFailed",
                "message": "Could not validate the request"
            }
        }
    }
  • 204 - Inte placerad. Du har inga data för API:et som ska hämtas i lagringsplatsen. Som 2xx är detta tekniskt sett en lyckad begäran. I en batch är det dock användbart att notera felet.
    {
        "responses": [
            {
                "id": "2",
                "status": 204,
                "body": {
                    "error": {
                        "code": "WorkspaceNotPlacedError"
                    }
                }
            }
        ]
    }
  • 404 – Hittades inte. Frågesökvägen finns inte. Det här felet kan också inträffa i en batch om du anger en ogiltig HTTP-metod i den enskilda begäran.
    {
        "responses": [
            {
                "id": "1",
                "status": 404,
                "body": {
                    "error": {
                        "message": "The requested path does not exist",
                        "code": "PathNotFoundError"
                    }
                }
            }
        ]
    }
  • 400 – Det gick inte att matcha resursen. DET GUID som representerar arbetsytan är felaktigt.
    {
        "responses": [
            {
                "id": "1",
                "status": 400,
                "body": {
                    "error": {
                        "code": "FailedToResolveResource",
                        "message": "Resource identity could not be resovled"
                    }
                }
            }
        ]
    }