Eseguire query di log su più risorse in Monitoraggio di AzurePerform cross-resource log queries in Azure Monitor

Monitoraggio di Azure consentiva in precedenza di analizzare i dati solo all'interno dell'area di lavoro corrente, limitando la possibilità di eseguire query su più aree di lavoro definite nella sottoscrizione.Previously with Azure Monitor, you could only analyze data from within the current workspace, and it limited your ability to query across multiple workspaces defined in your subscription. Inoltre, era possibile solo cercare gli elementi di telemetria raccolti dall'applicazione basata sul Web con Application Insights direttamente in Application Insights o in Visual Studio.Additionally, you could only search telemetry items collected from your web-based application with Application Insights directly in Application Insights or from Visual Studio. Per questi motivi, risultava difficile anche analizzare insieme in modo nativo i dati operativi e quelli dell'applicazione.This also made it a challenge to natively analyze operational and application data together.

Ora è possibile eseguire query non solo tra più aree di lavoro di Log Analytics, ma anche su dati di un'app specifica di Application Insights nello stesso gruppo di risorse, in un altro gruppo di risorse o in un'altra sottoscrizione.Now you can query not only across multiple Log Analytics workspaces, but also data from a specific Application Insights app in the same resource group, another resource group, or another subscription. Si ottiene così una vista dei dati dell'intero sistema.This provides you with a system-wide view of your data. È possibile eseguire questi tipi di query solo in Log Analytics.You can only perform these types of queries in Log Analytics.

Limiti di query tra risorseCross-resource query limits

  • Il numero di risorse Application Insights e le aree di lavoro Log Analytics che è possibile includere in una singola query sono limitate a 100.The number of Application Insights resources and Log Analytics workspaces that you can include in a single query is limited to 100.
  • La query tra risorse non è supportata in Progettazione viste.Cross-resource query is not supported in View Designer. È possibile creare una query in Log Analytics e aggiungerla al dashboard di Azure per visualizzare una query di log.You can Author a query in Log Analytics and pin it to Azure dashboard to visualize a log query.
  • La query tra risorse negli avvisi del log è supportata nella nuova API scheduledQueryRules.Cross-resource query in log alerts is supported in the new scheduledQueryRules API. Per impostazione predefinita, Monitoraggio di Azure usa l'API legacy degli avvisi di Log Analytics per la creazione di nuove regole di avviso relative ai log dal portale di Azure, a meno che non si esegua la commutazione dall'API legacy degli avvisi relativi ai log.By default, Azure Monitor uses the legacy Log Analytics Alert API for creating new log alert rules from Azure portal, unless you switch from legacy Log Alerts API. Dopo la commutazione, la nuova API diventa quella predefinita per le nuove regole di avviso nel portale di Azure e consente di creare regole di avviso dei log basate su query su più risorse.After the switch, the new API becomes the default for new alert rules in Azure portal and it lets you create cross-resource query log alerts rules. È possibile creare regole di avviso del log di query tra risorse senza eseguire l'opzione usando il modello di Azure Resource Manager per l'API scheduledQueryRules , ma questa regola di avviso è gestibile anche se l' API scheduledQueryRules e non da portale di Azure .You can create cross-resource query log alert rules without making the switch by using the Azure Resource Manager template for scheduledQueryRules API – but this alert rule is manageable though scheduledQueryRules API and not from Azure portal.

Esecuzione di query tra aree di lavoro di Log Analytics e da Application InsightsQuerying across Log Analytics workspaces and from Application Insights

Per fare riferimento a un'altra area di lavoro nella query, usare l'identificatore workspace, mentre per un'app di Application Insights usare l'identificatore app.To reference another workspace in your query, use the workspace identifier, and for an app from Application Insights, use the app identifier.

Identificazione delle risorse dell'area di lavoroIdentifying workspace resources

Gli esempi seguenti dimostrano che le query eseguite su più aree di lavoro di Log Analytics restituiscono un riepilogo del numero di log dalla tabella di aggiornamento in un'area di lavoro denominata contosoretail-it.The following examples demonstrate queries across Log Analytics workspaces to return summarized counts of logs from the Update table on a workspace named contosoretail-it.

