CubeAPM
CubeAPM CubeAPM

Azure Managed Grafana: Setup and Comparison with Self-Hosted

Azure Managed Grafana: Setup and Comparison with Self-Hosted

Table of Contents

Azure Managed Grafana eliminates the operational burden of hosting Grafana yourself while preserving the core visualization and dashboarding capabilities teams depend on. For organizations already running workloads in Azure, it removes the need to provision infrastructure, manage upgrades, or worry about high availability. However, its per-active-user pricing model and Azure-specific optimizations mean it is not the right fit for every team.

This guide walks through how to deploy Azure Managed Grafana, configure data sources, and set up dashboards. It then compares managed deployment against self-hosted Grafana and other alternatives on cost, control, and operational overhead. By the end, you will know whether Azure Managed Grafana fits your observability stack or whether self-hosting or a different platform makes more sense for your workload.

Prerequisites

Before deploying Azure Managed Grafana, ensure you have:

  • An active Azure subscription with permissions to create resources in the target resource group
  • Azure CLI installed and authenticated, or access to Azure Portal
  • A data source to connect — Azure Monitor, Azure Data Explorer, Prometheus, or another supported source
  • Basic familiarity with Grafana dashboards and queries
  • For Microsoft Entra ID authentication: appropriate role assignments for users who will access the instance

Step 1: Create an Azure Managed Grafana Instance

Azure Managed Grafana instances are created through the Azure Portal, Azure CLI, or Infrastructure as Code templates like ARM or Terraform. This section covers the Portal method, which most teams use for initial setup.

  1. Navigate to the Azure Portal and search for “Azure Managed Grafana” in the marketplace
  2. Select Create and choose your subscription and resource group
  3. Provide an instance name and select the region closest to your data sources
  4. Choose the pricing tier: Essential (deprecated, existing instances only) or Standard
  5. Enable zone redundancy if high availability is required for your workload
  6. Assign role-based access control by adding users as Admin, Editor, or Viewer
  7. Review settings and select Create to provision the instance

Deployment typically completes in 5 to 10 minutes. Once provisioned, the instance is accessible via a unique *.grafana.azure.com endpoint.

The Essential tier is deprecated and scheduled to retire on March 31, 2027. New deployments must use the Standard tier.

Step 2: Configure Microsoft Entra ID Authentication

Azure Managed Grafana integrates natively with Microsoft Entra ID (formerly Azure Active Directory) for identity management. This eliminates the need to manage local Grafana users or API keys manually.

  1. Open the Grafana instance in the Azure Portal
  2. Navigate to Identity under the settings menu
  3. Enable system-assigned or user-assigned managed identity depending on your deployment model
  4. Assign Grafana Organization roles to users or groups: Admin, Editor, or Viewer
  5. Users log in through Azure SSO at the instance URL — no separate password required

Microsoft Entra ID authentication ensures that access control is centralized and auditable. Teams using Azure already have user identities managed through Entra ID, so no additional identity provider setup is needed.

Step 3: Connect Data Sources

Grafana is only useful once connected to data sources that hold your telemetry. Azure Managed Grafana supports Azure Monitor, Azure Data Explorer, Prometheus, Elasticsearch, and dozens of other integrations.

Connecting Azure Monitor

Azure Monitor is the most common data source for teams running workloads in Azure. It surfaces metrics from virtual machines, AKS clusters, App Services, and other Azure resources.

  1. Open the Grafana instance and navigate to Configuration > Data Sources
  2. Select Add data source and choose Azure Monitor
  3. Authenticate using the instance’s managed identity — no client secrets or keys required
  4. Select the subscriptions and resource groups you want to query
  5. Test the connection and save

Once connected, you can query Azure Monitor metrics using Kusto Query Language (KQL) or the pre-built query builder.

Connecting Prometheus

For teams using Prometheus to scrape metrics from Kubernetes or other infrastructure, Grafana can query Prometheus directly.

  1. Navigate to Configuration > Data Sources and select Prometheus
  2. Enter the Prometheus server URL — this can be a managed Prometheus instance or self-hosted endpoint
  3. If Prometheus is running inside a private network, configure Azure Private Link or VPN connectivity
  4. Test the connection and save

