Grafana customization

Grafana customization shapes a self-hosted instance around your teams, from dashboards and folder permissions to custom plugins and embedding. This page explains the work, what drives cost, and what you need to provide.

On this page

What Grafana customization involves

Grafana customization is the work of shaping a running Grafana instance around how your teams read data. It covers dashboard design and template variables, folder structure and folder-level permissions, custom panels and app plugins, embedding dashboards in other applications, and theming. It sits on top of a deployment that already exists or is planned. Installing Grafana, connecting data sources, setting up identity, running it in high availability and managing configuration as code are separate topics, and each changes what customization can safely assume.

The usual triggers are three. The first is many teams sharing one instance, where folders, team permissions and a consistent set of variables stop individual dashboards from becoming a maze. The second is multiple data sources, where variables and dashboard templates need to hide which backend a panel queries from the people reading it. The third is an internal portal that embeds dashboards, which brings in anonymous or signed access, theming to match the portal, and questions about what a viewer can see once a dashboard leaves Grafana's own interface.

The boundary with provisioning matters most. Grafana can load data sources, dashboards and plugins from files at startup, and it supports Terraform and Git Sync as further as-code options. Decide early which objects are owned in code and which may be edited in the UI. Customization that is built by hand in the UI and never exported will drift from the repository, and customization that is forced into code without a review workflow will slow every small change.

Most organizations with a small platform team do this in-house once the base deployment is stable. Partners are usually brought in when the design must be settled quickly across many teams, when custom plugins need to be written and maintained, or when the internal portal needs a defined embedding and theming model. Ask any partner to show the folder and permission model, the variable conventions and the provisioning boundary in the written scope before work starts.

What the work includes

Grafana customization is scoped as a set of workstreams, and each one ends in a specific artifact your teams keep. The scope, deliverables and timelines for the workstreams you need are agreed in writing before work starts.

Dashboard standards and variables

We define the conventions your dashboards follow: panel naming, units, time defaults, color use and the shared variables that let one dashboard serve several services, clusters or environments. The deliverable is a dashboard standard with a reference template and a checklist reviewers can apply. Check that variables query the right data source and behave correctly when a selection is empty.

Folder and permission model

We map teams, responsibilities and data sensitivity to a folder structure and a set of roles, then decide which teams may view, edit or administer each folder. The deliverable is a permissions matrix that names every folder, role and grant. Confirm which identity mappings you need, since SAML, team sync and SCIM depend on your Grafana edition.

Custom panel or app plugin development

When built-in panels cannot show your data, we design and build a custom panel or app plugin against the Grafana plugin tooling. The deliverable is the plugin source with build and test steps, a version pinned to the Grafana releases you run, and notes on how it is installed. Confirm the plugin's license terms and how it will be updated across Grafana minor releases.

Embedding and theming

We configure how Grafana appears inside your portal or other applications, including embedded panels, anonymous or signed access rules, and visual theming that matches your brand. The deliverable is an embedding configuration with the settings, allowed origins and a short test plan. Check the embedding and access settings against your security review, because they change who can see data.

Documentation and handover

We document the standards, permissions, plugins and provisioning choices so your team can maintain them without us. The deliverable is a handover pack with runbooks, change steps for dashboards and folders, and a walkthrough with the people who will own the instance. Agree in writing who keeps the documentation current after handover, and how that work is paid for if you use a support retainer.

What drives cost and duration

Each row names one driver that moves customization effort, why it matters for Grafana specifically, and a practical way to keep it manageable, so you can compare scope before asking for a quote.

