Sdílet prostřednictvím


Dotazování dat v pracovních prostorech, aplikacích a prostředcích služby Log Analytics ve službě Azure Monitor

Existují dva způsoby dotazování dat z více pracovních prostorů, aplikací a prostředků:

  • Explicitně zadáním informací o pracovním prostoru, aplikaci nebo prostředku pomocí výrazů workspace(), app() nebo resource(), jak je popsáno v tomto článku.
  • Implicitně pomocí dotazů kontextových prostředků. Když se dotazujete v kontextu konkrétního prostředku, skupiny prostředků nebo předplatného, dotaz načte relevantní data ze všech pracovních prostorů, které obsahují data pro tyto prostředky. Dotazy na kontext prostředků nenačítají data z klasických prostředků Application Insights.

Tento článek vysvětluje, jak pomocí workspace()výrazů , app()a resource() výrazů dotazovat data z více pracovních prostorů, aplikací a prostředků služby Log Analytics.

Pokud spravujete předplatná v jiných tenantech Microsoft Entra prostřednictvím služby Azure Lighthouse, můžete do dotazů zahrnout pracovní prostory služby Log Analytics vytvořené v těchto tenantech zákazníků.

Důležité

Pokud používáte prostředek Application Insights založený na pracovním prostoru, telemetrie se ukládá do pracovního prostoru služby Log Analytics se všemi ostatními daty protokolu. Pomocí výrazu workspace() můžete dotazovat data z aplikací ve více pracovních prostorech. K dotazování dat z více aplikací ve stejném pracovním prostoru nepotřebujete dotaz mezi pracovními prostory.

Požadována oprávnění