Prometheus queries use PromQL. Existing dashboards from self-hosted Grafana can be imported without modification.

Connecting Azure Data Explorer

Azure Data Explorer (ADX) is optimized for log analytics at scale. It handles terabytes of telemetry data with fast query performance.

  1. Add Azure Data Explorer as a data source
  2. Authenticate using managed identity or service principal
  3. Select the ADX cluster and database to query
  4. Test connection and save

ADX queries use KQL. If queries return 50x errors or timeouts, switch to table format instead of time series or reduce the query time range to avoid throttling.

Azure Data Explorer queries can trigger throttling if too many panels query the same cluster simultaneously. Stagger queries or use a table format to reduce load.

Step 4: Import or Create Dashboards

Grafana’s value comes from dashboards that visualize telemetry data. Azure Managed Grafana supports importing dashboards from Grafana’s public library or building custom dashboards from scratch.

Importing Pre-Built Dashboards

  1. Navigate to Dashboards > Import
  2. Enter a dashboard ID from Grafana’s dashboard library
  3. Select the data source to use for the dashboard
  4. Adjust any variables or filters to match your environment
  5. Save the dashboard

Pre-built dashboards exist for Kubernetes, Azure VMs, Prometheus Node Exporter, and hundreds of other integrations. Importing one takes under a minute.

Building a Custom Dashboard

  1. Navigate to Dashboards > New Dashboard
  2. Add a new panel and select the data source to query
  3. Write a query using the data source’s query language — KQL for Azure Monitor, PromQL for Prometheus
  4. Choose a visualization type: time series, bar chart, table, or stat panel
  5. Configure thresholds, units, and colors
  6. Save the panel and repeat for additional visualizations

Dashboards can be organized into folders and shared with specific users or made public within the organization.

Step 5: Set Up Alerts

Grafana unified alerting allows you to create alert rules based on queries against any connected data source. Alerts trigger when a condition is met and route notifications to Slack, email, PagerDuty, or other channels.

  1. Navigate to Alerting > Alert Rules
  2. Select New Alert Rule
  3. Define the query that detects the condition — for example, CPU usage above 80% for 5 minutes
  4. Set the evaluation interval and condition thresholds
  5. Configure notification channels: create a contact point for Slack, email, or webhook
  6. Assign the alert to a notification policy to control routing and grouping
  7. Save and enable the alert rule

Unified alerting replaces Grafana’s older dashboard alerting system. It supports multi-dimensional alerting, which means a single rule can fire separate alerts for each unique label combination (e.g., per-pod or per-node alerts).

Unified alerting is enabled by default for all workspaces created after December 2022. Older workspaces require manual enablement by opening a support ticket with the Azure Managed Grafana team.

Step 6: Configure Retention and Storage

Azure Managed Grafana stores dashboard definitions, alert rules, and query history. Data retention for queried metrics depends on the connected data source, not Grafana itself.

  • Azure Monitor metrics: default retention is 93 days, configurable per resource
  • Prometheus: retention depends on your Prometheus configuration
  • Azure Data Explorer: retention configured per ADX table

Grafana does not store raw telemetry. It queries data sources in real time. If you need longer retention, configure it at the data source level, not in Grafana.

Troubleshooting Common Issues

Issue: “Cannot connect to Azure Monitor data source”

Cause: The managed identity does not have read permissions on the target subscription or resource group.

Fix: Navigate to the Azure Monitor resource in the Portal, select Access Control (IAM), and assign the Monitoring Reader role to the Grafana instance’s managed identity.

Issue: “Azure Data Explorer queries return 50x errors or time out”

Cause: Too many panels querying the same ADX cluster simultaneously, triggering throttling.

Fix: Use table format instead of time series, reduce query time range, or stagger dashboard refresh intervals to reduce concurrent query load.

Issue: “Users cannot log in to the Grafana instance”

Cause: User accounts are not assigned a Grafana Organization role in Microsoft Entra ID.

