Stop paying workday prices all night and every weekend. Scale Azure resources to real demand, and keep the size you need when people are actually using them.
A P4 database (500 DTU), left on all month, is €1,606 in West Europe. Weekdays 08:00–18:00 stay at P4 and the other hours drop to P1 (125 DTU), so the month is €760. List price, one database, no extra storage.
The Problem
Critical PaaS resources on Azure are flexible but don't autoscale. You end up continuously monitoring and scaling manually — a time-consuming task that leads to overprovisioning and unnecessary cost. Or worse, the autoscaling features that do exist simply fail in edge cases.
Azure Autoscaler closes that gap with a self-hosted, containerized solution that monitors your resources and scales them intelligently — based on real-time metrics, forecasting, or defined schedules.
Databases: Dtu, MaxDataBytes. Elastic pools: Dtu, MaxDataBytes, PerDatabaseMaxCapacity.
Sku, CoreCount, Iops
Sku, CoreCount, Iops
ProvisionedStorage, Throughput
MinNodeCount
HostedParallelJobs, PrivateParallelJobs
Sku
Custom metrics
A custom metric is written into Azure Monitor and charted next to the platform metrics. Node pool node count. On Azure SQL, replica DTU, memory, and replica latency. The rule then reads those series the same way it reads dtu_used.
replica_dtu_used and dtu_used
replica_dtu_used dtu_used Example. The replica series is custom. dtu_used is the platform metric.
Transform and ScaleTarget are C# lambdas. This one reads FileCapacity, converts the average to GB, and sets provisioned storage to that plus 50 GB.
ScalingConfigurations:
Baseline:
Metrics:
FileCapacity:
Name: FileCapacity
ResourceId: "/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Storage/storageAccounts/${storageAccountName}/fileServices/default"
Window: 02:00:00
TimeGrain: 01:00:00
SplitName: "FileShare"
SplitValue: "${fileShareName}"
Aggregations: ["Average"]
Transform: "(value) => value.SetAverage(value.Average / (1000 * 1000 * 1000))" # Convert to Gb
TimeWindow:
Days: All
Months: All
StartTime: "00:00"
EndTime: "23:59"
TimeZone: UTC
ScalingRules:
fixed:
ScalingStrategy: Fixed
Dimension: ProvisionedStorage
# Fixed +50 GB above whatever is being used
ScaleTarget: "(data) => (data.Metrics[\"FileCapacity\"].Values.First().Average + 50).ToString()"
DimensionValueCeilingStep: "1" # Round up to nearest GB
DimensionValueMin: "100" # Minimum 100 GB for Azure Files
Features
Runs as a containerized application in your AKS cluster or Azure Container Services. Your data never leaves your environment.
Scale up before business hours, scale down overnight. Define schedules that match your real traffic patterns and save money when resources are idle.
Write custom scaling rules using Lambda expressions evaluated against real-time Azure Monitor metrics. Total control without code changes.
Custom forecasting algorithms predict future demand and scale proactively — before load spikes cause degraded performance.
Target multiple dimensions for the same resource — CPU, memory, IOPS, available storage. The system automatically picks the best available SKU or scales each dimension independently when the resource supports it.
Getting Started
Deploy the containerized solution, grant permissions, and let it run.
Define your scaling rules and resources. Monitor the autoscaler in dry-run mode before going live.
Enable the solution and forget about manually scaling or babysitting your resources ever again.
Watch your resources scale automatically. Track cost savings and performance improvements over time.
Licensing
Pay with PayPal or subscribe through Azure Marketplace. You receive access to a private container registry, where you pull container images that are already built, and a license code. Set that code in the environment variables of the deployment.
Or only pay for what you save. We deploy Azure Autoscaler with you. For 12 months the fee is 50% of the Azure spend you save. After that, regular licensing.