Skip to content

Commit b41e05f

Browse files
authored
Merge pull request #88277 from Minewiskan/aas-metrics-update
Aas metrics update
2 parents a4e639e + a5c7091 commit b41e05f

File tree

3 files changed

+50
-18
lines changed

3 files changed

+50
-18
lines changed

articles/analysis-services/analysis-services-logging.md

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: minewiskan
55
manager: kfile
66
ms.service: azure-analysis-services
77
ms.topic: conceptual
8-
ms.date: 02/14/2019
8+
ms.date: 09/12/2019
99
ms.author: owend
1010
ms.reviewer: minewiskan
1111

@@ -62,7 +62,7 @@ Selecting **Engine** logs all [xEvents](https://docs.microsoft.com/analysis-serv
6262

6363
### All metrics
6464

65-
The Metrics category logs the same [Server metrics](analysis-services-monitor.md#server-metrics) displayed in Metrics.
65+
The Metrics category logs the same [Server metrics](analysis-services-monitor.md#server-metrics) to the AzureMetrics table. If you're using query [scale-out](analysis-services-scale-out.md) and need to separate metrics for each read replica, use the AzureDiagnostics table instead, where **OperationName** is equal to **LogMetric**.
6666

6767
## Setup diagnostics logging
6868

@@ -156,27 +156,53 @@ To view your diagnostic data, in Log Analytics workspace, open **Logs** from th
156156

157157
In the query builder, expand **LogManagement** > **AzureDiagnostics**. AzureDiagnostics includes Engine and Service events. Notice a query is created on-the-fly. The EventClass\_s field contains xEvent names, which may look familiar if you've used xEvents for on-premises logging. Click **EventClass\_s** or one of the event names and Log Analytics workspace continues constructing a query. Be sure to save your queries to reuse later.
158158

159-
### Example query
160-
This query calculates and returns CPU for each query end/refresh end event for a model database and server:
159+
### Example queries
160+
161+
#### Example 1
162+
163+
The following query returns durations for each query end/refresh end event for a model database and server. If scaled out, the results are broken out by replica because the replica number is included in ServerName_s. Grouping by RootActivityId_g reduces the row count retrieved from the Azure Diagnostics REST API and helps stay within the limits as described in [Log Analytics Rate limits](https://dev.loganalytics.io/documentation/Using-the-API/Limits).
161164

162165
```Kusto
163-
let window = AzureDiagnostics
164-
| where ResourceProvider == "MICROSOFT.ANALYSISSERVICES" and ServerName_s =~"MyServerName" and DatabaseName_s == "Adventure Works Localhost" ;
166+
let window = AzureDiagnostics
167+
| where ResourceProvider == "MICROSOFT.ANALYSISSERVICES" and Resource =~ "MyServerName" and DatabaseName_s =~ "MyDatabaseName" ;
165168
window
166169
| where OperationName has "QueryEnd" or (OperationName has "CommandEnd" and EventSubclass_s == 38)
167170
| where extract(@"([^,]*)", 1,Duration_s, typeof(long)) > 0
168171
| extend DurationMs=extract(@"([^,]*)", 1,Duration_s, typeof(long))
169-
| extend Engine_CPUTime=extract(@"([^,]*)", 1,CPUTime_s, typeof(long))
170-
| project StartTime_t,EndTime_t,ServerName_s,OperationName,RootActivityId_g ,TextData_s,DatabaseName_s,ApplicationName_s,Duration_s,EffectiveUsername_s,User_s,EventSubclass_s,DurationMs,Engine_CPUTime
171-
| join kind=leftouter (
172-
window
173-
| where OperationName == "ProgressReportEnd" or (OperationName == "VertiPaqSEQueryEnd" and EventSubclass_s != 10) or OperationName == "DiscoverEnd" or (OperationName has "CommandEnd" and EventSubclass_s != 38)
174-
| summarize sum_Engine_CPUTime = sum(extract(@"([^,]*)", 1,CPUTime_s, typeof(long))) by RootActivityId_g
175-
) on RootActivityId_g
176-
| extend totalCPU = sum_Engine_CPUTime + Engine_CPUTime
172+
| project StartTime_t,EndTime_t,ServerName_s,OperationName,RootActivityId_g,TextData_s,DatabaseName_s,ApplicationName_s,Duration_s,EffectiveUsername_s,User_s,EventSubclass_s,DurationMs
173+
| order by StartTime_t asc
174+
```
175+
176+
#### Example 2
177177

178+
The following query returns memory and QPU consumption for a server. If scaled out, the results are broken out by replica because the replica number is included in ServerName_s.
179+
180+
```Kusto
181+
let window = AzureDiagnostics
182+
| where ResourceProvider == "MICROSOFT.ANALYSISSERVICES" and Resource =~ "MyServerName";
183+
window
184+
| where OperationName == "LogMetric"
185+
| where name_s == "memory_metric" or name_s == "qpu_metric"
186+
| project ServerName_s, TimeGenerated, name_s, value_s
187+
| summarize avg(todecimal(value_s)) by ServerName_s, name_s, bin(TimeGenerated, 1m)
188+
| order by TimeGenerated asc
178189
```
179190

191+
#### Example 3
192+
193+
The following query returns the Rows read/sec Analysis Services engine performance counters for a server.
194+
195+
```Kusto
196+
let window = AzureDiagnostics
197+
| where ResourceProvider == "MICROSOFT.ANALYSISSERVICES" and Resource =~ "MyServerName";
198+
window
199+
| where OperationName == "LogMetric"
200+
| where parse_json(tostring(parse_json(perfobject_s).counters))[0].name == "Rows read/sec"
201+
| extend Value = tostring(parse_json(tostring(parse_json(perfobject_s).counters))[0].value)
202+
| project ServerName_s, TimeGenerated, Value
203+
| summarize avg(todecimal(Value)) by ServerName_s, bin(TimeGenerated, 1m)
204+
| order by TimeGenerated asc
205+
```
180206

181207
There are hundreds of queries you can use. To learn more about queries, see [Get started with Azure Monitor log queries](../azure-monitor/log-query/get-started-queries.md).
182208

articles/analysis-services/analysis-services-monitor.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: minewiskan
55
manager: kfile
66
ms.service: azure-analysis-services
77
ms.topic: conceptual
8-
ms.date: 07/26/2019
8+
ms.date: 09/12/2019
99
ms.author: owend
1010
ms.reviewer: minewiskan
1111

@@ -50,6 +50,10 @@ Use this table to determine which metrics are best for your monitoring scenario.
5050
|MemoryLimitLow|Memory: Memory Limit Low|Bytes|Average|Low memory limit, from configuration file.|
5151
|MemoryLimitVertiPaq|Memory: Memory Limit VertiPaq|Bytes|Average|In-memory limit, from configuration file.|
5252
|MemoryUsage|Memory: Memory Usage|Bytes|Average|Memory usage of the server process as used in calculating cleaner memory price. Equal to counter Process\PrivateBytes plus the size of memory-mapped data, ignoring any memory, which was mapped or allocated by the in-memory analytics engine (VertiPaq) in excess of the engine Memory Limit.|
53+
|private_bytes_metric|Private Bytes |Bytes|Average|The total amount of memory the Analysis Services engine process and Mashup container processes have allocated, not including memory shared with other processes.|
54+
|virtual_bytes_metric|Virtual Bytes |Bytes|Average|The current size of the virtual address space that Analysis Services engine process and Mashup container processes are using.|
55+
|mashup_engine_private_bytes_metric|M Engine Private Bytes |Bytes|Average|The total amount of memory Mashup container processes have allocated, not including memory shared with other processes.|
56+
|mashup_engine_virtual_bytes_metric|M Engine Virtual Bytes |Bytes|Average|The current size of the virtual address space Mashup container processes are using.|
5357
|Quota|Memory: Quota|Bytes|Average|Current memory quota, in bytes. Memory quota is also known as a memory grant or memory reservation.|
5458
|QuotaBlocked|Memory: Quota Blocked|Count|Average|Current number of quota requests that are blocked until other memory quotas are freed.|
5559
|VertiPaqNonpaged|Memory: VertiPaq Nonpaged|Bytes|Average|Bytes of memory locked in the working set for use by the in-memory engine.|

articles/analysis-services/analysis-services-vnet-gateway.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: minewiskan
55
manager: kfile
66
ms.service: azure-analysis-services
77
ms.topic: conceptual
8-
ms.date: 01/09/2019
8+
ms.date: 09/12/2019
99
ms.author: owend
1010
ms.reviewer: minewiskan
1111

@@ -16,10 +16,12 @@ This article describes the **AlwaysUseGateway** server property for use when dat
1616

1717
## Server access to VNet data sources
1818

19-
If your data sources are accessed through a VNet, your Azure Analysis Services server must connect to those data sources as if they are on-premises, in your own environment. You can configure the **AlwaysUseGateway** server property to specify the server to access all datasource data through an [On-premises gateway](analysis-services-gateway.md).
19+
If your data sources are accessed through a VNet, your Azure Analysis Services server must connect to those data sources as if they are on-premises, in your own environment. You can configure the **AlwaysUseGateway** server property to specify the server to access all data sources through an [On-premises gateway](analysis-services-gateway.md).
20+
21+
Azure SQL Database Managed Instance data sources run within Azure VNet with a private IP address. If public endpoint is enabled on the instance, a gateway is not required. If public endpoint is not enabled, an On-premises Data Gateway is required and the AlwaysUseGateway property must be set to true.
2022

2123
> [!NOTE]
22-
> This property is effective only when an [On-premises data gateway](analysis-services-gateway.md) is installed and configured. The gateway can be on the VNet.
24+
> This property is effective only when an [On-premises Data Gateway](analysis-services-gateway.md) is installed and configured. The gateway can be on the VNet.
2325
2426
## Configure AlwaysUseGateway property
2527

0 commit comments

Comments
 (0)