Grafana interview questions appear in DevOps, SRE, and observability roles whenever teams standardize on dashboards for incident response and capacity planning. Interviewers probe whether you understand data source configuration, panel query models, templating variables, transformations that reshape query results, Grafana Alerting vs legacy alert rules, provisioning dashboards from Git, and how Grafana Loki fits beside Prometheus—not whether you can click through the UI without explaining PromQL or LogQL.
Below are 28+ Grafana interview questions grouped by topic. Pair with Prometheus interview questions for the metrics layer and setup Grafana with Prometheus for a full Linux lab stack.
Interview context and how to prepare
What Grafana interviews actually test
Grafana interviews test whether you can turn metrics and logs into actionable dashboards and alerts—and whether you know where Grafana ends and Prometheus/Loki begin.
| Area | What interviewers probe |
|---|---|
| Architecture | Server, plugins, data sources, org model |
| Dashboards | Panels, queries, time ranges, overrides |
| Variables | Templating, chaining, repeat rows |
| Transformations | Join, filter, calculate fields |
| Alerting | Grafana Alerting, contact points, mute timings |
| Provisioning | Dashboards and datasources as code |
| Backends | Prometheus, Loki, mixed sources |
| Ops | Permissions, performance, troubleshooting |
| Role | Emphasis |
|---|---|
| Junior DevOps | Import dashboards, basic PromQL in panels |
| SRE | Variables, SLO boards, alert routing |
| Platform engineer | Provisioning, RBAC, multi-tenant orgs |
A realistic 2–3 week Grafana prep plan
| Week | Focus | Hands-on drill |
|---|---|---|
| 1 | Install, add Prometheus DS, build stat/timeseries panels | Setup Grafana with Prometheus |
| 2 | Variables, transformations, row repeats | One dashboard for all namespaces |
| 3 | Grafana Alerting + classic provisioning + Git Sync awareness | Write YAML provider config and load a dashboard JSON file; compare classic file provisioning with Grafana 13 Git Sync |
Skim Ubuntu install Grafana if your lab is Debian-based.
Beginner vs advanced Grafana interview expectations
| Topic | Beginner | Advanced |
|---|---|---|
| Panels | Single stat from import | Overrides, mixed queries, exemplars |
| Variables | Hard-coded namespace | Chained, query variables, multi-select |
| Alerts | Panel threshold | Multi-dimensional, mute timings, nested routes |
| Ops | UI edits | Provisioning, version control, folder RBAC |
| Performance | "Dashboard slow" | Query split, min step, recording rules upstream |
| Logs | "Use Loki" | Label selectors, parse stages, metrics from logs |
Grafana architecture
What is the difference between Grafana and Prometheus?
What interviewers are testing: Whether you can state the defining distinction between Grafana and Prometheus and explain where each stores data and evaluates alerts.
| Layer | Prometheus | Grafana |
|---|---|---|
| Primary job | Scrape, store, alert on metrics | Visualize and explore many data sources |
| Query | PromQL native | PromQL via Prometheus data source plugin |
| Storage | Local TSDB | Does not store metric samples; queries external backends |
| Alerting | Rules + Alertmanager | Unified alerting (Grafana-managed or data-source-managed rules) |
| Logs | Not a log store | Loki data source for LogQL |
Grafana is primarily the visualization, exploration, and observability workflow layer. It normally leaves raw metric, log, and trace storage to external data sources while storing its own dashboards, users, alerting configuration, and other metadata.
A strong answer is:
Prometheus collects and stores metrics; Grafana queries and visualizes them. I fix missing graphs in Prometheus targets first—Grafana only displays what the backend returns.
Describe Grafana architecture.
What interviewers are testing: Whether you understand which responsibilities belong to the Grafana server, its database, plugins, and external telemetry backends—and can explain what Grafana stores versus what Prometheus or Loki stores.
| Component | Role |
|---|---|
| Grafana server | Web UI, API, query proxy to data sources, alerting engine |
| Data source plugins | Prometheus, Loki, Tempo, CloudWatch, SQL, etc. |
| Panel plugins | Time series, stat, gauge, table, logs, heatmap |
| Backend database | SQLite (default), MySQL, or Postgres for users, dashboards, prefs |
| Grafana Alerting | Evaluates Grafana-managed alert rules and routes notifications through configured Alertmanager/contact-point policies |
Grafana queries backends—it does not replace Prometheus TSDB or Loki chunk storage. For HA, multiple Grafana servers typically share an external database (MySQL or Postgres) rather than each instance holding isolated metadata. Authentication can be local, OAuth, LDAP, or SSO (Enterprise features vary).
A strong answer is:
Grafana stores application metadata such as dashboards, users, data-source configuration, and alerting state in its database, while telemetry remains in external backends such as Prometheus and Loki.
What are organizations, folders, and teams in Grafana?
What interviewers are testing: Whether you understand how organizations, folders, teams, and org roles scope access—and how folder permissions differ from org-wide Admin capability.
| Concept | Purpose |
|---|---|
| Organization | Isolates dashboards, data sources, folders, alerts, and teams |
| Folder | Primary resource organization and access boundary |
| Team | Groups users for shared permissions |
| Basic org role | Viewer, Editor, or Admin |
| Fine-grained RBAC | Enterprise/Cloud fixed and custom roles |
OSS Grafana uses org roles plus folder permissions; Enterprise and Cloud add granular RBAC. Interviewers ask how you prevent every developer from Admin.
A strong answer is:
Folders scope dashboard access; teams group users so permissions can be managed collectively. External identity groups can be synchronized where the configured Grafana edition and authentication integration supports it.
Data sources
What is a Grafana data source?
What interviewers are testing: Whether you understand that a data source is Grafana's configured connection to an external backend, including authentication, query behavior, and backend-specific settings.
A data source is Grafana's configured connection to an external backend, including its type, endpoint, authentication, and backend-specific query settings.
Common types:
| Type | Queries |
|---|---|
| Prometheus | PromQL instant/range |
| Loki | LogQL |
| TestData | Demos and UI practice |
| CloudWatch / Azure / GCP | Vendor metric APIs |
| PostgreSQL / MySQL | SQL for business metrics |
Configure once per org; panels reference ${datasource} when using variable-driven multi-cluster boards.
A strong answer is:
Data sources are named connections to backends. I use one Prometheus data source per cluster or a proxy with headers—not duplicate panels per environment.
How do you configure the Prometheus data source?
What interviewers are testing: Whether you configure Prometheus reachability from the Grafana backend, align scrape-interval settings, and handle auth or tenant headers correctly.
Key settings interviewers mention:
| Setting | Why it matters |
|---|---|
| URL | http://prometheus:9090 — must be reachable from the Grafana server or pod because queries are normally proxied through the Grafana backend |
| Scrape interval | Informs min step in queries |
| HTTP headers | Multi-tenant Prometheus or auth gateways |
| Exemplars | Link traces when enabled |
Grafana normally connects to Prometheus through the Grafana backend/proxy. The Prometheus URL must be reachable from the Grafana server or pod, not necessarily from the user's browser.
A strong answer is:
I configure a Prometheus-compatible endpoint reachable from the Grafana backend, match Grafana's scrape-interval setting to the actual backend interval, and configure authentication or tenant headers where the metrics backend requires them.
Dashboards and panels
What is a Grafana dashboard?
What interviewers are testing: Whether you understand dashboards as structured JSON resources with panels, variables, and provisioning or Git Sync workflows—not only UI layout.
A dashboard is a JSON document of panels, layout, variables, time settings, and annotations.
| Element | Role |
|---|---|
| Rows | Visual grouping; can repeat per variable |
| Panels | Single visualization with one or more queries |
| Time picker | Relative (now-6h) or absolute |
| Refresh | Auto-reload interval |
| Annotations | Deploy markers, incidents |
Dashboards are represented as structured resources and can be managed as code through classic JSON provisioning or Grafana 13 Git Sync. Grafana 13 Git Sync is GA and bidirectionally synchronizes Grafana dashboards and folders with Git.
A strong answer is:
Dashboards are JSON layouts of panels and variables. I treat them as code—export and review in PRs, not only edit in the UI.
Which Grafana panel types do interviews focus on?
What interviewers are testing: Whether you choose visualizations based on the question operators need to answer rather than selecting panels by appearance.
| Panel | Use case |
|---|---|
| Time series | CPU, rates, histogram quantiles |
| Stat | Single number with sparkline |
| Gauge | Utilization vs threshold |
| Bar chart | Compare categories |
| Table | Raw label sets, sortable values |
| Logs | Loki log lines with labels |
| Heatmap | Histogram buckets over time |
Overrides change color, unit, or display per series or by regex on the metric name.
A strong answer is:
Time series for trends, stat for SLI snapshots, table when operators need labels. I set unit and decimals once in overrides so every row matches.
How do panel queries and min interval work?
What interviewers are testing: Whether you tune panel query resolution with min step and understand when finer steps increase load without adding real detail.
Each panel query sets:
- Expr — PromQL or LogQL string
- Legend —
{{pod}}template - Min step — lower bound on resolution (avoid over-querying Prometheus)
- Format — Time series vs table vs heatmap
If Prometheus scrapes every 15s, min step below 15s does not add real detail—it increases load.
A strong answer is:
Min step puts a floor on Prometheus query resolution. I normally avoid setting it below the real scrape interval, and I increase it for longer-range dashboards when I want fewer datapoints and cheaper queries.
Variables and transformations
What are Grafana dashboard variables?
What interviewers are testing: Whether you use dashboard variables to parameterize queries and distinguish user-defined variables from global variables like $__interval.
Variables (templates) make dashboards reusable:
| Type | Example |
|---|---|
| Query | Namespace list from Prometheus |
| Custom | prod,staging,dev |
| Constant | Fixed hidden value |
| Datasource | Switch Prometheus data source |
| Interval | User-defined interval choices such as 1m, 5m, 1h |
Grafana also provides global variables such as $__interval and $__rate_interval. Grafana documents $__rate_interval as a global variable for Prometheus.
Grafana 13.1: variables can also be scoped to individual rows or tabs using section-level variables, reducing the need to split dashboards just to maintain independent filters.
Reference in queries as $namespace or ${namespace:regex} for multi-select.
A strong answer is:
Variables parameterize dashboards—namespace from Prometheus label_values, multi-select for comparing tiers. One dashboard replaces ten copies.
How do chained variables work?
What interviewers are testing: Whether you can make dashboard filters depend on one another without hardcoding cluster, namespace, or workload values.
Chain variables so later queries filter on earlier selections:
$cluster— custom or query$namespace—label_values(kube_pod_info{cluster="$cluster"}, namespace)$pod—label_values(kube_pod_container_info{namespace="$namespace"}, pod)
label_values(...) here is Grafana's Prometheus variable-query syntax, not a PromQL function used in ordinary Prometheus expressions.
Chained variables are reevaluated when upstream variable selections change. Separately, the variable's Refresh setting can control reevaluation on dashboard load or time-range changes where relevant. All value option requires careful PromQL (=~ regex).
A strong answer is:
I chain cluster → namespace → pod so each dropdown narrows the next. Multi-select needs regex matchers in PromQL, not plain equals.
What are Grafana transformations?
What interviewers are testing: Whether you know when post-query transformations help presentation and when metric logic should stay in PromQL or recording rules.
Transformations reshape query results after the data source returns data—no new backend query.
| Transform | Use |
|---|---|
| Merge | Combine multiple queries |
| Filter by name | Drop series |
| Organize fields | Rename/hide table columns |
| Group by | Aggregate table rows |
| Calculate field | Math between columns |
| Join by field | Align two queries on time or label |
Transformations are useful for presentation-oriented reshaping or combining query results. Reusable metric logic and expensive aggregation generally belongs in PromQL or recording rules rather than being hidden only inside a dashboard transformation.
A strong answer is:
Transformations reshape returned data for presentation—for example joining fields, renaming columns, or calculating display-only values. I keep reusable monitoring logic in the backend query or recording rules when possible.
What are repeating rows or panels?
What interviewers are testing: Whether you understand how repeating rows or panels scale query load with variable cardinality.
Repeat duplicates a row or panel for each value of a variable—e.g. one row per $namespace.
| Setting | Effect |
|---|---|
| Repeat for | Variable name |
| Max per row | Layout control |
| Repeat direction | Horizontal vs vertical |
Pairs with multi-select variables for comparative views. Watch query load—repeating rows or panels can multiply query count as selected variable cardinality grows.
A strong answer is:
Repeat rows scale one panel template across namespaces. I cap cardinality and use recording rules upstream when repeat blows query cost.
Alerting and provisioning
What is Grafana Alerting?
What interviewers are testing: Whether you understand Grafana Alerting components—rules, contact points, notification policies, mute timings, and silences—and the difference between Grafana-managed and data-source-managed evaluation.
Grafana Alerting provides centralized alert rules, contact points, notification policies, mute timings, and silences. Grafana-managed alert rules are evaluated by Grafana; data-source-managed rules remain stored and evaluated in supported backends. Current Grafana documentation recommends Grafana-managed alert rules when possible because they provide the richer integrated workflow. This evolved from the unified alerting system introduced in Grafana 8.
| Piece | Role |
|---|---|
| Alert rule | Query + condition + for duration |
| Contact point | Slack, email, PagerDuty, webhook |
| Notification policy | Route tree by labels |
| Mute timing | Maintenance windows |
| Silence | Temporary suppress |
Grafana-managed alert rules can evaluate queries from supported alerting-capable data sources and use expressions to combine results. Data-source-managed rules—such as Prometheus alerting rules—are evaluated by that backend instead. Not every data source supports alerting.
For Prometheus-native SLO burn, some teams still alert in Prometheus and page via Alertmanager—know both patterns.
A strong answer is:
Grafana Alerting centralizes Grafana-managed alert rules, contact points, and notification policies. I use Grafana-managed rules when I need supported multi-data-source conditions; metrics-only rules may remain in Prometheus when Alertmanager owns paging.
Grafana alerts vs Prometheus alerts—when use which?
What interviewers are testing: Whether you can contrast Grafana alerts and Prometheus alerts based on evaluation location, data scope, routing ownership, and paging strategy.
| Factor | Prometheus + Alertmanager | Grafana Alerting |
|---|---|---|
| Data | Prometheus metrics only | Multi datasource |
| Evaluation | Prometheus server | Grafana |
| Routing | Alertmanager mature | Grafana notification policies |
| GitOps | Prometheus rule files/operators | Grafana provisioning APIs/files/Terraform |
Many shops page from Alertmanager and use Grafana for visualization-only. Some teams keep evaluation and paging in Prometheus/Alertmanager while using Grafana for investigation; others centralize selected rules in Grafana. Avoid independently paging the same condition from both paths unless downstream deduplication is explicitly designed. The main distinction is where evaluation lives and who owns routing, not which stack has the better HA story.
A strong answer is:
I alert in Prometheus when metrics-only and Alertmanager owns paging. Grafana alerting wins when the condition spans Loki logs and Prometheus metrics in one Grafana-managed rule.
What is Grafana provisioning?
What interviewers are testing: Whether you distinguish classic provisioning for resources such as data sources and dashboards from Grafana 13+ Git Sync for Git-backed dashboards and folders.
Provisioning lets Grafana manage data sources, dashboards, and other supported resources from configuration files instead of relying on manual UI setup.
Two models matter in 2026 interviews:
Classic provisioning
- YAML datasource provisioning
- JSON dashboard files on disk
- Filesystem sync with optional
allowUiUpdates: falsefor GitOps strictness
Modern Git Sync (Grafana 13+)
- Native Git-backed dashboard/folder workflow
- PR and review workflow from Grafana or Git
- Bidirectional interaction between Grafana and Git repositories
Classic example:
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: http://prometheus:9090
access: proxyDashboard provisioning uses a YAML provider configuration that points at a directory of JSON files. Grafana loads the provisioning configuration and can synchronize dashboard-file changes according to the configured update interval—not only at first startup.
A strong answer is:
Classic provisioning bootstraps data sources and JSON dashboards from Git-mounted files. Grafana 13+ Git Sync provides native bidirectional Git-backed dashboard and folder workflows for teams that want PR review without relying only on exported JSON mounts.
How do you manage dashboards as code?
What interviewers are testing: Whether you manage dashboards as code through Git Sync or classic JSON provisioning with review and stable UIDs.
Git Sync workflow: edit or create a dashboard in a provisioned folder → commit or open a PR from Grafana → review/merge → Grafana synchronizes repository state. Git Sync supports editing dashboards in Grafana, committing directly or opening pull requests, and syncing Git-side changes back into Grafana.
Classic workflow: export JSON → commit → filesystem provisioning, Terraform, or Grafonnet.
Use uid in JSON for stable URLs across environments.
A strong answer is:
Dashboards export to JSON with stable UIDs, live in Git, and provision on deploy—or sync through Grafana 13+ Git Sync with bidirectional review workflows. Reviewers check PromQL cost and variable defaults like production namespaces.
Prometheus, Loki, and permissions
How does Grafana work with Loki?
What interviewers are testing: Whether you query Loki with LogQL in Grafana and correlate logs with metrics through shared labels.
Loki stores logs; Grafana's Loki data source runs LogQL:
{namespace="payments"} |= "error" | json | line_format "{{.msg}}"| Pattern | Purpose |
|---|---|
| Logs panel | Tail lines with label filters |
| Metric query | rate({app="api"}[5m]) for log-derived metrics |
| Derived fields | Link trace IDs to Tempo |
Correlate metrics (Prometheus) and logs (Loki) with consistent labels (namespace, pod, trace_id).
A strong answer is:
Loki in Grafana is LogQL in logs panels—label selectors first, then filter parsers. I align labels with Prometheus so I jump from a spike to the right log stream.
What is Grafana Explore?
What interviewers are testing: Whether you use Explore for ad-hoc incident investigation and promote validated queries into dashboards afterward.
Explore is an ad-hoc query UI without building a permanent panel—ideal for incidents.
| Feature | Benefit |
|---|---|
| Split view | Prometheus graph + Loki logs |
| Live tail | Loki streaming |
| Query history | Replay investigations |
| Inspector | See raw request to data source |
Strong interview signal: use Explore during outages, commit fixes to dashboards after the incident.
A strong answer is:
Explore is my incident sandbox—split PromQL and LogQL, then promote the working query into a dashboard panel after we understand the failure.
How do Grafana permissions work?
What interviewers are testing: Whether you separate folder permissions, org roles, and the fact that viewers can still run expensive queries.
Layers:
| Level | Controls |
|---|---|
| Org role | Admin, Editor, Viewer |
| Folder permission | View/Edit/Admin per team or user |
| Data source | Query access (Enterprise fine-grained) |
| Service account | API tokens for automation |
Viewer cannot edit but still runs expensive queries—consider query timeouts and Prometheus limits at the source.
A strong answer is:
Folder permissions control who can view or edit dashboards, while org roles provide broader capabilities. I also treat query cost separately from UI permissions because read-only users can still execute expensive dashboard queries.
What are Grafana plugins?
What interviewers are testing: Whether you treat plugins as supply-chain extensions and understand signed versus unsigned plugin policy.
| Type | Examples |
|---|---|
| Data source | Prometheus, Loki, InfluxDB |
| Panel | Clock, pie chart (often built-in now) |
| App | Integrated experiences |
Install signed plugins from catalog or bundle custom plugins in air-gapped installs. Grafana verifies plugin signatures at startup. Unsigned plugins are not loaded by default; self-managed Grafana can explicitly allow listed unsigned plugin IDs, but this is discouraged, and Grafana Cloud does not support unsigned plugins.
A strong answer is:
Plugins extend data sources, panels, and applications. In production I prefer signed plugins and treat third-party plugins as supply-chain dependencies; unsigned plugins require an explicit self-managed configuration exception.
Dashboard troubleshooting and scenarios
Scenario: Dashboard panels show No data. What do you check?
What interviewers are testing: Whether you troubleshoot empty panels in order—time range, variables, data-source connectivity, and the resolved backend query—before changing visualization settings.
Ordered checklist:
- Time range — incident outside selected window
- Variable values — empty namespace multi-select
- Query Inspector — inspect the actual request, response or error, and timing Grafana received from the data source
- Data source — Test button in settings; URL/auth from Grafana pod
- Query — Run same PromQL in Prometheus UI
- Min step / resolution — too coarse to see short spike
- Prometheus targets — upstream scrape failure (not Grafana bug)
A strong answer is:
No data often comes from the selected time range, variable expansion, data-source connectivity, or the backend query itself. I inspect the resolved request first, then reproduce it directly against Prometheus before changing the visualization.
Scenario: Dashboard loads in 30+ seconds. How do you fix it?
What interviewers are testing: Whether you reduce dashboard load by profiling the worst panels and addressing query cost—range, aggregation, min step, recording rules, and panel count.
| Fix | Detail |
|---|---|
| Reduce panels | Split into focused boards |
| Shorter range | Default to 6h not 7d |
| Increase min step | Coarser resolution |
| Recording rules | Pre-aggregate in Prometheus |
| Limit repeats | Fewer repeated rows |
| Table → metric | Huge table queries are costly |
| Max data points | Cap panel resolution for long ranges |
| Query caching | Grafana Enterprise/Cloud can cache supported data-source queries; Prometheus/Loki may also have their own caching layers |
A strong answer is:
Slow dashboards need fewer heavy queries—recording rules in Prometheus, higher min step, and splitting monster boards. I profile the worst panel in Query Inspector first.
Scenario: Namespace variable is empty. Why?
What interviewers are testing: Whether you diagnose empty query variables by checking label_values results, data-source selection, auth/network reachability, and metric availability in the same time range.
Common causes:
- label_values query returns nothing—no
kube_pod_infoor wrong label name - Data source variable points at wrong Prometheus
- Authentication/authorization or network policy blocks Grafana from reaching the metrics backend
- Time range too narrow for series that existed only earlier
- Metric renamed after kube-state-metrics upgrade
Test the variable query in the dashboard variable editor, then use Explore with the same data source to query kube_pod_info and verify that the expected namespace labels exist.
A strong answer is:
Empty variables usually mean the variable query returned no matching values. I verify the metric and expected labels in Explore, then check the variable query, selected data source, and time range.
Scenario: Teams get duplicate pages from Grafana and Alertmanager.
What interviewers are testing: Whether you assign a single paging owner per condition and avoid duplicate notification paths between Grafana Alerting and Alertmanager.
Deduplication strategies:
- Single paging owner — safest solution for the same condition
- Separate purposes — one path pages, another creates non-paging visibility or tickets
- Shared downstream Alertmanager, if intentionally configured — then matching labels and grouping rules can matter
- Runbook/source labels — make alert origin explicit
A strong answer is:
Duplicate pages mean the same condition fires in Prometheus and Grafana—I pick one owner for paging and demote the other to visualization or ticket severity.
Scenario: Design one dashboard for three Kubernetes clusters.
What interviewers are testing: Whether you design one reusable dashboard with data-source or cluster variables, consistent labels, chained filters, and per-cluster alert routing.
Design pattern:
| Piece | Approach |
|---|---|
| Data source variable | One Prometheus per cluster or Thanos global query |
| External labels | cluster label on all metrics if single query frontend |
| Variables | $cluster, chained $namespace |
| Repeating | Optional row per cluster |
| Provisioning | Same JSON, different datasource default per environment |
| Alerts | Per-cluster notification policy matchers |
Avoid hardcoding cluster names in every panel—use variables and recording rules with cluster label.
A strong answer is:
I'd use a datasource or cluster variable, consistent external labels, and one provisioned JSON with chained namespace/pod variables—alerts route by cluster label so the right team pages.
PromQL, cardinality, and observability depth
What is the difference between an instant query and a range query?
What interviewers are testing: Whether you can state the difference between instant and range Prometheus queries and set Grafana's query Type explicitly per panel.
Prometheus panel queries have an explicit Type setting. Range evaluates repeatedly across the selected time window, Instant evaluates at one timestamp, and Both runs both and combines the results. Choose the query type based on what the panel needs rather than assuming the visualization automatically picks it.
A strong answer is:
An instant query evaluates the expression at one timestamp; a range query evaluates it repeatedly across the selected period. In Grafana I set the Prometheus query type explicitly—typically Range for trends and Instant for current-value panels.
What are $__interval and $__rate_interval?
What interviewers are testing: Whether you know how $__interval and $__rate_interval affect Prometheus query resolution and rate windows.
Grafana calculates $__interval largely from the dashboard time range and panel resolution. $__rate_interval additionally accounts for the Prometheus scrape interval so rate() and increase() windows are large enough. Grafana calculates $__rate_interval as max($__interval + scrape_interval, 4 × scrape_interval).
| Variable | Purpose |
|---|---|
$__interval |
Step between points in range queries—derived from time range and panel width |
$__rate_interval |
Recommended range selector for Prometheus rate() and increase()—chooses a safe range window based on panel interval and scrape interval |
Example:
rate(http_requests_total[$__rate_interval])A strong answer is:
I use $__rate_interval in rate() so Prometheus has enough samples per window. $__interval controls graph resolution without manually guessing step size.
What is metric cardinality, and why can high cardinality make Grafana dashboards slow?
What interviewers are testing: Whether you connect high-cardinality labels and series growth to slow variables, repeated panels, and expensive PromQL—not only Grafana resource limits.
Cardinality is the number of unique time series—often from high-cardinality labels. Grafana surfaces the pain, but the metrics model is usually the root cause.
| Symptom | Cause |
|---|---|
| Slow variable dropdown | label_values across thousands of pods |
| Repeated panels | One query per namespace × many panels |
| Regex on labels | Matching huge label sets in PromQL |
| Monster tables | Returning every series as rows |
Fix upstream with recording rules, label discipline, and pre-aggregation—not only more Grafana resources.
A strong answer is:
Grafana is often only where cardinality pain becomes visible; the underlying metrics model can be the actual problem. I inspect query cost before adding Grafana resources.
What are Grafana annotations and why are deploy markers useful?
What interviewers are testing: Whether you use annotations to correlate telemetry changes with deploys, incidents, or maintenance events.
Annotations overlay events on graphs—deployments, feature-flag changes, incidents, maintenance windows—so you correlate telemetry shifts with system changes.
| Source | Example |
|---|---|
| Manual | Incident start marker during triage |
| API / webhook | CI posts deploy annotation on release |
| Data source | Query-driven markers |
During incidents, aligning a latency spike with a deploy annotation often answers "what changed?" faster than guessing.
A strong answer is:
Annotations connect graphs to events—I wire deploy webhooks so on-call sees whether a spike lines up with a release without digging through chat logs.
What are exemplars and how do metrics link to traces?
What interviewers are testing: Whether you explain how exemplars link aggregate metrics to representative traces for faster incident diagnosis.
| Signal | Answers |
|---|---|
| Metric | Aggregate changed—latency or errors rose |
| Exemplar | Attaches a representative trace ID to a metric observation |
| Trace | Shows the specific distributed request path |
With Prometheus exemplars and Tempo (or Jaeger), Grafana lets you jump from a spike in a histogram to a concrete trace.
A strong answer is:
Exemplars let me jump from an aggregate metric spike to a representative trace, which shortens the path from 'latency increased' to the exact distributed request.
References
- Grafana documentation
- Grafana dashboards
- Grafana alerting
- Grafana Prometheus data source
- Grafana Git Sync
- Grafana Loki documentation
Summary
Grafana interviews focus on connecting data sources, building reusable dashboards with variables and transformations, and operating unified alerting without duplicating Prometheus pages. The platform is only as good as the metrics and logs behind it—strong candidates debug No data in Prometheus or Loki before blaming panel settings.
Practice exporting a dashboard to JSON, provisioning it from a file, and linking a Prometheus graph to Loki logs with shared labels. For the metrics foundation, read Prometheus interview questions and walk through setup Grafana with Prometheus on a lab host.
In senior scenarios, emphasize dashboards as code, folder RBAC, and query cost discipline. That shows you can run Grafana for a platform team—not just personalize a home dashboard.

