Freigeben über


Batch-Abfragen

Die Azure Monitor Log Analytics-API unterstützt die Batchverarbeitung von Abfragen. Batchabfragen erfordern derzeit die Microsoft Entra-Authentifizierung.

Anforderungsformat

Verwenden Sie für die Batchverarbeitung von Abfragen den API-Endpunkt, und fügen Sie ans Ende der URL „$batch“ an: https://api.loganalytics.azure.com/v1/$batch.

Ist keine Methode enthalten, wird bei der Batchverarbeitung standardmäßig die GET-Methode verwendet. Bei GET-Anforderungen ignoriert die API den Textkörperparameter des Anforderungsobjekts.

Die Batchanforderung enthält reguläre Header für andere Vorgänge:

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

Der Text der Anforderung ist ein Array von Objekten, das die folgenden Eigenschaften enthält:

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

Beispiel:

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

Antwortformat

Das Antwortformat ist ein ähnliches Array von Objekten. Jedes Objekt enthält Folgendes:

  • Die ID
  • Den HTTP-Statuscode der jeweiligen Abfrage
  • Den Text der zurückgegebenen Antwort für diese Abfrage

Wurde eine Abfrage nicht erfolgreich ausgeführt, enthält der Antworttext Fehlermeldungen. Die Fehlermeldungen gelten nur für die einzelnen Abfragen im Batch. Der Batch selbst gibt einen Statuscode unabhängig von den Rückgabewerten seiner Mitglieder zurück. Der Batch wurde erfolgreich ausgeführt, wenn er folgende Eigenschaften aufweist:

  • Wohlgeformt und ordnungsgemäß formatiert
  • Authentifiziert
  • Autorisierte

Der Batch wird erfolgreich zurückgegeben, auch wenn nur ein Teil der Ergebnisse der Memberabfragen erfolgreich war.

Beispiel:

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

Verhalten und Fehler

Die Reihenfolge der Antworten innerhalb des zurückgegebenen Objekts ist unabhängig von der Reihenfolge in der Anforderung. Sie wird durch die Zeit bestimmt, die für das Abschließen der einzelnen Abfragen benötigt wird. Verwenden Sie IDs, um die Abfrageantwortobjekte den ursprünglichen Anforderungen zuzuordnen. Gehen Sie nicht davon aus, dass die Abfrageantworten in der richtigen Reihenfolge vorliegen.

Eine gesamte Batchanforderung ist nur in den folgenden Fällen nicht erfolgreich:

  • Das JSON-Format der äußeren Nutzlast ist ungültig.
  • Fehler bei der Authentifizierung: Der Benutzer stellt kein Authentifizierungstoken zur Verfügung, oder das Token ist ungültig.
  • Einzelne Anforderungsobjekte im Batch verfügen nicht über die erforderlichen Eigenschaften, oder es sind doppelte IDs vorhanden.

Unter diesen Bedingungen unterscheidet sich die Form der Antwort von einem normalen Container. Bei den im Batchobjekt enthaltenen Objekte können unabhängig voneinander Fehler auftreten oder nicht.

Beispielfehler

Im Anschluss finden Sie eine unvollständige Liste mit Beispielen für mögliche Fehler und deren Bedeutung.

  • 400: Falsch formatierte Anforderung. Das äußere Anforderungsobjekt war kein gültiger JSON-Code.

    {
        "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: Unzulässig. Das bereitgestellte Token hat keinen Zugriff auf die Ressource, auf die Sie zugreifen möchten. Stellen Sie sicher, dass Ihre Tokenanforderung über die richtige Ressource verfügt und Sie Berechtigungen für Ihre Microsoft Entra-Anwendung erteilt haben.

    {
        "error": {
            "message": "The provided authentication is not valid for this resource",
            "code": "InvalidTokenError",
            "innererror": {
                "code": "SignatureVerificationFailed",
                "message": "Could not validate the request"
            }
        }
    }
    
  • 204 - Not Placed (204: Nicht platziert). Sie haben keine Daten, die von der API im Sicherungsspeicher gepullt werden können. Mit einem 2xx-Fehler ist dies im Grunde genommen eine erfolgreiche Anforderung. In einem Batch ist es jedoch hilfreich, den Fehler zu notieren.

    {
        "responses": [
            {
                "id": "2",
                "status": 204,
                "body": {
                    "error": {
                        "code": "WorkspaceNotPlacedError"
                    }
                }
            }
        ]
    }
    
  • 404: Nicht gefunden. Der Abfragepfad ist nicht vorhanden. Dieser Fehler kann auch in einem Batch auftreten, wenn Sie eine ungültige HTTP-Methode in der einzelnen Anforderung angeben.

    {
        "responses": [
            {
                "id": "1",
                "status": 404,
                "body": {
                    "error": {
                        "message": "The requested path does not exist",
                        "code": "PathNotFoundError"
                    }
                }
            }
        ]
    }
    
  • 400: Die Ressource kann nicht aufgelöst werden. Die GUID, die den Arbeitsbereich darstellt, ist falsch.

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