DriverWhy it moves effortHow to keep it down
Teams and foldersEach team needs its own folder structure, permission set and dashboard ownership, and each permission rule has to be designed, tested and documented.Agree a small set of folder patterns and role templates up front, and map them to existing groups instead of creating one folder per request.
Data sourcesPrometheus, Loki, SQL databases and others each need connection settings, credentials, query conventions and label or schema knowledge. Variety adds more query-writing and testing work than count alone.Limit the first release to the sources that feed the most-used dashboards, and standardize naming and label conventions across them.
Dashboards to rebuild or standardizeRebuilding a dashboard means re-deriving its queries, variables, thresholds and layout, then checking values against the old view. Standardizing many near-duplicate dashboards adds review cycles with the owners.Retire unused dashboards before migration, and build a shared template with variables for dashboards that differ only by service or region.
Custom plugin scopeCustom panels and app plugins need their own code, build pipeline, signing decisions and upgrade testing against each new Grafana minor release. Scope grows with every plugin feature requested.Prefer existing community or core panels and dashboard variables, and write a custom plugin only when a documented need cannot be met otherwise.
Embedding requirementsEmbedding panels or dashboards in other applications requires anonymous or token-based access decisions, cross-origin settings and security review of the host application. Each embedding pattern is a separate test case.Agree one embedding pattern and host application first, and confirm your license terms and access model before design begins.
Theming depthLogo and color changes are a small task. Changes to layout, typography or component styling across releases need more testing and may need rework at each upgrade.Limit theming to brand elements and documented settings, and avoid overriding internal styles that change between releases.
Edition (open source or Enterprise)Some access features, such as SAML, team sync and SCIM provisioning, are available only in Grafana Enterprise and Grafana Cloud according to the Grafana authentication docs. Designs that rely on them need a different build and a separate license decision.Confirm which access features your design needs before design starts, and use open-source mechanisms such as generic OAuth and role mapping where they meet the requirement.
Number of environmentsEach environment needs its own provisioning files, data source endpoints, secrets and validation pass. Drift between environments is a common source of rework.Keep one codebase or provisioning repository with environment-specific values separated, and promote changes through the same path each time.

Project phases and outputs

The sequence moves from understanding who uses Grafana and what they need to see, through a designed model of folders, permissions and variables, to tested dashboards, plugins or embedding, and a handover your team can operate.

  1. Discover teams, data sources and access needs

    We interview the teams who will use Grafana, inventory the data sources they query (such as Prometheus, Loki or SQL databases), and record who needs to view, edit or administer each area. The output is a written requirements inventory listing teams, data sources, dashboards in scope, and access needs. Confirm with your team leads that the inventory matches how work is actually done before design begins.

  2. Design the folder, permission and variable model

    We design the folder hierarchy, the role and team permission model, and the dashboard variables that let one dashboard serve several services or environments. Identity mapping is designed here, including which group claims map to which Grafana roles if you use an external identity provider. The output is a design document with a folder tree, permission matrix and variable catalog. Your security and platform owners should approve the permission matrix before any build starts.

  3. Build dashboards, plugins or embedding

    We build the dashboards, panels, any custom plugins or app plugins, and any embedding or theming in scope, following the approved design. Work is kept in a version-controlled repository and, where you choose provisioning, is deployed from files rather than edited by hand. The output is a tested build in a non-production instance with a change log. Confirm which items are in scope for the build and which are deferred, since plugin work often carries its own licensing and maintenance questions.

  4. Test against the target version and identity setup

    We test dashboards, queries, variables and plugins against the exact Grafana version you will run in production, and verify that sign-in, group mapping and folder permissions behave as designed for each test user role. Security hardening settings are checked as part of this pass. The output is a test record listing each case, its result and any open defects. Confirm the target version with your team in advance, and confirm that the test accounts reflect real roles rather than shared administrator logins.

  5. Hand over with runbooks and operating notes

    We deliver the production configuration, the provisioning or as-code repository, and runbooks covering how to add a dashboard, change a permission, roll out a plugin update and recover a broken configuration. Your staff are walked through the material. The output is a signed-off handover pack and a list of known limitations. Confirm that named owners on your side can run each runbook without DeployOpen involvement before the engagement closes.

What your team keeps and what a partner covers

This table shows which Grafana customization work usually stays with your own staff and which parts are often outsourced, with the skills each part requires, so you can decide where a partner adds the most value.

Part of the workUsually kept in-houseOften outsourcedSkills it needs
Dashboard ownershipNamed owners per team who decide what each dashboard answers and when it is retiredSetting up an ownership model and folder-level responsibility rules for your organizationOperational knowledge of your services, Grafana administration, and a clear review process
Business definitions of metricsAgreed meaning of SLOs, error budgets, revenue-related and capacity measuresEncoding those definitions as recording rules or reusable query templatesPromQL or LogQL for queries, plus domain knowledge from the teams that own the numbers
Final approval of accessSign-off on who may view or edit each folder, data source and teamMapping approved groups to Grafana roles and folder permissions in configurationGrafana administration, identity administration, and an audit trail for access changes
Dashboard standard designFinal sign-off on naming, layout and the panels each team requiresBuilding a reusable dashboard standard with panel conventions and documented patternsGrafana dashboard JSON, PromQL or LogQL, and experience with consistent operational layouts
Variable and folder architectureConfirmation of which environments, clusters and tenants must be selectableDesigning chained variables, folder hierarchy and provisioning structure that scaleGrafana templating, Grafana administration, and provisioning with YAML or Terraform
Custom plugin developmentDecision on which panels or app plugins are worth maintaining after launchBuilding, testing and packaging custom panel or app plugins against the Grafana plugin SDKFront-end TypeScript and React, Grafana plugin tooling, and upgrade testing across Grafana releases
Embedding setupDecision on which dashboards are shared outside Grafana and with which audiencesConfiguring embedded dashboards, theming and anonymous or signed access within your license termsWeb security for embedding, cookie and Content Security Policy settings, and Grafana administration

