S2:E7 · AI-Assisted Azure Development
August 4, 2025General Availability – Schema Migration support in Azure Database Migration Service (DMS)
August 4, 2025This blog is continuation of my previous blog where I discussed about saving ingestion costs by splitting logs into multiple tables and opting for the basic tier!
Now that the transformation feature for Auxiliary logs has entered Public Preview stage, I’ll take a deeper dive, showing how to implement transformations to split logs across tables and route some of them to the Auxiliary tier.
A quick refresher: Azure Monitor offers several log plans which our customers can opt for depending on their use cases. These log plans include:
- Analytics Logs – This plan is designed for frequent, concurrent access and supports interactive usage by multiple users. This plan drives the features in Azure Monitor Insights and powers Microsoft Sentinel. It is designed to manage critical and frequently accessed logs optimized for dashboards, alerts, and business advanced queries.
- Basic Logs – Improved to support even richer troubleshooting and incident response with fast queries while saving costs. Now available with a longer retention period and the addition of KQL operators to aggregate and lookup.
- Auxiliary Logs – Our new, inexpensive log plan that enables ingestion and management of verbose logs needed for auditing and compliance scenarios. These may be queried with KQL on an infrequent basis and used to generate summaries.
Following diagram provides detailed information about the log plans and their use cases:
More details about Azure Monitor Logs can be found here: Azure Monitor Logs – Azure Monitor | Microsoft Learn
**Note** This blog will be focussed on switching to Auxiliary logs only.
I would recommend going through our public documentation for detailed insights about feature-wise comparison for the log plans which should help you in taking right decisions for choosing the correct log plans.
At this stage, I assume you’re aware about different log tiers that Azure Monitor offers and you’ve decided to switch to Auxiliary logs for high volume, low-fidelity logs.
Let’s look at the high-level approach we’re going to follow to achieve this:
- Review the relevant tables and figure out which portion of the log can be moved to Auxiliary tier
- Create a DCR-based custom table which same schema as of the original table. For Ex. If you wish to split Syslog table and ingest a portion of the table into Auxiliary tier, then create a DCR-based custom table with same schema as of the Syslog table.
- At this point, switching table plan via UI is not possible, so I’d recommend using PowerShell script to create the DCR-based custom table.
- Once DCR-based custom table is created, implement DCR transformation to split the table.
- Configure total retention period of the Auxiliary table (this configuration will be done while creating the table)
Let’s get started
Use Case: In this demo, I’ll split Syslog table and route “Informational” logs to the Auxiliary table.
Creating a DCR-based custom table: Previously a complex task, creating custom tables is now easy, thanks to a PowerShell script by MarkoLauren. Simply input the name of an existing table, and the script creates a DCR-based custom table with the same schema.
Let’s see it in action now:
- Download the script locally.
Update the resourceID details in this script and save it.
- Upload the updated script in Azure Shell.
- Load the file and enter the table name from which you wish to copy the schema. In my case, it’s going to be “Syslog” table.
Enter new table name, table type and total retention period, shown below:
**Note** We highly recommend you review the PowerShell script thoroughly and do proper testing before executing it in production. We don’t take any responsibility for the script.
As you can see, Aux_Syslog_CL table has been created. Let’s validate in log analytics workspace > table section.
Since the Auxiliary table has been created now, next step is to implement transformation logic at data collection rule level.
The next step is to update the Data Collection Rule template to split the logs
Since we already created custom table, we should create a transformation logic to split the Syslog table and route the logs with SeverityLevel “info” to the Auxiliary table.
Let’s see how it works:
- Browse to Data Collection Rule blade.
Open the DCR for Syslog table, click on Export template > Deploy > Edit Template as shown below:
In the dataFlows section, I’ve created 2 streams for splitting the logs. Details about the streams as follows:
1st Stream: It’s going to drop the Syslog messages where SeverityLevel is “info” and send rest of the logs to Syslog table.
2nd Stream: It’s going to capture all Syslog messages where SeverityLevel is “info” and send the logs to Aux_Syslog_CL table.
Save and deploy the updated template.
Let’s see if it works as expected
Browse to Azure > Microsoft Sentinel > Logs; and query the Auxiliary table to confirm if data is being ingested into this table.
As we can see, the logs where SeverityLevel is “info” is being ingested in the Aux_Syslog_CL table and rest of the logs are flowing into Syslog table.
Some nice cost savings are coming your way, hope this helps!