Esistono vari modi per identificare un'area di lavoro:Identifying a workspace can be accomplished one of several ways:

  • Nome risorsa - Un nome dell'area di lavoro leggibile dall'utente, spesso definito genericamente nome del componente.Resource name - is a human-readable name of the workspace, sometimes referred to as component name.

    workspace("contosoretail-it").Update | count

  • Nome completo - È il nome completo dell'area di lavoro, composto dal nome della sottoscrizione, dal gruppo di risorse e dal nome del componente nel formato seguente: subscriptionName/resourceGroup/componentName.Qualified name - is the “full name” of the workspace, composed of the subscription name, resource group, and component name in this format: subscriptionName/resourceGroup/componentName.

    workspace('contoso/contosoretail/contosoretail-it').Update | count

    Nota

    Poiché i nomi delle sottoscrizioni di Azure non sono univoci, questo identificatore potrebbe essere ambiguo.Because Azure subscription names are not unique, this identifier might be ambiguous.

  • ID area di lavoro - L'ID dell'area di lavoro è l'identificatore univoco e non modificabile assegnato a ogni area di lavoro rappresentato come identificatore univoco globale (GUID).Workspace ID - A workspace ID is the unique, immutable, identifier assigned to each workspace represented as a globally unique identifier (GUID).

    workspace("b459b4u5-912x-46d5-9cb1-p43069212nb4").Update | count

  • ID risorsa Azure - L'identità univoca definita da Azure dell'area di lavoro.Azure Resource ID – the Azure-defined unique identity of the workspace. Si usa quando il nome della risorsa è ambiguo.You use the Resource ID when the resource name is ambiguous. Per le aree di lavoro, il formato è: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/workspaces/componentName.For workspaces, the format is: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/workspaces/componentName.

    ad esempio:For example:

    workspace("/subscriptions/e427519-5645-8x4e-1v67-3b84b59a1985/resourcegroups/ContosoAzureHQ/providers/Microsoft.OperationalInsights/workspaces/contosoretail-it").Update | count
    

Identificazione di un'applicazioneIdentifying an application

Gli esempi seguenti restituiscono il riepilogo del numero di richieste eseguite su un'app denominata fabrikamapp in Application Insights.The following examples return a summarized count of requests made against an app named fabrikamapp in Application Insights.

