What is Grafana?
Definition
Grafana is an open-source analytics and visualization platform that allows you to query, visualize, alert on, and understand metrics from various data sources. It’s commonly used for monitoring infrastructure, applications, and business metrics through beautiful dashboards.
Key Features
Core Capabilities
- Data Visualization: Create graphs, charts, and dashboards
- Multiple Data Sources: Connect to Prometheus, InfluxDB, MySQL, PostgreSQL, etc.
- Alerting: Set up alerts based on metrics
- Dashboard Sharing: Share dashboards with teams
- Annotations: Mark events on graphs
- Templating: Dynamic dashboards with variables
- Plugins: Extend functionality with plugins
How It Works
Data Sources → Grafana → Dashboards → Alerts
(Prometheus, (Queries, (Visualization) (Notifications)
InfluxDB, Aggregates,
MySQL, etc.) Transforms)
Basic Setup
Docker Compose Example
version: '3.8'
services:
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- grafana-data:/var/lib/grafana
volumes:
grafana-data:
Access
- URL:
http://localhost:3000 - Default credentials:
admin/admin
Data Sources
Common Data Sources
- Prometheus: Time-series metrics
- InfluxDB: Time-series database
- MySQL/PostgreSQL: Relational databases
- Elasticsearch: Log and search data
- CloudWatch: AWS metrics
- Loki: Log aggregation
Adding Data Source
# Prometheus example
Data Source Type: Prometheus
URL: http://prometheus:9090
Access: Server (default)
Dashboards
Creating Dashboards
- Add Panel: Click “Add panel”
- Select Data Source: Choose your data source
- Write Query: Use query language (PromQL, SQL, etc.)
- Visualize: Choose visualization type (graph, table, stat, etc.)
- Save: Save panel and dashboard
Example Query (Prometheus)
# CPU usage
100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# Memory usage
(node_memory_MemTotal_bytes - node_memory_MemFree_bytes) / node_memory_MemTotal_bytes * 100
# Request rate
rate(http_requests_total[5m])
Common Interview Questions
Q1: What is Grafana and what is it used for?
Grafana is a visualization and analytics platform used for:
- Monitoring: Visualize metrics from various sources
- Dashboards: Create interactive dashboards
- Alerting: Set up alerts based on metrics
- Analysis: Analyze trends and patterns in data
Common Use Cases:
- Infrastructure monitoring (CPU, memory, disk)
- Application monitoring (request rates, errors)
- Business metrics (revenue, user activity)
- Log analysis and visualization
Q2: What’s the difference between Grafana and Prometheus?
| Aspect | Grafana | Prometheus |
|---|---|---|
| Purpose | Visualization | Metrics collection & storage |
| Role | Frontend (dashboards) | Backend (metrics database) |
| Data Storage | Doesn’t store data | Stores time-series data |
| Query Language | Supports multiple | PromQL |
| Use Case | Visualization, alerting | Metrics scraping, storage |
They Work Together: Prometheus collects/stores metrics, Grafana visualizes them.
Q3: How do you create alerts in Grafana?
Alert setup:
-
Create Alert Rule:
- Go to panel → Alert tab
- Define condition (e.g.,
avg() > 80) - Set evaluation interval
-
Configure Notifications:
- Add notification channels (email, Slack, PagerDuty)
- Set alert message
-
Example Alert:
Condition: avg(cpu_usage) > 80 Duration: 5 minutes Notification: Send to Slack channel
Q4: What data sources does Grafana support?
Common data sources:
- Time-Series: Prometheus, InfluxDB, Graphite
- Databases: MySQL, PostgreSQL, MongoDB
- Cloud: AWS CloudWatch, Azure Monitor, GCP
- Logs: Loki, Elasticsearch
- APIs: JSON, CSV
- Many More: 50+ data sources via plugins
Q5: What are Grafana variables?
Variables make dashboards dynamic:
Types:
- Query: Values from data source query
- Custom: Manual list of values
- Text: Free text input
- Interval: Time range selection
Example:
# Variable: $server
# Query: label_values(server)
# Use in query:
cpu_usage{server="$server"}
Best Practices
- Organize Dashboards: Group by team/service
- Use Variables: Make dashboards reusable
- Set Up Alerts: Monitor critical metrics
- Optimize Queries: Efficient queries for performance
- Use Annotations: Mark deployments/events
- Share Dashboards: Collaborate with teams
- Version Control: Export dashboards as JSON
- Set Permissions: Control access appropriately
Summary
Grafana is:
- Visualization Platform: Create beautiful dashboards
- Multi-Source: Connect to many data sources
- Alerting System: Set up metric-based alerts
- Analytics Tool: Analyze trends and patterns
Key features:
- Interactive dashboards
- Multiple data source support
- Powerful querying
- Alerting capabilities
- Plugin ecosystem
Use Grafana to:
- Monitor infrastructure
- Visualize application metrics
- Create business dashboards
- Set up alerting
- Analyze data trends
Interview angle
- “What is Grafana’s role?” - visualisation and alerting over data sources it doesn’t own: Prometheus for metrics, Loki for logs, Tempo for traces. It’s the pane of glass, not the store.
- “What makes a dashboard useful?” - it answers a specific question during an incident. Start from the RED metrics for each service, keep the top-level view small, and drill down from there. A wall of forty panels is decoration.
- “Where should alerts live?” - close to the data source (Prometheus alerting rules) or in Grafana unified alerting, but in one place. Alerts split across systems produce gaps nobody notices until an incident.