Skip to main content
APA
Sponsored by CAST AI — Kubernetes cost optimization Better Stack — Uptime monitoring and log management
⚠️

Alert thresholds depend on the nature of your applications. Some queries may have arbitrary tolerance thresholds. Building an efficient monitoring platform takes time. 😉

Azure Prometheus Alert Rules

5 Prometheus alerting rules for Azure. Exported via webdevops/azure-metrics-exporter. These rules cover critical and warning conditions — copy and paste the YAML into your Prometheus configuration.

The exporter uses azurerm_resource_metric as the default metric name for forwarded Azure Monitor metrics.
The metric name can be customized via the name parameter in probe configuration.
Self-monitoring metrics use the azurerm_stats_* and azurerm_api_* prefixes.
wget https://raw.githubusercontent.com/samber/awesome-prometheus-alerts/refs/heads/master/dist/rules/azure/azure-metrics-exporter.yml
warning

11.4.1. Azure exporter request errors

Azure metrics exporter on {{ $labels.instance }} has {{ $value }} API request errors in the last 15 minutes.

- alert: AzureExporterRequestErrors
  expr: increase(azurerm_stats_metric_requests{result="error"}[15m]) > 5
  for: 0m
  labels:
    severity: warning
  annotations:
    summary: Azure exporter request errors (instance {{ $labels.instance }})
    description: "Azure metrics exporter on {{ $labels.instance }} has {{ $value }} API request errors in the last 15 minutes.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

11.4.2. Azure exporter high error rate

Azure metrics exporter on {{ $labels.instance }} has an error rate above 10% ({{ $value }}%).

- alert: AzureExporterHighErrorRate
  expr: sum by (instance) (rate(azurerm_stats_metric_requests{result="error"}[5m])) / sum by (instance) (rate(azurerm_stats_metric_requests[5m])) * 100 > 10 and sum by (instance) (rate(azurerm_stats_metric_requests[5m])) > 0
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: Azure exporter high error rate (instance {{ $labels.instance }})
    description: "Azure metrics exporter on {{ $labels.instance }} has an error rate above 10% ({{ $value }}%).\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

11.4.3. Azure API read rate limit approaching

Azure API read rate limit for subscription {{ $labels.subscriptionID }} is running low ({{ $value }} remaining).

  # Azure Resource Manager enforces rate limits per subscription.
  # The threshold of 100 remaining calls is a rough default. Adjust based on your
  # scrape interval and number of monitored resources.
- alert: AzureAPIReadRateLimitApproaching
  expr: azurerm_api_ratelimit{type="read"} < 100
  for: 0m
  labels:
    severity: warning
  annotations:
    summary: Azure API read rate limit approaching (instance {{ $labels.instance }})
    description: "Azure API read rate limit for subscription {{ $labels.subscriptionID }} is running low ({{ $value }} remaining).\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

11.4.4. Azure API write rate limit approaching

Azure API write rate limit for subscription {{ $labels.subscriptionID }} is running low ({{ $value }} remaining).

- alert: AzureAPIWriteRateLimitApproaching
  expr: azurerm_api_ratelimit{type="write"} < 50
  for: 0m
  labels:
    severity: warning
  annotations:
    summary: Azure API write rate limit approaching (instance {{ $labels.instance }})
    description: "Azure API write rate limit for subscription {{ $labels.subscriptionID }} is running low ({{ $value }} remaining).\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

11.4.5. Azure exporter slow collection

Azure metrics exporter on {{ $labels.instance }} metric collection is taking more than 5 minutes ({{ $value }}s).

- alert: AzureExporterSlowCollection
  expr: azurerm_stats_metric_collecttime > 300
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: Azure exporter slow collection (instance {{ $labels.instance }})
    description: "Azure metrics exporter on {{ $labels.instance }} metric collection is taking more than 5 minutes ({{ $value }}s).\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"