What usually goes wrong

Most Grafana customization problems appear months after go-live, when the first upgrade, the first audit or the first embedding request arrives. Each risk below has a prevention step that belongs in the design phase or the handover.

Hand-built dashboards drift from the standard

When teams edit dashboards in the UI without a shared template, panels, variables and naming diverge within months. Agree a dashboard standard in design, including variable conventions, panel naming and folder layout, and keep provisioned dashboards as the source of truth so UI edits are either promoted through review or reverted at the next sync.

Permissions that mirror the org chart

Mapping every reporting line to a folder or team produces hundreds of narrow grants that nobody can review or explain. Design permissions around data domains and roles instead, keep folder hierarchies shallow, and document who may edit, view and administer each folder before the first dashboard is built.

Custom plugins that break on upgrade

Custom panels and app plugins depend on Grafana APIs and build tooling that change across minor and major releases. Record the Grafana versions each plugin supports, pin its build dependencies, and include a compatibility test against the next minor release in the handover so the upgrade plan covers plugins as well as the core server.

Embedding blocked by cookie or CSP settings

Embedded dashboards in another application often fail when browser cookies are restricted or the host page's Content Security Policy does not allow the Grafana origin. Decide the embedding topology during design, review the cookie attributes and CSP directives documented in the security hardening guide, and test the embedded view in every browser the business supports.

Licensing questions raised after build

Teams often ask late whether embedding, redistributing a modified Grafana or shipping a plugin to customers is permitted. Grafana's core is AGPLv3 while plugins and SDKs carry their own licenses, so have counsel review the intended use before design is locked, and record the decision and any Grafana Enterprise requirement in the project documentation.

How the work changes by starting point

A new instance with no dashboards gives the most room to design folders, permissions, variables and provisioning before any content exists. Effort goes into the design itself: how teams are grouped, which folders map to which owners, and which dashboards become shared templates.

  • Effort: Mostly design and build. There is no existing content to reconcile, so provisioning files can be the source of truth from the first commit.
  • Client supplies: Team and role structure, the list of data sources teams will query, and named owners for shared folders.
  • Confirm: Whether your database for configuration will be SQLite for a pilot or MySQL or PostgreSQL from the start, since the installation docs say SQLite does not scale for production.
  • Confirm: Which identity features you need, because SAML and team sync are Enterprise-only features.

What you need to provide

Most of the scope in a Grafana customization project is decided by inputs the client provides before any build starts. Named owners for each team's dashboards come first. Each folder, dashboard and alert rule needs a person who can approve design changes and confirm that a panel still answers the question it was built for. Dashboard owners usually sit in the platform, SRE or observability team, with each product or service team naming a delegate who signs off on its own views. Without named owners, dashboard variables, folder structures and permission models stall in review. Current inventory of data sources and dashboards is the second input. Customization work depends on knowing which data sources exist (Prometheus, Loki, SQL databases or others), who connects to them, and how many dashboards depend on each. A simple export of dashboard JSON and a list of data source connections, maintained by the team that runs Grafana today, lets the scope cover real panels rather than a guess. Ask the platform team to confirm which data sources are read-only and which hold credentials that must be rotated. A non-production Grafana instance on a known version is needed to test provisioning files, plugin changes and theming without touching live dashboards. Confirm the exact version, edition and database backend with the team that operates it, because the upgrade guidance and plugin compatibility differ by release. The same team should confirm the identity provider group structure: which groups map to Grafana roles and folders, and whether SAML, team sync or SCIM is in use, since those features depend on the edition. Finally, decide on the edition and whether embedding is internal or external. Embedding dashboards in an internal portal and embedding them for customers raise different questions about authentication, licensing and theming. The product owner, legal or licensing contact and security lead should agree on these decisions, and any custom plugin code should have a named reviewer in the engineering team who approves it before it reaches production.

