Skip to content

Observability dashboards

Monozu deploys two Azure Monitor dashboards with Grafana in rg-monozu-shared-{env}:

DashboardNameFocus
Application & databasedash-mz-app-{env}HTTP, worker jobs, tenants, SQL, errors, logs
Infrastructuredash-mz-infra-{env}Container Apps, Azure SQL, jobs queue

Legacy dash-monozu-obs-{env} remains until manually removed from Azure after you accept the new dashboards.

See Telemetry architecture for the full pipeline: App → OTLP → central Collector → four Application Insights components → LAW → Grafana.

flowchart LR
    ACA[Container Apps] --> Collector[OTel Collector]
    Collector --> AI[Application Insights]
    AI --> LAW[Log Analytics]
    LAW --> App[dash-mz-app-env]
    LAW --> Infra[dash-mz-infra-env]
    ACA -->|Azure Monitor Metrics| Infra
    Collector -->|Azure Monitor Metrics| Infra

Monitoring Reader on:

  • rg-monozu-shared-{env}
  • rg-monozu-cloud-{env}
  • rg-monozu-ingest-{env}
  • rg-monozu-manage-{env}

This is Azure RBAC for portal dashboards — not tenant JWT permissions inside the product.

Container AppAppRoleName in LAW
Cloud APImonozu-cloud-backend
Workermonozu-cloud-worker
Ingestormonozu-ingestor
Managementmonozu-management-backend
OTel Collector(no App Insights role — routes only)
  1. JSON sources: Infrastructure/observability/grafana/monozu-app.dashboard.json and monozu-infra.dashboard.json
  2. Validate: python3 Infrastructure/observability/grafana/validate_dashboards.py <paths>
  3. Deploy infrastructure Bicep — app dashboard from shared.bicep, infra dashboard from main.bicep (after apps)

See Observability troubleshooting for empty panels, sampling, datasource UID, and queue metric freshness.