Fix: Navigate to the Grafana instance in the Portal, select Access Control (IAM), and assign the user as Admin, Editor, or Viewer.

Issue: “Dashboard import fails with ‘data source not found’ error”

Cause: The imported dashboard references a data source that does not exist in your instance.

Fix: Edit the dashboard JSON to update the data source UID to match your connected data source, or re-import and select the correct data source during import.

Issue: “Alerts do not fire even though the condition is met”

Cause: The alert rule evaluation interval is too long or the contact point is misconfigured.

Fix: Reduce the evaluation interval in the alert rule settings and verify the contact point credentials (e.g., Slack webhook URL, email SMTP settings).

Azure Managed Grafana runs on Grafana Enterprise, which includes additional plugins and features not available in open source Grafana. However, some limitations exist compared to self-hosted deployments. Custom plugins cannot be installed, and the Grafana Server Admin role is not available to customers. These restrictions are documented in Azure Managed Grafana service limits.

Azure Managed Grafana vs Self-Hosted Grafana: Cost and Control Trade-Offs

Azure Managed Grafana removes operational overhead but introduces per-active-user billing and Azure-specific constraints. Self-hosted Grafana gives full control but requires infrastructure management and upgrade cycles. This section compares both on cost, deployment, and operational burden.

Cost Comparison: Managed vs Self-Hosted

Azure Managed Grafana pricing is based on active users per month and infrastructure tier. The Standard plan charges $23 per active user per month. An active user is anyone who logs in during the billing period.

For a team of 20 engineers where 15 log in during the month, the monthly cost is $345 ($23 × 15).

Self-hosted Grafana has no licensing cost. It is open source. However, it requires compute, storage, and network infrastructure. A typical self-hosted deployment on Azure includes:

  • 2 virtual machines (Standard D2s v3) for high availability: $140 per month
  • Managed PostgreSQL database for Grafana metadata: $50 per month
  • Azure Load Balancer: $20 per month
  • Egress and storage: $10 per month

Total infrastructure cost: $220 per month.

At 15 active users, Azure Managed Grafana costs $345 per month. Self-hosted costs $220 per month. Managed is 57% more expensive but removes the operational burden.

At 50 active users, Azure Managed Grafana costs $1,150 per month. Self-hosted infrastructure cost remains $220 per month. Managed is 5× more expensive at this scale.

Pricing and feature availability reflect publicly available information as of early 2026. Always verify current details with Microsoft before deployment.

This estimate models infrastructure for a production ready high availability deployment. A smaller or simpler self-hosted setup may cost significantly less.

Team sizeAzure Managed Grafana (Standard)Self-hosted (Azure infrastructure)
10 active users$230/month$220/month
20 active users$460/month$220/month
50 active users$1,150/month$220/month

For teams under 10 users, managed and self-hosted costs are comparable. Beyond 15 users, self-hosted becomes significantly cheaper if you already have infrastructure expertise in-house. However, self-hosted requires time for upgrades, security patches, and troubleshooting — costs that are not reflected in the infrastructure bill.

Deployment Model: Managed vs Self-Hosted

Azure Managed Grafana is a fully managed service. Microsoft handles infrastructure provisioning, upgrades, security patches, and high availability. Teams configure data sources and dashboards but do not manage the underlying Grafana instance.

Self-hosted Grafana requires teams to provision virtual machines or Kubernetes pods, install Grafana, configure a database backend (PostgreSQL or MySQL), set up TLS certificates, and implement backup and disaster recovery processes. Upgrades must be planned and tested before applying to production.

For teams without dedicated platform or SRE resources, the operational burden of self-hosting can outweigh the cost savings.

Feature Differences: Managed vs Self-Hosted

Azure Managed Grafana runs on Grafana Enterprise, which includes enterprise plugins, SAML authentication, and reporting features not available in open source Grafana. However, it disables some functionality to maintain security and reliability:

  • Custom plugins cannot be installed
  • Grafana Server Admin role is not available to customers
  • Some Admin APIs are disabled
  • Role-based access control (RBAC) is not supported