Frequently asked questions

Can our team customize Grafana without an implementation partner?

Yes, a team with production Grafana experience can customize it without a partner, and many do. Dashboard variables, folders, permissions and provisioning files are documented and can be learned from the official docs. The harder parts are custom panel or app plugin development, which needs frontend and TypeScript skills, and designing provisioning as code so that UI edits do not drift from the repository. Before deciding, check whether someone on your team has owned a Grafana instance in production and has time for the work.

What drives the cost and effort of a Grafana customization project?

Scope is the main driver: the number of data sources, dashboards, custom plugins and identity integrations. Other drivers include whether provisioning as code is in scope, how many teams need separate folders and permissions, and whether Enterprise-only features such as SAML or team sync are required. Your database choice also matters, since SQLite is not suited to production and MySQL or PostgreSQL is needed for production and high availability. Ask for the one-time build cost separately from any recurring support, and ask what each deliverable includes.

How long does a Grafana customization project take?

The duration depends on the scope agreed in writing before work starts, so no single figure applies to every project. Adding a few dashboards and folder permissions takes far less time than building custom app plugins, moving provisioning to Git and adding SSO with role mapping. Ask for a timeline tied to named deliverables, the review steps on your side, and dependencies such as access to data sources and identity systems. If an upgrade is part of the work, the Grafana release schedule can also affect timing.

What does our side need to provide for a Grafana customization engagement?

Expect to provide access to a test Grafana instance and the data sources it reads from, along with named owners who approve dashboard designs and permission models. You will also need a list of the teams and roles that will use the work. If sign-in is in scope, you will need access to your identity provider, and you should state the source control and change process the work must follow. A decision-maker who can answer design questions quickly usually shortens review cycles. Confirm exact access requirements during scoping.

Can we embed Grafana in our own product under AGPLv3?

Embedding can be allowed under AGPLv3 if you meet its terms, and the obligations that apply when software is accessed over a network need careful reading. Grafana Labs relicensed Grafana, Loki and Tempo from Apache License 2.0 to AGPLv3 on April 20, 2021, according to the Grafana Labs licensing page. Plugins, SDKs and agent software carry other licenses, so review each component. Grafana Enterprise is offered as a non-AGPL commercial option. Involve your legal team before shipping, because DeployOpen does not provide legal opinions on license compliance.

How do custom Grafana plugins stay compatible across releases?

Custom plugins must be tested against each Grafana release, and the release cadence sets the workload. Grafana's upgrade guidance describes major releases once a year in April or May, minor releases about every other month and patch releases at least monthly. Each minor release is supported for 9 months, and the last minor release of a major version for 15 months, so plan upgrade windows at least that often. Pin plugin SDK and build tool versions, run automated tests in staging, and agree who maintains the plugin after handover. An ongoing support retainer can cover this work.

How DeployOpen delivers Grafana customization

DeployOpen scopes Grafana customization in writing before any build starts, then builds dashboards, folders, permissions and plugin work inside your own infrastructure and hands the result over with documentation. Engagements are fixed-scope, and ongoing support is available as a retainer.

How we scope

  • We agree the teams, dashboards, folders and permission model to be delivered before work starts.
  • We list which data sources, such as Prometheus, Loki or SQL databases, the customization must read from.
  • We record in writing whether provisioning will use files, Terraform or Git Sync, and who owns each step.

How we build

  • We design dashboard variables, templates and panel layouts against the agreed teams and data sources.
  • We build folder structures and role assignments that match the permission model signed off in scope.
  • We test each dashboard and permission set against sample users and data before handover, and confirm the results in writing.

How we hand over

  • We deliver dashboards and configuration as files or code in a repository your team controls.
  • We document the folder layout, permission model, provisioning workflow and any custom plugin settings.
  • We walk your administrators through changing dashboards and provisioning so UI edits do not drift from the code.

How we support

  • We can continue with a retainer covering Grafana upgrades, plugin compatibility checks and security patches.
  • Retainer scope, response expectations and review cadence are agreed in writing and confirmed before service starts.
  • Changes outside the original scope, such as new teams or data sources, are quoted separately from the written scope.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.