services/DesktopVirtualization/hostPools/alerts.yaml (1,218 lines of code) (raw):

- name: Capacity 85 Percent (xHostPoolNamex) description: This alert is based on the Action Account and Runbook that populates the Log Analytics specificed with the AVD Metrics Deployment Solution for xHostPoolNamex. -->Last Number in the string is the Percentage Remaining for the Host Pool. Output is - HostPoolName|ResourceGroup|Type|MaxSessionLimit|NumberHosts|TotalUsers|DisconnectedUser|ActiveUsers|SessionsAvailable|HostPoolPercentageLoad' type: Log verified: false visible: true tags: - avd properties: severity: 2 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT30M evaluationFrequency: PT5M threshold: 1 resouceIdColumn: ResourceId dimensions: - name: HostPoolName operator: Include values: - '*' - name: UserSessionsTotal operator: Include values: - '*' - name: UserSessionsDisconnected operator: Include values: - '*' - name: UserSessionsActive operator: Include values: - '*' - name: UserSessionsAvailable operator: Include values: - '*' - name: HostPoolPercentLoad operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'AzureDiagnostics | where Category has "JobStreams" and StreamType_s == "Output" and RunbookName_s == "AvdHostPoolLogData" | sort by TimeGenerated | where TimeGenerated > now() - 5m | extend HostPoolName=tostring(split(ResultDescription, "|")[0]) | extend ResourceGroup=tostring(split(ResultDescription, "|")[1]) | extend Type=tostring(split(ResultDescription, "|")[2]) | extend MaxSessionLimit=toint(split(ResultDescription, "|")[3]) | extend NumberSessionHosts=toint(split(ResultDescription, "|")[4]) | extend UserSessionsTotal=toint(split(ResultDescription, "|")[5]) | extend UserSessionsDisconnected=toint(split(ResultDescription, "|")[6]) | extend UserSessionsActive=toint(split(ResultDescription, "|")[7]) | extend UserSessionsAvailable=toint(split(ResultDescription, "|")[8]) | extend HostPoolPercentLoad=toint(split(ResultDescription, "|")[9]) | extend HPResourceId=tostring(split(ResultDescription, "|")[13]) | extend ResourceId=tostring(HPResourceId) | where HostPoolPercentLoad >= 85 and HostPoolPercentLoad < 95 | where HostPoolName =~ "xHostPoolNamex"' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: a8e65618-c367-42bc-916a-b192ddf4c6ca - name: Capacity 95 Percent (xHostPoolNamex) description: This alert is based on the Action Account and Runbook that populates the Log Analytics specificed with the AVD Metrics Deployment Solution for xHostPoolNamex. -->Last Number in the string is the Percentage Remaining for the Host Pool. Output is - HostPoolName|ResourceGroup|Type|MaxSessionLimit|NumberHosts|TotalUsers|DisconnectedUser|ActiveUsers|SessionsAvailable|HostPoolPercentageLoad' type: Log verified: false visible: true tags: - avd properties: severity: 1 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT30M evaluationFrequency: PT5M threshold: 1 resouceIdColumn: ResourceId dimensions: - name: HostPoolName operator: Include values: - '*' - name: UserSessionsTotal operator: Include values: - '*' - name: UserSessionsDisconnected operator: Include values: - '*' - name: UserSessionsActive operator: Include values: - '*' - name: UserSessionsAvailable operator: Include values: - '*' - name: HostPoolPercentLoad operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'AzureDiagnostics | where Category has "JobStreams" and StreamType_s == "Output" and RunbookName_s == "AvdHostPoolLogData" | sort by TimeGenerated | where TimeGenerated > now() - 5m | extend HostPoolName=tostring(split(ResultDescription, "|")[0]) | extend ResourceGroup=tostring(split(ResultDescription, "|")[1]) | extend Type=tostring(split(ResultDescription, "|")[2]) | extend MaxSessionLimit=toint(split(ResultDescription, "|")[3]) | extend NumberSessionHosts=toint(split(ResultDescription, "|")[4]) | extend UserSessionsTotal=toint(split(ResultDescription, "|")[5]) | extend UserSessionsDisconnected=toint(split(ResultDescription, "|")[6]) | extend UserSessionsActive=toint(split(ResultDescription, "|")[7]) | extend UserSessionsAvailable=toint(split(ResultDescription, "|")[8]) | extend HostPoolPercentLoad=toint(split(ResultDescription, "|")[9]) | extend HPResourceId=tostring(split(ResultDescription, "|")[13]) | extend ResourceId=tostring(HPResourceId) | where HostPoolPercentLoad >= 95 | where HostPoolName =~ "xHostPoolNamex"' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: eefabb12-9ce7-4784-911a-c7000424388e - name: No Resources Available (xHostPoolNamex) description: Catastrophic Event! Indicates potential problems with dependencies, diagnose and resolve for xHostPoolNamex. type: Log verified: false visible: true tags: - avd properties: severity: 1 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT15M evaluationFrequency: PT15M threshold: 1 resouceIdColumn: _ResourceId dimensions: - name: UserName operator: Include values: - '*' - name: SessionHostName operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'WVDConnections | where TimeGenerated > ago (15m) | where _ResourceId contains "xHostPoolNamex" | project-away TenantId,SourceSystem | summarize arg_max(TimeGenerated, *), StartTime = min(iff(State== "Started", TimeGenerated , datetime(null) )), ConnectTime = min(iff(State== "Connected", TimeGenerated , datetime(null) )) by CorrelationId | join kind=leftouter (WVDErrors |summarize Errors=makelist(pack("Code", Code, "CodeSymbolic", CodeSymbolic, "Time", TimeGenerated, "Message", Message ,"ServiceError", ServiceError, "Source", Source)) by CorrelationId ) on CorrelationId | join kind=leftouter (WVDCheckpoints | summarize Checkpoints=makelist(pack("Time", TimeGenerated, "Name", Name, "Parameters", Parameters, "Source", Source)) by CorrelationId | mv-apply Checkpoints on ( order by todatetime(Checkpoints["Time"]) asc | summarize Checkpoints=makelist(Checkpoints)) ) on CorrelationId | project-away CorrelationId1, CorrelationId2 | order by TimeGenerated desc | where Errors[0].CodeSymbolic == "ConnectionFailedNoHealthyRdshAvailable"' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: 691468ac-c0a5-45cf-81d1-41032c7c766a - name: User Disconnected over 24h (xHostPoolNamex) description: Verify Remote Desktop Policies are applied relating to Session Limits for xHostPoolNamex. This could impact your scaling plan as well. type: Log verified: false visible: true tags: - avd properties: severity: 2 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT1H evaluationFrequency: PT1H threshold: 1 resouceIdColumn: _ResourceId dimensions: - name: UserName operator: Include values: - '*' - name: SessionHostName operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'WVDConnections | where TimeGenerated > ago(24h) | where State == "Connected" | where _ResourceId contains "xHostPoolNamex" | project CorrelationId , UserName, ConnectionType, StartTime=TimeGenerated, SessionHostName | join (WVDConnections | where State == "Completed" | project EndTime=TimeGenerated, CorrelationId) on CorrelationId | project Duration = EndTime - StartTime, ConnectionType, UserName, SessionHostName | where Duration >= timespan(24:00:00) | sort by Duration desc' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: b31d7620-f79b-4a44-b4f6-e96563040ea4 - name: User Disconnected over 72h (xHostPoolNamex) description: Verify Remote Desktop Policies are applied relating to Session Limits for xHostPoolNamex. This could impact your scaling plan as well. type: Log verified: false visible: true tags: - avd properties: severity: 2 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT1H evaluationFrequency: PT1H threshold: 1 resouceIdColumn: _ResourceId dimensions: - name: UserName operator: Include values: - '*' - name: SessionHostName operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'WVDConnections | where TimeGenerated > ago(24h) | where State == "Connected" | where _ResourceId contains "xHostPoolNamex" | project CorrelationId , UserName, ConnectionType, StartTime=TimeGenerated, SessionHostName | join(WVDConnections | where State == "Completed" | project EndTime=TimeGenerated, CorrelationId) on CorrelationId | project Duration = EndTime - StartTime, ConnectionType, UserName, SessionHostName | where Duration >= timespan(72:00:00) | sort by Duration desc' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: c2c03bd2-0b7c-43cb-9e83-9da78cc4eb6e - name: Local Disk Space less than 10% (xHostPoolNamex) description: Disk space Moderately Low. \nConsider review of the VM local C drive and determine what is consuming disk space for the VM in xHostPoolNamex. This could be local profiles or temp files that need to be cleaned up or removed. type: Log verified: false visible: true tags: - avd properties: severity: 2 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT15M evaluationFrequency: PT15M threshold: 1 resouceIdColumn: _ResourceId dimensions: - name: ComputerName operator: Include values: - '*' - name: VMresourceGroup operator: Include values: - '*' - name: HostPool operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'Perf | where TimeGenerated > ago(15m) | where ObjectName == "LogicalDisk" and CounterName == "% Free Space" | where InstanceName !contains "D:" | where InstanceName !contains "_Total" | where CounterValue <= 10.00 | parse _ResourceId with "/subscriptions/" subscription "/resourcegroups/" ResourceGroup "/providers/microsoft.compute/virtualmachines/" ComputerName | summarize arg_max(TimeGenerated, *) by ComputerName | extend ComputerName=tolower(ComputerName) | project ComputerName, CounterValue, subscription, ResourceGroup, TimeGenerated | join kind = leftouter (WVDAgentHealthStatus | where TimeGenerated > ago(15m) | where _ResourceId contains "xHostPoolNamex" | parse _ResourceId with "/subscriptions/" subscriptionAgentHealth "/resourcegroups/" ResourceGroupAgentHealth "/providers/microsoft.desktopvirtualization/hostpools/" HostPool | parse SessionHostResourceId with "/subscriptions/" VMsubscription "/resourceGroups/" VMresourceGroup "/providers/Microsoft.Compute/virtualMachines/" ComputerName | extend ComputerName=tolower(ComputerName) | summarize arg_max(TimeGenerated,*) by ComputerName | project VMresourceGroup, ComputerName, HostPool, _ResourceId ) on ComputerName | where ComputerName1 contains ComputerName' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: 1749f4f8-e4cd-4bc8-b2f8-7aa9b98095da - name: Local Disk Space less than 5% (xHostPoolNamex) description: Disk space Moderately Low. \nConsider review of the VM local C drive and determine what is consuming disk space for the VM in xHostPoolNamex. This could be local profiles or temp files that need to be cleaned up or removed. type: Log verified: false visible: true tags: - avd properties: severity: 1 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT15M evaluationFrequency: PT15M threshold: 1 resouceIdColumn: _ResourceId dimensions: - name: ComputerName operator: Include values: - '*' - name: VMresourceGroup operator: Include values: - '*' - name: HostPool operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'Perf | where TimeGenerated > ago(15m) | where ObjectName == "LogicalDisk" and CounterName == "% Free Space" | where InstanceName !contains "D:" | where InstanceName !contains "_Total" | where CounterValue <= 5.00 | parse _ResourceId with "/subscriptions/" subscription "/resourcegroups/" ResourceGroup "/providers/microsoft.compute/virtualmachines/" ComputerName | summarize arg_max(TimeGenerated, *) by ComputerName | extend ComputerName=tolower(ComputerName) | project ComputerName, CounterValue, subscription, ResourceGroup, TimeGenerated | join kind = leftouter ( WVDAgentHealthStatus | where TimeGenerated > ago(15m) | where _ResourceId contains "xHostPoolNamex" | parse _ResourceId with "/subscriptions/" subscriptionAgentHealth "/resourcegroups/" ResourceGroupAgentHealth "/providers/microsoft.desktopvirtualization/hostpools/" HostPool | parse SessionHostResourceId with "/subscriptions/" VMsubscription "/resourceGroups/" VMresourceGroup "/providers/Microsoft.Compute/virtualMachines/" ComputerName | extend ComputerName=tolower(ComputerName) | summarize arg_max(TimeGenerated,*) by ComputerName | project VMresourceGroup, ComputerName, HostPool, _ResourceId ) on ComputerName | where ComputerName1 contains ComputerName' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: 2f25b89a-6c5b-4a74-9584-31fe13802d3c - name: FSLogix Profile less than 5% (xHostPoolNamex) description: User Profiles Service logged Event ID 33. Expand User's Virtual Profile Disk and/or clean up user profile data on the VM in xHostPoolNamex. type: Log verified: false visible: true tags: - avd properties: severity: 2 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT5M evaluationFrequency: PT5M threshold: 1 dimensions: - name: ComputerName operator: Include values: - '*' - name: RenderedDescription operator: Include values: - '*' - name: VMresourceGroup operator: Include values: - '*' - name: HostPool operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'Event | where EventLog == "Microsoft-FSLogix-Apps/Admin" | where EventLevelName == "Warning" | where EventID == 34 | parse _ResourceId with "/subscriptions/" subscription "/resourcegroups/" ResourceGroup "/providers/microsoft.compute/virtualmachines/" ComputerName | extend ComputerName=tolower(ComputerName) | project ComputerName, RenderedDescription, subscription, ResourceGroup, TimeGenerated | join kind = leftouter (WVDAgentHealthStatus | where _ResourceId contains "xHostPoolNamex" | parse _ResourceId with "/subscriptions/" subscriptionAgentHealth "/resourcegroups/" ResourceGroupAgentHealth "/providers/microsoft.desktopvirtualization/hostpools/" HostPool | parse SessionHostResourceId with "/subscriptions/" VMsubscription "/resourceGroups/" VMresourceGroup "/providers/Microsoft.Compute/virtualMachines/" ComputerName | extend ComputerName=tolower(ComputerName) | summarize arg_max(TimeGenerated,*) by ComputerName | project VMresourceGroup, ComputerName, HostPool ) on ComputerName' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: 560c969e-13bd-43bf-8b07-5798f6c4a31c - name: FSLogix Profile less than 2% (xHostPoolNamex) description: User Profiles Service logged Event ID 34. Expand User's Virtual Profile Disk and/or clean up user profile data on the VM in xHostPoolNamex. type: Log verified: false visible: true tags: - avd properties: severity: 1 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT5M evaluationFrequency: PT5M threshold: 1 dimensions: - name: ComputerName operator: Include values: - '*' - name: RenderedDescription operator: Include values: - '*' - name: VMresourceGroup operator: Include values: - '*' - name: HostPool operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'Event | where EventLog == "Microsoft-FSLogix-Apps/Admin" | where EventLevelName == "Error" | where EventID == 33 | parse _ResourceId with "/subscriptions/" subscription "/resourcegroups/" ResourceGroup "/providers/microsoft.compute/virtualmachines/" ComputerName | extend ComputerName=tolower(ComputerName) | project ComputerName, RenderedDescription, subscription, ResourceGroup, TimeGenerated | join kind = leftouter (WVDAgentHealthStatus | where _ResourceId contains "xHostPoolNamex" | parse _ResourceId with "/subscriptions/" subscriptionAgentHealth "/resourcegroups/" ResourceGroupAgentHealth "/providers/microsoft.desktopvirtualization/hostpools/" HostPool | parse SessionHostResourceId with "/subscriptions/" VMsubscription "/resourceGroups/" VMresourceGroup "/providers/Microsoft.Compute/virtualMachines/" ComputerName | extend ComputerName=tolower(ComputerName) | summarize arg_max(TimeGenerated,*) by ComputerName | project VMresourceGroup, ComputerName, HostPool ) on ComputerName' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: 44d508c2-ae0c-487b-bf5f-65422a59cd63 - name: FSLogix Network Issue (xHostPoolNamex) description: User Profiles Service logged Event ID 43. Verify network communications between the storage and AVD VM related to xHostPoolNamex. type: Log verified: false visible: true tags: - avd properties: severity: 1 operator: GreaterThanOrEqual timeAggregation: Count windowSize: P1D evaluationFrequency: PT5M threshold: 1 dimensions: - name: ComputerName operator: Include values: - '*' - name: RenderedDescription operator: Include values: - '*' - name: VMresourceGroup operator: Include values: - '*' - name: HostPool operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'Event | where EventLog == "Microsoft-FSLogix-Apps/Admin" | where EventLevelName == "Error" | where EventID == 43 | parse _ResourceId with "/subscriptions/" subscription "/resourcegroups/" ResourceGroup "/providers/microsoft.compute/virtualmachines/" ComputerName | extend ComputerName=tolower(ComputerName) | project ComputerName, RenderedDescription, subscription, ResourceGroup, TimeGenerated | join kind = leftouter (WVDAgentHealthStatus | where _ResourceId contains "xHostPoolNamex" | parse _ResourceId with "/subscriptions/" subscriptionAgentHealth "/resourcegroups/" ResourceGroupAgentHealth "/providers/microsoft.desktopvirtualization/hostpools/" HostPool | parse SessionHostResourceId with "/subscriptions/" VMsubscription "/resourceGroups/" VMresourceGroup "/providers/Microsoft.Compute/virtualMachines/" ComputerName | extend ComputerName=tolower(ComputerName) | summarize arg_max(TimeGenerated,*) by ComputerName | project VMresourceGroup, ComputerName, HostPool ) on ComputerName' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: d11e2210-d818-43c6-9380-b0f6cd02ed6e - name: FSLogix Profile Disk Failed to Attach (xHostPoolNamex) description: User Profiles Service logged an Event ID 52 or 40. Investigate error details for reason regarding xHostPoolNamex. type: Log verified: false visible: true tags: - avd properties: severity: 1 operator: GreaterThanOrEqual timeAggregation: Count windowSize: P1D evaluationFrequency: PT5M resourceIdColumn: _ResourceId threshold: 1 dimensions: - name: ComputerName operator: Include values: - '*' - name: RenderedDescription operator: Include values: - '*' - name: VMresourceGroup operator: Include values: - '*' - name: HostPool operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'Event | where EventLog == "Microsoft-FSLogix-Apps/Admin" | where EventLevelName == "Error" | where EventID == 42 or EventID == 40 | parse _ResourceId with "/subscriptions/" subscription "/resourcegroups/" ResourceGroup "/providers/microsoft.compute/virtualmachines/" ComputerName | extend ComputerName=tolower(ComputerName) | project ComputerName, RenderedDescription, subscription, ResourceGroup, TimeGenerated | join kind = leftouter (WVDAgentHealthStatus | where _ResourceId contains "xHostPoolNamex" | parse _ResourceId with "/subscriptions/" subscriptionAgentHealth "/resourcegroups/" ResourceGroupAgentHealth "/providers/microsoft.desktopvirtualization/hostpools/" HostPool | parse SessionHostResourceId with "/subscriptions/" VMsubscription "/resourceGroups/" VMresourceGroup "/providers/Microsoft.Compute/virtualMachines/" ComputerName | extend ComputerName=tolower(ComputerName) | summarize arg_max(TimeGenerated,*) by ComputerName | project VMresourceGroup, ComputerName, HostPool ) on ComputerName' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: 222d5a84-2439-4f76-90a2-a44161eafbb0 - name: FSLogix Service Disabled (xHostPoolNamex) description: User Profile Service Disabled. Determine why service was disabled and re-enable / start the FSLogix service. Regarding xHostPoolNamex. type: Log verified: false visible: true tags: - avd properties: severity: 1 operator: GreaterThanOrEqual timeAggregation: Count windowSize: P1D evaluationFrequency: PT5M resourceIdColumn: _ResourceId threshold: 1 dimensions: - name: ComputerName operator: Include values: - '*' - name: RenderedDescription operator: Include values: - '*' - name: VMresourceGroup operator: Include values: - '*' - name: HostPool operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'Event | where EventLog == "Microsoft-FSLogix-Apps/Admin" | where EventLevelName == "Warning" | where EventID == 60 | parse _ResourceId with "/subscriptions/" subscription "/resourcegroups/" ResourceGroup "/providers/microsoft.compute/virtualmachines/" ComputerName | extend ComputerName=tolower(ComputerName) | project ComputerName, RenderedDescription, subscription, ResourceGroup, TimeGenerated | join kind = leftouter (WVDAgentHealthStatus | where _ResourceId contains "xHostPoolNamex" | parse _ResourceId with "/subscriptions/" subscriptionAgentHealth "/resourcegroups/" ResourceGroupAgentHealth "/providers/microsoft.desktopvirtualization/hostpools/" HostPool | parse SessionHostResourceId with "/subscriptions/" VMsubscription "/resourceGroups/" VMresourceGroup "/providers/Microsoft.Compute/virtualMachines/" ComputerName | extend ComputerName=tolower(ComputerName) | summarize arg_max(TimeGenerated,*) by ComputerName | project VMresourceGroup, ComputerName, HostPool ) on ComputerName' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: e03e4072-a5d4-46e8-b5fe-dc586ca56a86 - name: FSLogix Disk Compact Failure (xHostPoolNamex) description: User Profile Service logged Event ID 62 or 63. The profile Disk was marked for compaction due to additional white space but failed. See error details for additional information regarding xHostPoolNamex. type: Log verified: false visible: true tags: - avd properties: severity: 2 operator: GreaterThanOrEqual timeAggregation: Count windowSize: P1D evaluationFrequency: PT5M resourceIdColumn: _ResourceId threshold: 1 dimensions: - name: ComputerName operator: Include values: - '*' - name: RenderedDescription operator: Include values: - '*' - name: VMresourceGroup operator: Include values: - '*' - name: HostPool operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'Event | where EventLog == "Microsoft-FSLogix-Apps/Admin" | where EventLevelName == "Error" | where EventID == 62 or EventID == 63 | parse _ResourceId with "/subscriptions/" subscription "/resourcegroups/" ResourceGroup "/providers/microsoft.compute/virtualmachines/" ComputerName | extend ComputerName=tolower(ComputerName) | project ComputerName, RenderedDescription, subscription, ResourceGroup, TimeGenerated | join kind = leftouter (WVDAgentHealthStatus | where _ResourceId contains "xHostPoolNamex" | parse _ResourceId with "/subscriptions/" subscriptionAgentHealth "/resourcegroups/" ResourceGroupAgentHealth "/providers/microsoft.desktopvirtualization/hostpools/" HostPool | parse SessionHostResourceId with "/subscriptions/" VMsubscription "/resourceGroups/" VMresourceGroup "/providers/Microsoft.Compute/virtualMachines/" ComputerName | extend ComputerName=tolower(ComputerName) | summarize arg_max(TimeGenerated,*) by ComputerName | project VMresourceGroup, ComputerName, HostPool ) on ComputerName' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: 1b3f0c37-61b9-4024-8e4b-17b2279d3306 - name: FSLogix Disk Already In Use (xHostPoolNamex) description: User Profile Service logged an Event ID 51. This indicates that a user attempted to load their profile disk but it was in use or possibly mapped to another VM. Ensure the user is not connected to another host pool or remote app with the same profile. Regarding xHostPoolNamex. type: Log verified: false visible: true tags: - avd properties: severity: 2 operator: GreaterThanOrEqual timeAggregation: Count windowSize: P1D evaluationFrequency: PT5M resourceIdColumn: _ResourceId threshold: 1 dimensions: - name: ComputerName operator: Include values: - '*' - name: RenderedDescription operator: Include values: - '*' - name: VMresourceGroup operator: Include values: - '*' - name: HostPool operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'Event | where EventLog == "Microsoft-FSLogix-Apps/Operational" | where EventLevelName == "Warning" | where EventID == 51 | parse _ResourceId with "/subscriptions/" subscription "/resourcegroups/" ResourceGroup "/providers/microsoft.compute/virtualmachines/" ComputerName | extend ComputerName=tolower(ComputerName) | project ComputerName, RenderedDescription, subscription, ResourceGroup, TimeGenerated | join kind = leftouter (WVDAgentHealthStatus | where _ResourceId contains "xHostPoolNamex" | parse _ResourceId with "/subscriptions/" subscriptionAgentHealth "/resourcegroups/" ResourceGroupAgentHealth "/providers/microsoft.desktopvirtualization/hostpools/" HostPool | parse SessionHostResourceId with "/subscriptions/" VMsubscription "/resourceGroups/" VMresourceGroup "/providers/Microsoft.Compute/virtualMachines/" ComputerName | extend ComputerName=tolower(ComputerName) | summarize arg_max(TimeGenerated,*) by ComputerName | project VMresourceGroup, ComputerName, HostPool ) on ComputerName' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: edbbb4d2-00e5-4592-a489-08c2afe37506 - name: Session Host Healthcheck Failure (xHostPoolNamex) description: VM is available for use but one of the dependent resources is in a failed state for hostpool xHostPoolNamex. type: Log verified: false visible: true tags: - avd properties: severity: 2 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT15M evaluationFrequency: PT15M resourceIdColumn: _ResourceId threshold: 1 dimensions: - name: SessionHostName operator: Include values: - '*' - name: HealthCheckDesc operator: Include values: - '*' - name: HostPool operator: Include values: - '*' - name: SessionHostRG operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'let MapToDesc = (idx: long) { case(idx == 0, "DomainJoin", idx == 1, "DomainTrust", idx == 2, "FSLogix", idx == 3, "SxSStack", idx == 4, "URLCheck", idx == 5, "GenevaAgent", idx == 6, "DomainReachable", idx == 7, "WebRTCRedirector", idx == 8, "SxSStackEncryption", idx == 9, "IMDSReachable", idx == 10, "MSIXPackageStaging", "InvalidIndex")}; WVDAgentHealthStatus | where TimeGenerated > ago(10m) | where Status != "Available" | where AllowNewSessions = True | extend CheckFailed = parse_json(SessionHostHealthCheckResult) | mv-expand CheckFailed | where CheckFailed.AdditionalFailureDetails.ErrorCode != 0 | extend HealthCheckName = tolong(CheckFailed.HealthCheckName) | extend HealthCheckResult = tolong(CheckFailed.HealthCheckResult) | extend HealthCheckDesc = MapToDesc(HealthCheckName) | where HealthCheckDesc != "InvalidIndex" | where _ResourceId contains "xHostPoolNamex" | parse _ResourceId with "/subscriptions/" subscription "/resourcegroups/" HostPoolResourceGroup "/providers/microsoft.desktopvirtualization/hostpools/" HostPool | parse SessionHostResourceId with "/subscriptions/" HostSubscription "/resourceGroups/" SessionHostRG " /providers/Microsoft.Compute/virtualMachines/" SessionHostName' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: c87ad0cd-e867-4d18-b61c-ec2a092ef459 - name: Personal Desktop Assigned Healthcheck Failure (xHostPoolNamex) description: VM is assigned to a user but one of the dependent resources is in a failed state for hostpool xHostPoolNamex. This alert relies on the runbook AvdHostPoolLogData. type: Log verified: false visible: true tags: - avd properties: severity: 1 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT5M evaluationFrequency: PT5M resourceIdColumn: _ResourceId threshold: 1 dimensions: - name: SessionHostName operator: Include values: - '*' - name: HealthCheckDesc operator: Include values: - '*' - name: HostPool operator: Include values: - '*' - name: SessionHostRG operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'AzureDiagnostics | where Category has "JobStreams" and StreamType_s == "Output" and RunbookName_s == "AvdHostPoolLogData" | sort by TimeGenerated | where TimeGenerated > ago(15m) | extend HostPoolName=tostring(split(ResultDescription, "|")[0]) | extend ResourceGroup=tostring(split(ResultDescription, "|")[1]) | extend Type=tostring(split(ResultDescription, "|")[2]) | extend NumberSessionHosts=toint(split(ResultDescription, "|")[4]) | extend UserSessionsActive=toint(split(ResultDescription, "|")[7]) | extend NumPersonalUnhealthy=toint(split(ResultDescription, "|")[10]) | extend PersonalSessionHost=extract_json("$.SessionHost", tostring(split(ResultDescription, "|")[11]), typeof(string)) | extend PersonalAssignedUser=extract_json("$.AssignedUser", tostring(split(ResultDescription, "|")[11]), typeof(string)) | where HostPoolName =~ "xHostPoolNamex" | where Type == "Personal" | where NumPersonalUnhealthy > 0 ' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: 55c5591a-60bb-48a0-bdd5-4c35f6293278 - name: User Connection to Session Host Failure (xHostPoolNamex) description: While trying to connect to xHostPoolNamex a user had an error and failed to connect to a VM. There are lots of variables between the end uers and AVD VMs. If this is frequent for the user, determine if their Internet connection is slow or latency is over 150 ms. Regarding xHostPoolNamex. type: Log verified: false visible: true tags: - avd properties: severity: 3 operator: GreaterThanOrEqual timeAggregation: Count windowSize: PT5M evaluationFrequency: PT5M resourceIdColumn: _ResourceId threshold: 1 dimensions: - name: HostPool operator: Include values: - '*' - name: ResourceGroup operator: Include values: - '*' - name: UserName operator: Include values: - '*' - name: ClientOS operator: Include values: - '*' - name: ClientVersion operator: Include values: - '*' - name: ClientSideIPAddress operator: Include values: - '*' - name: ConnectionType operator: Include values: - '*' - name: ErrorShort operator: Include values: - '*' - name: ErrorMessage operator: Include values: - '*' failingPeriods: numberOfEvaluationPeriods: 1 minFailingPeriodsToAlert: 1 query: 'WVDConnections // | where UserName == "upn.here@contoso.com" | project-away TenantId,SourceSystem | summarize arg_max(TimeGenerated, *), StartTime = min(iff(State=="Started", TimeGenerated , datetime(null) )), ConnectTime = min(iff(State=="Connected", TimeGenerated , datetime(null) )) by CorrelationId | join kind=leftouter (WVDErrors |summarize Errors=make_list(pack("Code", Code, "CodeSymbolic", CodeSymbolic, "Time", TimeGenerated, "Message", Message ,"ServiceError", ServiceError, "Source", Source)) by CorrelationId ) on CorrelationId | join kind=leftouter (WVDCheckpoints | summarize Checkpoints=make_list(pack("Time", TimeGenerated, "Name", Name, "Parameters", Parameters, "Source", Source)) by CorrelationId | mv-apply Checkpoints on ( order by todatetime(Checkpoints["Time"]) asc | summarize Checkpoints=make_list(Checkpoints)) ) on CorrelationId | project-away CorrelationId1, CorrelationId2 | order by TimeGenerated desc | where TimeGenerated > ago(15m) | extend ResourceGroup=tostring(split(_ResourceId, "/")[4]) | extend HostPool=tostring(split(_ResourceId, "/")[8]) | where HostPool =~ "xHostPoolNamex" | extend ErrorShort=tostring(Errors[0].CodeSymbolic) | extend ErrorMessage=tostring(Errors[0].Message) | project TimeGenerated, HostPool, ResourceGroup, UserName, ClientOS, ClientVersion, ClientSideIPAddress, ConnectionType, ErrorShort, ErrorMessage' autoMitigate: true autoResolve: true autoResolveTime: 0:30:00 references: null deployments: - name: AVD-HostPool template: Deploy-AVD-HostPool-Alert.json type: Policy tags: - alz properties: scope: Subscription multiResource: false enabled: true guid: 1f0258f8-bc06-4593-9d77-eba879f5b62d