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
Actie | Vereiste machtigingen |
---|---|
Werkruimtestatus controleren | Microsoft.OperationalInsights/workspaces/query/*/read machtigingen voor de Log Analytics-werkruimten die u opvraagt, zoals opgegeven door de ingebouwde rol van Log Analytics Reader. |
Een query opslaan | microsoft.operationalinsights/querypacks/queries/action machtigingen voor het querypakket waarin u de query wilt opslaan, zoals 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()
, enworkspace()
.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.