Self-hosted Grafana offers full control. Teams can install any plugin, enable any feature, and customize every configuration setting. However, they also assume responsibility for security hardening, plugin vetting, and access control enforcement.

Data Residency and Compliance

Azure Managed Grafana stores Grafana metadata (dashboards, alert rules, users) in Azure’s managed infrastructure. Telemetry data itself remains in the connected data sources — Azure Monitor, Prometheus, or Azure Data Explorer. Grafana queries data sources in real time and does not store raw metrics or logs.

For teams with strict data residency requirements, self-hosted Grafana can be deployed entirely within a private VPC or on premises. This ensures no Grafana metadata leaves the organization’s infrastructure.

When to Choose Managed

Azure Managed Grafana makes sense for teams that:

  • Run workloads primarily in Azure and use Azure Monitor or Azure Data Explorer
  • Have fewer than 20 active users
  • Lack dedicated platform engineering resources to manage Grafana infrastructure
  • Want Microsoft Entra ID integration without custom configuration

When to Choose Self-Hosted

Self-hosted Grafana makes sense for teams that:

  • Have more than 20 active users and want to avoid per-user fees
  • Need full control over plugins, configuration, and upgrades
  • Require on premises deployment or strict data residency
  • Already operate Kubernetes or VM infrastructure and have platform engineering expertise

Azure Managed Grafana vs Alternatives: Where It Fits

Azure Managed Grafana is one of several managed observability platforms. This section compares it to Grafana Cloud, CubeAPM, and Datadog to clarify when each platform is the best fit.

Azure Managed Grafana vs Grafana Cloud

Grafana Cloud is the SaaS version of Grafana, offered by Grafana Labs. It includes managed Grafana, Prometheus, Loki, and Tempo. Unlike Azure Managed Grafana, it is not tied to Azure infrastructure and can connect to data sources across AWS, GCP, and on premises environments.

Grafana Cloud pricing starts at $0.50 per 1,000 active series for metrics, $0.50 per GB for logs, and $0.50 per GB for traces. There is no per-user fee. Azure Managed Grafana charges $23 per active user per month but does not charge for data ingestion because data remains in your Azure data sources.

For teams with multi-cloud infrastructure or data sources outside Azure, Grafana Cloud offers broader compatibility. For teams running entirely in Azure, Azure Managed Grafana integrates more tightly with Azure Monitor and Microsoft Entra ID.

Azure Managed Grafana vs CubeAPM

CubeAPM is a self-hosted observability platform that includes APM, logs, infrastructure monitoring, and Kubernetes observability in a single deployment. It runs inside your cloud VPC or on premises, so telemetry data never leaves your infrastructure. Pricing is $0.15 per GB of ingested data with unlimited retention.

Unlike Azure Managed Grafana, which is primarily a visualization layer querying external data sources, CubeAPM ingests and stores all telemetry. This means it provides end to end observability without depending on Azure Monitor, Prometheus, or Azure Data Explorer.

For teams that need full data sovereignty, unified APM and log management, or want to avoid per-user pricing, CubeAPM is a better fit. For teams that only need dashboards and alerts on top of existing Azure data sources, Azure Managed Grafana is simpler to deploy.

Azure Managed Grafana vs Datadog

Datadog is a SaaS observability platform that includes APM, logs, infrastructure monitoring, RUM, and synthetics. It charges per host, per GB of logs, per million traces, and per synthetic test. A typical deployment costs $500 to $2,000 per month for small to mid-size teams.

Datadog offers broader integrations (700+ out of the box) and more opinionated workflows than Grafana. It is designed as an all in one platform, whereas Grafana is designed as a visualization layer on top of your existing data sources.

For teams that want a fully managed all in one platform and are willing to pay SaaS pricing, Datadog is a strong option. For teams that already use Azure Monitor or Prometheus and only need dashboards and alerts, Azure Managed Grafana is significantly cheaper.

