Loading...

Monitoring serverless SQL ended requests by using Log Analytics.

Monitoring serverless SQL ended requests by using Log Analytics.

Scenario

 

Today I would like to share a scenario that I was working on one of my serverless SQL Pool support cases. The customer asked for an advice on how to monitor serverless SQL requests by using log analytics.

 

The intention of this guide is to help you with choosing the configuration required to easily setup the Synapse Analytics Workspace monitoring and all other considerations about how to monitor serverless SQL requests with Azure Monitor. SpoilerAt the end of this articleI will share the latest version of the serverless workbook posted on the Azure_Synapse_Tool_Box. This includes a really cool way to see query execution information.

 

Before we start... here are some initial considerations.

 

Azure monitor provides base-level infrastructure metrics, alerts, and log for most Azure Services.

 

Metrics are numerical values that describe some aspects of a system at a particular point in time. It is the most important way to monitor data and gain insight into the performance counter. 

 

Logs are events that occur in the system. They can contain different kinds of data and might be structured or freeform text with a timestamp. Logs in Azure Monitor are stored in a Log Analytics workspace that's based on Azure Data Explorer. 

 

For Azure Synapse Analytics metrics, we have the following types:

  • Workspace-level metrics
  • Dedicated SQL pool metrics
  • Apache Spark Pool metrics

To monitor some data from the Synapse Workspace operation, Azure Synapse Analytics writes the diagnostic logs in Azure Monitor.

 

For Azure Synapse Analytics logs, we have the following types:

  • Workspace-level logs
  • Dedicated SQL pool logs
  • Apache Spark Pool log

You can find more information regarding Synapse metrics and logs in the following public reference:  How to monitor Synapse Analytics using Azure Monitor - Azure Synapse Analytics | Microsoft Learn

 

At the moment when I was writing this article, the only way to read the logs emitted by Azure Synapse workspaces for serverless SQL requests is by querying the log analytics table name called SynapseBuiltinSqlPoolRequestsEnded.

 

On the table above, we can find the Synapse built-in serverless SQL Pool ended requests. It means that only sql requests succeeded or failed. 

 

Now that you know a little bit about metric and logs, let's start creating the Synapse diagnostic settings to configure diagnostic logs for serverless sql requests workspace resource. 

 

Environment

 

Pre-Requisites

Make sure you have at least one Log Analytics workspace to easily store, retain and query data collected from your monitored Synapse workspace resource.

 

Creating a Log Analytics workspace

Follow these steps below to set up a new Log Analytics workspace:

 

1. From Azure Portal, in the search bar on top of your portal, search for Log Analytics workspace.

sidneycirqueira_2-1665693272436.png

2. From the Log Analytics workspaces page -> "+ Create".

3. Provide the project and instance details: Subscription, resource group, name and region. "Review and Create".

 

sidneycirqueira_4-1665693627331.png

 

Creating a Log Analytics workspace

Follow these steps below to set up a new diagnostic setting and use the Log Analytics workspace to monitor Synapse logs: 

 

1. From the Azure Portal, open the Synapse Workspace page that you would like to monitor. From the left-menu, "Monitoring" -> "Diagnostic settings" -> "Add diagnostic setting"

 

sidneycirqueira_0-1665692571964.png

 

We can see in the image above, some collection of data that can be logged.

 

2. From the "logs categories" choose the built-in Sql Pool Requests Ended and on "Destination details" check the "Send to Log Analytics workspace" box and select the workspace already created. Type the "Diagnostic setting name" and "Save" the diagnostic settings. 

 

sidneycirqueira_1-1665696563778.png

 

3. After a few moments, the new setting appears in your list of settings for this resource. 

 

sidneycirqueira_0-1665696471247.png

 

 

Monitoring the serverless sql requests from Synapse Studio

Follow these steps below to query logged data from log analytics to monitor serverless sql requests:

 

1. Let's start to query a sample data from data lake storage by using OPENROWSET function in Synapse Studio page. 

 

sidneycirqueira_1-1665698096723.png

 

sidneycirqueira_2-1665698172271.png

 

2. Let's check by using Synapse Studio to monitor the SQL requests to view the sql requests details about this specific query above.

 

