Query's uitvoeren op gegevens in Log Analytics-werkruimten, -toepassingen en -resources in Azure Monitor

Er zijn twee manieren om query's uit te voeren op gegevens uit meerdere werkruimten, toepassingen en resources:

  • Expliciet door de werkruimte-, app- of resourcegegevens op te geven met behulp van de expressies workspace(), app()of resource(), zoals beschreven in dit artikel.
  • Impliciet met behulp van resourcecontextquery's. Wanneer u een query uitvoert in de context van een specifieke resource, resourcegroep of een abonnement, haalt de query relevante gegevens op uit alle werkruimten die gegevens voor deze resources bevatten. Met resourcecontextquery's worden geen gegevens opgehaald uit klassieke Application Insights-resources.

In dit artikel wordt uitgelegd hoe u de workspace(), app()en resource() expressies gebruikt om query's uit te voeren op gegevens uit meerdere Log Analytics-werkruimten, toepassingen en resources.

Als u abonnementen in andere Microsoft Entra-tenants beheert via Azure Lighthouse, kunt u Log Analytics-werkruimten opnemen die zijn gemaakt in die klanttenants in uw query's.

Belangrijk

Als u een Application Insights-resource op basis van een werkruimte gebruikt, wordt telemetrie opgeslagen in een Log Analytics-werkruimte met alle andere logboekgegevens. Gebruik de workspace() expressie om query's uit te voeren op gegevens uit toepassingen in meerdere werkruimten. U hebt geen query voor meerdere werkruimten nodig om gegevens uit meerdere toepassingen in dezelfde werkruimte op te vragen.

