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()
aapp()
. - 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 .