sidneycirqueira_3-1665698393989.png

 

Querying the serverless sql ended requests from Log Analytics

1. Go back to your Synapse workspace page, in the left-menu, "Monitoring" -> "Logs". Close the query recommendation if it pops-up on the workspace. 

Select the "SynapseBuiltinSqlPoolRequestsEnded" table, type the table name and "Run" the simple KQL query below.

 

 

 

 

 

 

 

 

SynapseBuiltinSqlPoolRequestsEnded

 

 

 

 

 

 

 

  

As a result of my log analytics environment, I have the following query result. 

 

scirqueira_2-1665784371759.png

 

We can see on the screenshot above a lot of interesting fields which can be used to gain insight from serverless sql requests. Here we have the complete list of columns, type and description of the data which can be used to find information regarding serverless SQL query.

 

Feel free to use these KQL scripts below to start looking at some interesting sql requests ended results. #Enjoy

 

 

 

 

 

 

 

 

// All metadata and query results SynapseBuiltinSqlPoolRequestsEnded | where TimeGenerated > ago(15m) // Full query result SynapseBuiltinSqlPoolRequestsEnded | project clientRequestId=Properties.clientRequestId, command=Properties.command, dataProcessedBytes=Properties.dataProcessedBytes, distributedStatementId=Properties.distributedStatementId , startTime=Properties.startTime, endTime=Properties.endTime, error=Properties.error, queryHash=Properties.queryHash, queryText=Properties.queryText // Queries by completion type SynapseBuiltinSqlPoolRequestsEnded | summarize count() by ResultType | render piechart // Most Recent Query Runs SynapseBuiltinSqlPoolRequestsEnded | order by TimeGenerated | project StartTime=Properties.startTime, EndTime=Properties.endTime, Identity, CommandType=Properties.command, Result=ResultType, MbProcessed=(Properties.dataProcessedBytes/1024/1024), QueryText=Properties.queryText, _ResourceId | extend elapsedTime_sec =(todatetime(EndTime) - StartTime)/1s | extend Approx_Cost=((MbProcessed)*0.000476837158203125)/100 // Data Processed By Query SynapseBuiltinSqlPoolRequestsEnded | project BytesProcessed=Properties.dataProcessedBytes,tostring(Identity), QueryHash=tostring(Properties.queryHash),QueryText=tostring(Properties.queryText) | summarize MaxSingleQueryMBProcessed=max(toint(BytesProcessed)/1024/1024), TotalMBProcessed=sum(toint(BytesProcessed)/1024/1024), QueryCount=count(), QueryHash=any(QueryHash) by QueryText | extend Approx_Accumulated_Cost=((TotalMBProcessed)*0.000476837158203125)/100 //multiply by price per mb ($5 per TB from Microsoft Docs: https://azure.microsoft.com/en-us/pricing/details/synapse-analytics/) | extend Approx_Cost_Per_Execution=((TotalMBProcessed)*0.000476837158203125)/100/ QueryCount | order by TotalMBProcessed // Data Processed By User with $5 per TB cost SynapseBuiltinSqlPoolRequestsEnded | project BytesProcessed=Properties.dataProcessedBytes,tostring(Identity) | summarize TotalMBProcessed=sum(toint(BytesProcessed)/1024/1024),QueryCount=count(),MaxSingleQueryMBProcessed=max(toint(BytesProcessed)/1024/1024) by Identity | extend Approx_Cost=((TotalMBProcessed)*0.000476837158203125)/100 //multiply by price per mb ($5 per TB from Microsoft Docs: https://azure.microsoft.com/en-us/pricing/details/synapse-analytics/) | order by TotalMBProcessed

 

 

 

 

 

 

 

 

Let's go to the icing on the cake:

 

The Azure Synapse Toolbox is a place for useful tools and scripts to use with Azure Synapse Analytics. There you can find a lot of rich workbook templates to monitor all your Synapse environment. 

 

Now let's focus on the serverless workbook which will includes query execution information including costing.

As pre-requisite you must have 'diagnostic settings' enabled at the workspace level to send 'BuiltinSqlReqsEnded' to Log Analytics. I have already proceeded with these settings. If you do not have it enabled, please go back to the begin of this article and follow all steps. 

 

