Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Esistono due modi per eseguire query sui dati da più aree di lavoro, applicazioni e risorse:
- Esplicito : specificare come destinazione l'area di lavoro, l'app o la risorsa usando le espressioni workspace(), app()o resource(), come descritto in questo articolo.
- Implicit: usare query di contesto delle risorse. Quando si esegue una query nel contesto di una risorsa, di un gruppo di risorse o di una sottoscrizione specifica, la query recupera i dati pertinenti da tutte le aree di lavoro che contengono dati per queste risorse. Le query di contesto delle risorse non recuperano dati dalle risorse classiche di Application Insights.
Questo articolo illustra come usare le espressioni esplicite workspace(), app()e resource() per eseguire query sui dati da più aree di lavoro, applicazioni e risorse di Log Analytics.
Quando si gestiscono sottoscrizioni in altri tenant di Microsoft Entra con Azure Lighthouse, le aree di lavoro Log Analytics create in tali tenant dei clienti possono essere usate nelle query tra aree di lavoro.
Importante
Se si usa una risorsa di Application Insights basata sull'area di lavoro, i dati di telemetria vengono archiviati in un'area di lavoro Log Analytics con tutti gli altri dati di log. Usare l'espressione workspace() per eseguire query sui dati dalle applicazioni in più aree di lavoro. Non è necessaria una query tra aree di lavoro per eseguire query sui dati di più applicazioni nella stessa area di lavoro.
Autorizzazioni obbligatorie
| Azione | Autorizzazioni obbligatorie |
|---|---|
| Controllare lo stato dell'area di lavoro | Autorizzazioni Microsoft.OperationalInsights/workspaces/query/*/read per le aree di lavoro Log Analytics su cui si esegue la query, ad esempio le autorizzazioni fornite dal ruolo predefinito Lettore di Log Analytics. |
| Salvare un'interrogazione | Autorizzazioni microsoft.operationalinsights/querypacks/queries/action per il pacchetto di query in cui si vuole salvare la query, ad esempio le autorizzazioni fornite dal ruolo predefinito Collaboratore di Log Analytics. |
Considerazioni
- Le query tra risorse e tra servizi non supportano funzioni e funzioni con parametri la cui definizione include altre espressioni tra aree di lavoro o tra servizi, tra cui
adx(),arg()resource(),workspace(), eapp(). - È possibile includere fino a 100 aree di lavoro Log Analytics o risorse classiche di Application Insights in una singola query.
- L'esecuzione di query su un numero elevato di risorse può rallentare notevolmente l'operazione.
- Le query tra risorse negli avvisi di ricerca log sono supportate solo nell'API scheduledQueryRules corrente. Se si usa l'API degli avvisi di Log Analytics legacy, è necessario passare all'API corrente.
- I riferimenti a una risorsa incrociata, ad esempio un'altra area di lavoro, devono essere espliciti e non possono essere parametrizzati.
Usare le funzioni per semplificare le query
Questa sezione illustra come eseguire query su aree di lavoro, applicazioni e risorse con e senza usare una funzione.
Eseguire query senza usare una funzione
È sempre possibile usare espressioni esplicite direttamente per eseguire query su più risorse. Queste risorse possono essere combinazioni di aree di lavoro e app.
Esempio per una query in tre aree di lavoro:
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
Per altre informazioni, vedere Operatore union, Operatore where e Operatore summarize.
Interrogare usando una funzione
Quando si usano query tra risorse per correlare i dati di più aree di lavoro di Log Analytics e componenti di Application Insights, la query può diventare complessa e difficile da gestire. È consigliabile usare funzioni nelle query di log di Monitoraggio di Azure per separare la logica di query dalla definizione dell'ambito delle risorse di query. Questo metodo semplifica la struttura della query. L'esempio seguente mostra come è possibile monitorare più componenti di Application Insights e visualizzare il numero di richieste non riuscite per nome applicazione.
Creare una query analoga all'esempio seguente che fa riferimento all'ambito dei componenti di Application Insights. Il comando withsource= SourceApp aggiunge una colonna che indica il nome dell'applicazione che ha inviato il log.
Salvare la query come funzione con l'alias 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
A questo punto è possibile usare questa funzione in una query tra risorse simile all'esempio seguente. L'alias della funzione applicationsScoping restituisce l'unione della tabella di richieste da tutte le applicazioni definite. La query filtra quindi le richieste non riuscite e visualizza le tendenze per applicazione. L'operatore parse è facoltativo in questo esempio. Estrae il nome dell'applicazione dalla proprietà SourceApp.
applicationsScoping
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationId ')' *
| summarize count() by applicationId, bin(timestamp, 1h)
| render timechart
Nota
Questo metodo non può essere usato con gli avvisi per la ricerca di log perché la convalida dell'accesso delle risorse delle regole di avviso, incluse le aree di lavoro e le applicazioni, viene eseguita in fase di creazione degli avvisi. L'aggiunta di nuove risorse alla funzione dopo la creazione degli avvisi non è supportata. Se si preferisce usare una funzione per la definizione dell'ambito delle risorse negli avvisi per la ricerca di log, è necessario modificare la regola di avviso nel portale o con un modello di Azure Resource Manager per aggiornare le risorse con ambito. In alternativa, includere l'elenco delle risorse nella query di avviso di ricerca log.
Eseguire query tra aree di lavoro Log Analytics usando workspace()
Usare l'espressione workspace() per recuperare dati da un'area di lavoro specifica nello stesso gruppo di risorse, in un altro gruppo di risorse o in un'altra sottoscrizione. È possibile usare questa espressione per includere dati di log in una query di Application Insights e per eseguire query sui dati in più aree di lavoro in una query di log.
Sintassi
workspace(
Identificatore)
Argomenti
Identifier: i formati di identificatore espliciti nella tabella seguente rappresentano il modo migliore per eseguire query sulle aree di lavoro perché sono i più efficienti.
| Identificatore | Descrizione | Esempio |
|---|---|---|
| Documento d'identità | Identificatore univoco dell'area di lavoro | workspace("00000000-0000-0000-0000-000000000000") |
| ID risorsa di Azure | Identificatore della risorsa di Azure | workspace("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail") |
Altri identificatori dell'area di lavoro che usano solo il nome dell'area di lavoro o il nome della risorsa dell'area di lavoro non sono consigliati perché comportano una riduzione delle prestazioni e dei possibili errori durante l'esecuzione di query tra aree di lavoro.
Esempi
workspace("00000000-0000-0000-0000-000000000000").Update | count
workspace("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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"))
Eseguire query tra applicazioni classiche di Application Insights usando app()
Usare l'espressione app per recuperare dati da una risorsa classica di Application Insights specifica nello stesso gruppo di risorse, in un altro gruppo di risorse o in un'altra sottoscrizione. Se si usa una risorsa di Application Insights basata sull'area di lavoro, i dati di telemetria vengono archiviati in un'area di lavoro Log Analytics con tutti gli altri dati di log. Usare l'espressione workspace() per eseguire query sui dati dalle applicazioni in più aree di lavoro. Non è necessaria una query tra aree di lavoro per eseguire query sui dati di più applicazioni nella stessa area di lavoro.
Sintassi
app(
Identificatore)
Argomenti
Identifier: i formati di identificatore espliciti nella tabella seguente rappresentano il modo migliore per eseguire query sulle app perché sono i più efficienti.
| Identificatore | Descrizione | Esempio |
|---|---|---|
| Documento d'identità | GUID dell'app | app("00000000-0000-0000-0000-000000000000") |
| ID risorsa di Azure | Identificatore della risorsa di Azure | app("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp") |
Esempi
app("00000000-0000-0000-0000-000000000000").requests | count
app("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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"))
Correlare i dati tra le risorse usando resource()
L'espressione resource viene usata in una query di Monitoraggio di Azure con ambito su una risorsa per recuperare dati da altre risorse.
Sintassi
resource(
Identificatore)
Argomenti
Identifier: identifica la risorsa, il gruppo di risorse o la sottoscrizione da cui correlare i dati.
| Identificatore | Descrizione | Esempio |
|---|---|---|
| Risorsa | Include i dati per la risorsa. | resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm") |
| Gruppo di risorse o sottoscrizione | Include i dati per la risorsa e tutte le risorse contenute. | resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup) |
Esempi
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
Contenuti correlati
Per una panoramica delle query di log e di come sono strutturati i dati di log di Monitoraggio di Azure., vedere Analizzare i dati di log in Monitoraggio di Azure.