PlatformBest forPricingDeploymentData residency
Azure Managed GrafanaAzure-native teams, under 20 users$23/user/monthAzure SaaSData stays in Azure sources
Grafana CloudMulti-cloud, logs + metrics + traces$0.50/1k series + GB-basedSaaSData sent to Grafana Labs
CubeAPMSelf-hosted, unified observability$0.15/GB ingestedSelf-hosted (managed)Full on premises
DatadogAll in one SaaS, breadthHost + GB + tracesSaaSData sent to Datadog

Pricing based on publicly available information as of early 2026. Enterprise discounts, custom contracts, and negotiated rates are not reflected here.

Monitoring Azure Managed Grafana with CubeAPM

For teams running Azure Managed Grafana in production, monitoring the Grafana instance itself is important. This includes tracking query latency, dashboard load times, alert evaluation delays, and user session activity. CubeAPM can monitor Azure Managed Grafana by collecting logs, metrics, and traces from the Grafana instance and connected data sources.

CubeAPM connects to Grafana via OpenTelemetry instrumentation or by scraping Prometheus metrics exposed by Grafana. It surfaces key metrics including:

  • Dashboard load times and query execution duration
  • Alert rule evaluation frequency and firing status
  • User login events and session duration
  • Data source query failures and throttling errors

By monitoring Grafana as part of your broader observability stack, you can detect issues like slow dashboards, failed alerts, or data source connectivity problems before they impact users. CubeAPM’s self-hosted deployment ensures that monitoring telemetry stays within your infrastructure, avoiding the circular dependency of using a SaaS tool to monitor a managed service.

Setting up CubeAPM to monitor Grafana takes under 30 minutes. Configure OpenTelemetry exporters in Grafana, point them to CubeAPM’s collector, and create dashboards for the key metrics listed above. For Kubernetes deployments, CubeAPM’s native Kubernetes monitoring also tracks the pods, nodes, and services running Grafana’s backend infrastructure.

Azure Managed Grafana removes the operational burden of self-hosting but introduces per-user costs that compound as teams grow. For teams running primarily in Azure with fewer than 20 active users, it offers the fastest path to production dashboards and alerts. For larger teams, multi-cloud setups, or organizations with strict data residency requirements, self-hosted Grafana or platforms like CubeAPM offer better long-term cost control and flexibility.

Disclaimer: The information in this article reflects the latest details available at the time of publication and may change as technologies and products evolve. Features, pricing, and plan limits can change over time. Always verify the latest information directly with the vendor before making purchasing or deployment decisions.

Frequently Asked Questions

What is the difference between Azure Managed Grafana Essential and Standard tiers?

The Essential tier is deprecated and scheduled to retire on March 31, 2027. The Standard tier includes more memory, higher alert rule limits, and unlimited dashboards and data sources. New deployments must use Standard.

Can I install custom plugins in Azure Managed Grafana?

No. Azure Managed Grafana does not support custom plugin installation due to security and reliability constraints. Only pre-approved plugins from Grafana Enterprise are available.

Does Azure Managed Grafana store my telemetry data?

No. Azure Managed Grafana stores only dashboard definitions, alert rules, and user metadata. Telemetry data remains in the connected data sources like Azure Monitor or Prometheus and is queried in real time.

How do I enable unified alerting in an older Azure Managed Grafana workspace?

Unified alerting is enabled by default for workspaces created after December 2022. For older workspaces, open a support ticket with the Azure Managed Grafana team to request enablement.

What is the cost of Azure Managed Grafana compared to self-hosted Grafana?

Azure Managed Grafana charges $23 per active user per month. Self-hosted Grafana has no licensing cost but requires infrastructure (VMs, databases, load balancers) that typically costs $200 to $300 per month. At 10 users, costs are similar. At 50 users, self-hosted is significantly cheaper.

Can I use Azure Managed Grafana with data sources outside Azure?

Yes. Azure Managed Grafana supports Prometheus, Elasticsearch, InfluxDB, and other data sources that can be accessed over HTTP. If the data source is in a private network, configure Azure Private Link or VPN connectivity.

How does Azure Managed Grafana handle high availability?

Azure Managed Grafana supports zone redundancy, which deploys the instance across multiple availability zones in the same region. This ensures uptime during zone-level failures. High availability is configured during instance creation.

×
×