Vereiste machtigingen

  • U moet bijvoorbeeld machtigingen hebben Microsoft.OperationalInsights/workspaces/query/*/read voor de Log Analytics-werkruimten die u opvraagt, zoals opgegeven door de ingebouwde rol log analytics-lezer.
  • Als u een query wilt opslaan, moet u machtigingen hebben microsoft.operationalinsights/querypacks/queries/action voor het querypakket waarin u de query wilt opslaan, zoals is opgegeven door de ingebouwde rol Log Analytics-inzender.

Beperkingen

  • Query's voor meerdere resources en services bieden geen ondersteuning voor geparameteriseerde functies en functies waarvan de definitie andere expressies voor meerdere werkruimten of services omvat, waaronder adx(), arg(), resource(), en workspace().app()
  • U kunt maximaal 100 Log Analytics-werkruimten of klassieke Application Insights-resources opnemen in één query.
  • Het uitvoeren van query's voor een groot aantal resources kan de query aanzienlijk vertragen.
  • Query's tussen resources in logboekzoekwaarschuwingen worden alleen ondersteund in de huidige scheduledQueryRules-API. Als u de verouderde Log Analytics Alerts-API gebruikt, moet u overschakelen naar de huidige API.
  • Verwijzingen naar een kruisresource, zoals een andere werkruimte, moeten expliciet zijn en kunnen niet worden geparameteriseerd.

Query's uitvoeren in werkruimten, toepassingen en resources met behulp van functies

In deze sectie wordt uitgelegd hoe u query's uitvoert op werkruimten, toepassingen en resources met functies met en zonder een functie.

Query uitvoeren zonder een functie te gebruiken

U kunt meerdere resources opvragen vanuit een van uw resource-exemplaren. Deze resources kunnen werkruimten en apps combineren.

Voorbeeld voor een query in drie werkruimten:

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

Zie union operator, where, and summarize operator, where operator, and summarize operator voor meer informatie over de samenvoeging, where operator en summarize operator.

Query's uitvoeren met behulp van een functie

Wanneer u query's tussen resources gebruikt om gegevens uit meerdere Log Analytics-werkruimten en Application Insights-onderdelen te correleren, kan de query complex en moeilijk te onderhouden worden. U moet gebruikmaken van functies in Azure Monitor-logboekquery's om de querylogica te scheiden van het bereik van de querybronnen. Deze methode vereenvoudigt de querystructuur. In het volgende voorbeeld ziet u hoe u meerdere Application Insights-onderdelen kunt bewaken en het aantal mislukte aanvragen per toepassingsnaam kunt visualiseren.

Maak een query zoals in het volgende voorbeeld dat verwijst naar het bereik van Application Insights-onderdelen. Met withsource= SourceApp de opdracht wordt een kolom toegevoegd waarmee de naam van de toepassing wordt aangegeven die het logboek heeft verzonden. Sla de query op als een functie met de 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

U kunt deze functie nu gebruiken in een query voor meerdere resources, zoals in het volgende voorbeeld. De functiealias applicationsScoping retourneert de samenvoeging van de aanvraagtabel van alle gedefinieerde toepassingen. De query filtert vervolgens op mislukte aanvragen en visualiseert de trends per toepassing. De parse operator is optioneel in dit voorbeeld. De toepassingsnaam wordt uit de SourceApp eigenschap geëxtraheerd.

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

Notitie

Deze methode kan niet worden gebruikt met waarschuwingen voor zoeken in logboeken omdat de toegangsvalidatie van de waarschuwingsregelbronnen, inclusief werkruimten en toepassingen, wordt uitgevoerd tijdens het maken van waarschuwingen. Het toevoegen van nieuwe resources aan de functie nadat de waarschuwing is gemaakt, wordt niet ondersteund. Als u liever een functie gebruikt voor het bereik van resources in zoekwaarschuwingen voor logboeken, moet u de waarschuwingsregel bewerken in de portal of met een Azure Resource Manager-sjabloon om de resources binnen het bereik bij te werken. U kunt ook de lijst met resources opnemen in de waarschuwingsquery voor zoeken in logboeken.

Query's uitvoeren in Log Analytics-werkruimten met behulp van workspace()

Gebruik de workspace() expressie om gegevens op te halen uit een specifieke werkruimte in dezelfde resourcegroep, een andere resourcegroep of een ander abonnement. U kunt deze expressie gebruiken om logboekgegevens op te nemen in een Application Insights-query en om gegevens op te vragen in meerdere werkruimten in een logboekquery.

Syntaxis

workspace(Id)

Argumenten

*Identifier*: Identificeert de werkruimte met behulp van een van de indelingen in de volgende tabel.

Identificatie Beschrijving Voorbeeld
Id GUID van de werkruimte werkruimte("00000000-0000-0000-00000-00000000000")
Azure-resource-id Id voor de Azure-resource workspace("/subscriptions/00000000-0000-0000-0000-00000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail")

Voorbeelden

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"))

Query's uitvoeren in klassieke Application Insights-toepassingen met behulp van app()

Gebruik de app expressie om gegevens op te halen uit een specifieke klassieke Application Insights-resource in dezelfde resourcegroep, een andere resourcegroep of een ander abonnement. Als u een Application Insights-resource op basis van een werkruimte gebruikt, wordt telemetrie opgeslagen in een Log Analytics-werkruimte met alle andere logboekgegevens. Gebruik de workspace() expressie om query's uit te voeren op gegevens uit toepassingen in meerdere werkruimten. U hebt geen query voor meerdere werkruimten nodig om gegevens uit meerdere toepassingen in dezelfde werkruimte op te vragen.

Syntaxis

app(Id)

Argumenten

*Identifier*: Identificeert de app met behulp van een van de indelingen in de onderstaande tabel.

Identificatie Beschrijving Voorbeeld
Id GUID van de app app("00000000-0000-0000-00000-00000000000")
Azure-resource-id Id voor de Azure-resource app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp")

Voorbeelden

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"))

Gegevens correleren tussen resources met behulp van resource()

De resource expressie wordt gebruikt in een Azure Monitor-query die is gericht op een resource om gegevens op te halen uit andere resources.

Syntaxis

resource(Id)

Argumenten

*Identifier*: Identificeert de resource, resourcegroep of het abonnement waaruit gegevens moeten worden gecorreleerd.

Identificatie Beschrijving Voorbeeld
Bron Bevat gegevens voor de resource. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm")
Resourcegroep of abonnement Bevat gegevens voor de resource en alle resources die deze bevat. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup)

Voorbeelden

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

Volgende stappen

Zie Logboekgegevens analyseren in Azure Monitor voor een overzicht van logboekquery's en hoe Azure Monitor-logboekgegevens zijn gestructureerd.