Follow the steps below to setup the serverless workbook. More information here

1. From Azure Portal, search for your log analytics workspace, from the log analytics page go to left-menu "General" -> "Workbook" -> "+ New". 

 

sidneycirqueira_1-1665774117262.png

 

2. Click on "</>" (advanced editor).

sidneycirqueira_0-1665774344739.png

 

3. Overwrite the code shown on the gallery template with the content available here. Select all content of the git page and paste on the gallery template, and then "Apply".

 

sidneycirqueira_2-1665774722355.png

4. Click on "Save As" and provide the Title for your workbook.

 

sidneycirqueira_3-1665774894588.png

 

And finally, you are ready to enjoy of the rich metrics and logs monitoring capability by using workbooks.  :stareyes:

 

sidneycirqueira_4-1665774978856.png

scirqueira_1-1665784293253.png

 

scirqueira_0-1665784246224.png

Conclusion

 

When using the Serverless SQL Pool to run your queries, users can take advantage of the diagnostic logs to monitor sql ended requests data efficiently. The log analytics provides a really simple way to run KQL queries and gain useful insight about sql query execution. 

 

References: 

Azure Monitor data platform

Diagnostic settings in Azure Monitor

Use Azure Monitor with your Azure Synapse Analytics workspace

 

Note: Thank you Silas Mendes for reviewing it.

 

If you are unable to complete the steps in the article, please do reach out to us by logging a Support Request.

 

SIDNEY CIRQUEIRA

Synapse Analytics Support Engineer - Americas

Published on:

Learn more
Azure Synapse Analytics Blog articles
Azure Synapse Analytics Blog articles

Azure Synapse Analytics Blog articles

Share post:

Related posts

We're moving!

We’re moving to the Analytics on Azure Tech Community! All new Azure Synapse Analytics content will be published there. In the next few days a...

1 year ago

Upgrade to Azure Synapse runtimes for Apache Spark 3.4 & previous runtimes deprecation

It is important to stay ahead of the curve and keep services up to date. That's why we encourage all Azure Synapse customers with Apache ...

2 years ago

ADF\Synapse Analytics - Replace Columns names using Rule based mapping in Mapping data flows

In real time, the column names from source might not be uniform, some columns will have a space in it, some other columns will not. For exampl...

2 years ago

Interpreting Script activity output json with Azure Data Factory\Synapse analytics

Script activity in Azure Data Factory\ Synapse analytics is very helpful to run queries against data sources mentioned here in this document.&...

2 years ago

Synapse Connectivity Series Part #4 - Advanced network troubleshooting and network trace analysis

Continuing the series of this blog posts I would like to go more advanced on troubleshooting connectivity issues. I would like to thank also&n...

2 years ago

Boost your CICD automation for Synapse SQL Serverless by taking advantage of SSDT and SqlPackage CLI

Introduction   Azure Synapse Analytics Serverless SQL is a query service mostly used over the data in your data lake, for data discovery,...

2 years ago

Metadata-Based Ingestion in Synapse with Delta Lake

  Overview     The crucial first step in any ETL (extract, transform, load) process or data engineering program is ingestion, w...

3 years ago

Missing Fields Added to Dedicated SQL pool Diagnostic Settings Logs

Over the past year, customers have informed the team there were a set of key columns missing in the standalone Dedicated SQL pools (formerly S...

3 years ago

Using Azure DevOps with Synapse Workspaces to create hot fixes in production environments

Have you ever deployed a release to production only to find out a bug has escaped your testing process and now users are being severely impact...

3 years ago

Azure Synapse MVP Corner - March 2023

About this blog series Microsoft Most Valuable Professionals, or MVPs, are technology experts who passionately share their knowledge with the ...

3 years ago

Newsletter

Get the latest Dynamics 365 and Power Platform content in your inbox

A curated digest of community blogs, product news, videos, and podcasts — delivered without the noise.

Weekly updates Unsubscribe anytime Fresh community picks
We use your email only for the newsletter and you can unsubscribe at any time.
By subscribing, you agree to the privacy policy.