L'identificazione di un'applicazione in Application Insights può essere eseguita con l'espressione app(Identifier) .Identifying an application in Application Insights can be accomplished with the app(Identifier) expression. L'argomento Identifier specifica l'app usando uno degli elementi seguenti:The Identifier argument specifies the app using one of the following:

  • Nome risorsa - Nome dell'app leggibile dall'utente, spesso definito genericamente nome del componente.Resource name - is a human readable name of the app, sometimes referred to as the component name.

    app("fabrikamapp")

    Nota

    L'identificazione di un'applicazione in base al nome presuppone l'univocità tra tutte le sottoscrizioni accessibili.Identifying an application by name assumes uniqueness across all accessible subscriptions. Se sono presenti più applicazioni con il nome specificato, la query avrà esito negativo a causa dell'ambiguità.If you have multiple applications with the specified name, the query fails because of the ambiguity. In questo caso è necessario usare uno degli altri identificatori.In this case, you must use one of the other identifiers.

  • Nome completo - Nome completo dell'app, composto dal nome della sottoscrizione, dal gruppo di risorse e dal nome del componente nel formato seguente: subscriptionName/resourceGroup/componentName.Qualified name - is the “full name” of the app, composed of the subscription name, resource group, and component name in this format: subscriptionName/resourceGroup/componentName.

    app("AI-Prototype/Fabrikam/fabrikamapp").requests | count

    Nota

    Poiché i nomi delle sottoscrizioni di Azure non sono univoci, questo identificatore potrebbe essere ambiguo.Because Azure subscription names are not unique, this identifier might be ambiguous.

  • ID - GUID dell'app.ID - the app GUID of the application.

    app("b459b4f6-912x-46d5-9cb1-b43069212ab4").requests | count

  • ID risorsa Azure - Identità univoca dell'app definita da Azure.Azure Resource ID - the Azure-defined unique identity of the app. Si usa quando il nome della risorsa è ambiguo.You use the Resource ID when the resource name is ambiguous. Il formato è: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/components/componentName.The format is: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/components/componentName.

    ad esempio:For example:

    app("/subscriptions/b459b4f6-912x-46d5-9cb1-b43069212ab4/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
    

Esecuzione di una query in più risorsePerforming a query across multiple resources

È possibile eseguire una query su più risorse da una qualsiasi delle istanze di risorse, ad esempio aree di lavoro e app combinate.You can query multiple resources from any of your resource instances, these can be workspaces and apps combined.

Esempio di query in due aree di lavoro:Example for query across two workspaces:

union Update, workspace("contosoretail-it").Update, workspace("b459b4u5-912x-46d5-9cb1-p43069212nb4").Update
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification

Uso di una query tra risorse per più risorseUsing cross-resource query for multiple resources

Quando si usano query tra risorse per correlare i dati di più aree di lavoro di Log Analytics e di risorse di Application Insights, la query può diventare complessa e difficile da gestire.When using cross-resource queries to correlate data from multiple Log Analytics workspaces and Application Insights resources, the query can become complex and difficult to maintain. È consigliabile sfruttare le funzioni delle query di log di Monitoraggio di Azure per separare la logica della query dall'ambito delle risorse della query, semplificando così la struttura della query stessa.You should leverage functions in Azure Monitor log queries to separate the query logic from the scoping of the query resources, which simplifies the query structure. L'esempio seguente mostra come è possibile monitorare più risorse di Application Insights e visualizzare il numero di richieste non riuscite per nome applicazione.The following example demonstrates how you can monitor multiple Application Insights resources and visualize the count of failed requests by application name.

Creare una query come la seguente, che fa riferimento all'ambito delle risorse di Application Insights.Create a query like the following that references the scope of Application Insights resources. Il comando withsource= SourceApp aggiunge una colonna che indica il nome dell'applicazione che ha inviato il log.The withsource= SourceApp command adds a column that designates the application name that sent the log. Salvare la query come funzione con l'alias applicationsScoping.Save the query as function with the alias applicationsScoping.

// crossResource function that scopes my Application Insights resources
union withsource= SourceApp
app('Contoso-app1').requests, 
app('Contoso-app2').requests,
app('Contoso-app3').requests,
app('Contoso-app4').requests,
app('Contoso-app5').requests

A questo punto è possibile usare questa funzione in una query tra risorse come la seguente.You can now use this function in a cross-resource query like the following. L'alias di funzione applicationsScoping restituisce l'unione della tabella delle richieste da tutte le applicazioni definite.The function alias applicationsScoping returns the union of the requests table from all the defined applications. La query filtra quindi le richieste non riuscite e visualizza le tendenze per applicazione.The query then filters for failed requests and visualizes the trends by application. L'operatore parse è facoltativo in questo esempio.The parse operator is optional in this example. Estrae il nome dell'applicazione dalla proprietà SourceApp.It extracts the application name from SourceApp property.

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

Nota

Questo metodo non può essere usato con gli avvisi del log perché la convalida dell'accesso delle risorse della regola di avviso, incluse le aree di lavoro e le applicazioni, viene eseguita al momento della creazione dell'avviso.This method can’t be used with log alerts because the access validation of the alert rule resources, including workspaces and applications, is performed at alert creation time. L'aggiunta di nuove risorse alla funzione dopo la creazione dell'avviso non è supportata.Adding new resources to the function after the alert creation isn’t supported. Se si preferisce usare la funzione per l'ambito delle risorse negli avvisi del log, è necessario modificare la regola di avviso nel portale o con un modello di Gestione risorse per aggiornare le risorse con ambito.If you prefer to use function for resource scoping in log alerts, you need to edit the alert rule in the portal or with a Resource Manager template to update the scoped resources. In alternativa, è possibile includere l'elenco delle risorse nella query di avviso del log.Alternatively, you can include the list of resources in the log alert query.

Diagramma temporale

Passaggi successiviNext steps