Akce Požadována oprávnění
Kontrola stavu pracovního prostoru Microsoft.OperationalInsights/workspaces/query/*/read oprávnění k pracovním prostorům služby Log Analytics, které dotazujete, jak poskytuje integrovaná role Log Analytics Reader, například.
Uložení dotazu microsoft.operationalinsights/querypacks/queries/action oprávnění k sadě dotazů, do které chcete dotaz uložit, jak poskytuje předdefinovaná role přispěvatele Log Analytics, například.

Omezení

  • Dotazy mezi prostředky a křížovými službami nepodporují parametrizované funkce a funkce, jejichž definice zahrnuje jiné výrazy mezi pracovními prostory nebo mezi službami, včetně adx(), , arg()resource(), workspace()a app().
  • Do jednoho dotazu můžete zahrnout až 100 pracovních prostorů služby Log Analytics nebo klasických prostředků Application Insights.
  • Dotazování na velký počet prostředků může výrazně zpomalit dotaz.
  • Dotazy napříč prostředky v upozorněních prohledávání protokolu se podporují jenom v aktuálním naplánovaném rozhraní APIQueryRules. Pokud používáte starší rozhraní API upozornění Log Analytics, budete muset přepnout na aktuální rozhraní API.
  • Odkazy na křížový prostředek, například jiný pracovní prostor, by měly být explicitní a nelze je parametrizovat.

Dotazování mezi pracovními prostory, aplikacemi a prostředky pomocí funkcí

Tato část vysvětluje, jak dotazovat pracovní prostory, aplikace a prostředky pomocí funkcí s funkcí bez použití funkce.

Dotazování bez použití funkce

Z jakékoli instance prostředků můžete dotazovat více prostředků. Tyto prostředky můžou být sloučené pracovní prostory a aplikace.

Příklad dotazu napříč třemi pracovními prostory:

union 
  Update, 
  workspace("00000000-0000-0000-0000-000000000001").Update, 
  workspace("00000000-0000-0000-0000-000000000002").Update
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification

Další informace o sjednocení, kde a sumarizovat operátory naleznete v tématu operátor sjednocení, kde operátor a operátor sumarizace.

Dotazování pomocí funkce

Když použijete dotazy mezi prostředky ke korelaci dat z více pracovních prostorů služby Log Analytics a komponent Application Insights, může být dotaz složitý a obtížně udržovatelný. Pomocí funkcí v dotazech protokolu služby Azure Monitor byste měli oddělit logiku dotazu od rozsahu prostředků dotazu. Tato metoda zjednodušuje strukturu dotazu. Následující příklad ukazuje, jak můžete monitorovat více komponent Application Insights a vizualizovat počet neúspěšných požadavků podle názvu aplikace.

Vytvořte dotaz podobný následujícímu příkladu, který odkazuje na obor komponent Application Insights. Příkaz withsource= SourceApp přidá sloupec, který určuje název aplikace, který odeslal protokol. Uložte dotaz jako funkci s aliasem applicationsScoping.

// crossResource function that scopes my Application Insights components
union withsource= SourceApp
app('00000000-0000-0000-0000-000000000000').requests, 
app('00000000-0000-0000-0000-000000000001').requests,
app('00000000-0000-0000-0000-000000000002').requests,
app('00000000-0000-0000-0000-000000000003').requests,
app('00000000-0000-0000-0000-000000000004').requests

Tuto funkci teď můžete použít v dotazu mezi prostředky, jako je následující příklad. Alias applicationsScoping funkce vrátí sjednocení tabulky požadavků ze všech definovaných aplikací. Dotaz pak filtruje neúspěšné požadavky a vizualizuje trendy podle aplikace. Operátor parse je v tomto příkladu nepovinný. Extrahuje název aplikace z SourceApp vlastnosti.

applicationsScoping 
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationId ')' * 
| summarize count() by applicationId, bin(timestamp, 1h) 
| render timechart

Poznámka:

Tuto metodu nelze použít s upozorněními prohledávání protokolu, protože při vytváření upozornění se provádí ověření přístupu k prostředkům pravidla upozornění, včetně pracovních prostorů a aplikací. Přidání nových prostředků do funkce po vytvoření upozornění se nepodporuje. Pokud dáváte přednost použití funkce pro obor prostředků v upozorněních prohledávání protokolu, musíte upravit pravidlo upozornění na portálu nebo pomocí šablony Azure Resource Manageru, aby se aktualizovaly omezené prostředky. Případně můžete do dotazu upozornění prohledávání protokolu zahrnout seznam prostředků.

Dotazování napříč pracovními prostory služby Log Analytics pomocí pracovních prostorů ()

Pomocí výrazu workspace() můžete načíst data z konkrétního pracovního prostoru ve stejné skupině prostředků, jiné skupině prostředků nebo jiném předplatném. Tento výraz můžete použít k zahrnutí dat protokolu do dotazu Application Insights a k dotazování dat v několika pracovních prostorech v dotazu protokolu.

Syntaxe

workspace(Identifikátor)

Argumenty

*Identifier*: Identifikuje pracovní prostor pomocí jednoho z formátů v následující tabulce.

Identifikátor Popis Příklad
ID IDENTIFIKÁTOR GUID pracovního prostoru workspace("00000000-0000-0000-0000-0000000000")
ID prostředku Azure Identifikátor prostředku Azure workspace("/subscriptions/00000000-0000-0000-0000-00000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail")

Příklady

workspace("00000000-0000-0000-0000-000000000000").Update | count
workspace("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail").Event | count
union 
( workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myRoleInstance")
| count  
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests) | where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))

Dotazování napříč klasickými aplikacemi Application Insights pomocí app()

Pomocí výrazu app můžete načíst data z konkrétního klasického prostředku Application Insights ve stejné skupině prostředků, jiné skupině prostředků nebo jiném předplatném. Pokud používáte prostředek Application Insights založený na pracovním prostoru, telemetrie se ukládá do pracovního prostoru služby Log Analytics se všemi ostatními daty protokolu. Pomocí výrazu workspace() můžete dotazovat data z aplikací ve více pracovních prostorech. K dotazování dat z více aplikací ve stejném pracovním prostoru nepotřebujete dotaz mezi pracovními prostory.

Syntaxe

app(Identifikátor)

Argumenty

*Identifier*: Identifikuje aplikaci pomocí jednoho z formátů v následující tabulce.

Identifikátor Popis Příklad
ID IDENTIFIKÁTOR GUID aplikace app("00000000-0000-0000-0000-0000000000")
ID prostředku Azure Identifikátor prostředku Azure app("/subscriptions/0000000-0000-0000-0000-0000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp")

Příklady

app("00000000-0000-0000-0000-000000000000").requests | count
app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myColumnInstance")
| count  
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests)
| where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))

Korelace dat mezi prostředky pomocí prostředku()

Výraz resource se používá v dotazu služby Azure Monitor, který je vymezený na prostředek k načtení dat z jiných prostředků.

Syntaxe

resource(Identifikátor)

Argumenty

*Identifier*: Identifikuje prostředek, skupinu prostředků nebo předplatné, ze kterého se mají data korelovat.

Identifikátor Popis Příklad
Prostředek Zahrnuje data pro prostředek. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm")
Skupina prostředků nebo předplatné Zahrnuje data pro prostředek a všechny prostředky, které obsahuje. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/resourcesgroups/myresourcegroup)

Příklady

union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm").Heartbeat) | summarize count() by _ResourceId, TenantId
union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup").Heartbeat) | summarize count() by _ResourceId, TenantId

Další kroky

Přehled dotazů na protokoly a strukturování dat protokolů služby Azure Monitor najdete v tématu Analýza dat protokolu ve službě Azure Monitor .