Formát požadavku pro rozhraní API pro dotazy služby Azure Monitor Logs

Rozhraní API pro dotazy nad protokoly umožňuje spouštět dotazy v jazyce Kusto Query Language (KQL) v pracovním prostoru Log Analytics prostřednictvím veřejného koncového bodu REST. Programově získávejte nebo analyzujte data protokolů pro automatizaci, vlastní reporting nebo integraci s dalšími nástroji.

Tento článek ukazuje, jak formátovat požadavky GET a POST koncového bodu rozhraní API pro dotazy protokolů, včetně přímých příkladů REST a ekvivalentních příkazů Azure CLI a rutin Azure PowerShell.

Širší povrch rozhraní API Azure Monitor najdete v indexu rozhraní REST API Azure Monitor.

Formát koncového bodu veřejného dotazu

Koncový bod rozhraní API pro dotazy na veřejné protokoly má tento formát:

https://api.loganalytics.azure.com/{apiVersion}/workspaces/{workspaceId}/query?[parameters]

  • apiVersion je verze rozhraní API pro veřejné dotazy. Použijte v1.
  • workspaceId je identifikátor GUID pracovního prostoru Log Analytics k dotazování.
  • [parameters] jsou řetězcové hodnoty dotazu, například query, timespana workspaces.

Parametry dotazu

Tyto parametry předejte v řetězci dotazu pro GET požadavky nebo v textu JSON pro POST požadavky.

Parametr Povinné Description
query Ano Dotaz KQL, který se má spustit.
timespan No Časový rozsah dotazu. Použijte dobu trvání ISO 8601 (například PT12H 12 hodin) nebo dvojici zahájení/ukončení oddělenou / (například 2024-01-01/2024-01-02). Pokud tento dotaz vynecháte, spustí se pro všechna dostupná data.
workspaces No Další ID pracovních prostorů, která se mají zahrnout do dotazu napříč pracovními prostory.

Formát požadavku GET

V případě GET požadavků zahrňte do řetězce dotazu parametry požadavku. Pokud například chcete za posledních 12 hodin spočítat počet událostí AzureActivity podle Category, použijte následující požadavek:

Slouží az rest k přímému volání rozhraní API pro dotazy protokolů.

subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
workspaceId="myWorkspaceId"
query="AzureActivity | summarize count() by Category"
timespan="PT12H"
logsQueryApiEndpoint="https://api.loganalytics.io"
resourceId="$logsQueryApiEndpoint/v1/workspaces/$workspaceId/query"

az account set --subscription "$subscriptionId"

az rest \
  --method get \
  --uri "$resourceId?query=$query&timespan=$timespan" \
  --resource "$logsQueryApiEndpoint"

Alternativně Azure CLI podporuje tuto operaci pomocí příkazu az monitor log-analytics query. Je součástí obecně dostupného rozšíření log-analytics, které Azure CLI nainstaluje automaticky.

subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
workspaceId="myWorkspaceId"
query="AzureActivity | summarize count() by Category"
timespan="PT12H"

az account set --subscription "$subscriptionId"

az monitor log-analytics query \
  --workspace "$workspaceId" \
  --analytics-query "$query" \
  --timespan "$timespan"

Formát požadavku POST

V případě POST požadavků odešlete parametry požadavku v textu JSON.

  • Text požadavku musí být platný JSON.
  • Zahrňte Content-Type: application/json záhlaví.
  • Vložte hodnoty požadavku, například query, timespana workspaces do textu JSON.
  • Pokud zadáte timespan jak v řetězci dotazu, tak v těle požadavku, služba použije průnik obou hodnot.

Slouží az rest k přímému volání rozhraní API pro dotazy protokolů.

subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
workspaceId="myWorkspaceId"
logsQueryApiEndpoint="https://api.loganalytics.io"
resourceId="$logsQueryApiEndpoint/v1/workspaces/$workspaceId/query"
payloadFile="./query-payload.json"

az account set --subscription "$subscriptionId"

az rest \
  --method post \
  --uri "$resourceId" \
  --resource "$logsQueryApiEndpoint" \
  --headers Content-Type=application/json \
  --body @"$payloadFile"

Soubor s datovou částí (query-payload.json):

{
  "query": "AzureActivity | summarize count() by Category",
  "timespan": "PT12H"
}

Případně použijte příkaz az monitor log-analytics query, který skrývá formát požadavku HTTP a funguje pro scénáře dotazů GET i POST. Ukázku příkazu najdete v části Formát požadavku GET .