Infrastructure dashboard
Dashboard name: dash-mz-infra-{env} (dev / prd)
UID: monozu-infrastructure
Region: swedencentral (dashboard resource; apps may be in polandcentral)
Source: Infrastructure/observability/grafana/monozu-infra.dashboard.json
Deployed from main.bicep after the apps module so Container App and SQL resource metadata is available.
Same path as the application dashboard — rg-monozu-shared-{env} → dash-mz-infra-{env}.
RBAC: Monitoring Reader on shared, cloud, ingest, and manage resource groups (Azure RBAC — distinct from tenant JWT permissions).
Filters
Section titled “Filters”| Variable | Selection | Values (labels) |
|---|---|---|
| app | Multi-select, Include All | cloud, worker, ingestor, management, otel-collector |
| database | Multi-select, Include All | cloud, management |
Each option’s value is the Container App name or SQL server/database resource name (substituted at deploy). ACA and SQL metric panels list structured resource objects (subscription, resourceGroup, resourceName, metricNamespace, region) so Portal Grafana populates the Resource picker.
Unlike the application dashboard, infra variables do not use allValue: "all" — Azure Monitor Metrics expands “All” to every option value.
Default time range: 24 hours. Refresh: 5 minutes.
| Row ID | Section |
|---|---|
| 100 | Overview — CPU, memory, replicas, restarts, DTU, storage, deadlocks, queue depth |
| 200 | Container Apps — per-app Azure Monitor metrics |
| 300 | Azure SQL — DTU, storage, workers, deadlocks, connections |
| 400 | Jobs queue — worker custom metric + job throughput |
Container Apps metrics
Section titled “Container Apps metrics”Namespace Microsoft.App/containerapps. Panels include CpuPercentage, MemoryPercentage, Replicas, RestartCount, Requests (by status category), plus fallback UsageNanoCores and WorkingSetBytes when preview percentage metrics are unavailable.
Azure SQL metrics
Section titled “Azure SQL metrics”Namespace Microsoft.Sql/servers/databases: dtu_consumption_percent, storage_percent, workers_percent, deadlock, connection_successful, connection_failed, etc. One series per database.
Queue depth
Section titled “Queue depth”Uses the worker custom metric monozu.jobs.queue.depth from AppMetrics in LAW — not native hourly QueueMessageCount.
Visual thresholds (informational only — no alert rules)
Section titled “Visual thresholds (informational only — no alert rules)”| Signal | Warning | Critical |
|---|---|---|
| CPU / memory / DTU % | 70% | 85% |
| Queue depth | 50 | 200 |
Deploy / rollback
Section titled “Deploy / rollback”Bicep replaces placeholders (__SUBSCRIPTION_ID__, __RG_*__, __ACA_*_NAME__, __SQL_*__, __LAW_RESOURCE_ID__, __METRICS_REGION__) at compile time. Validate JSON before deploy; rollback by redeploying prior git revision.