Grafana - pranavkumarpk01/MD-DevOps GitHub Wiki
π What is Grafana?
Grafana is an open-source analytics and interactive visualization web application. It lets you query, visualize, alert on, and explore metrics/logs no matter where they are stored.
β Why is Grafana Required?
Modern systems generate huge volumes of metrics. Grafana provides:
- β Powerful dashboards to visualize metrics from sources like Prometheus, InfluxDB, MySQL, Loki, etc.
- β Customizable panels and graphs
- β Real-time monitoring and alerting
- β Templated and reusable dashboards
π― Use Cases of Grafana
- Visualizing server, app, container metrics
- Monitoring business KPIs
- Visual log analysis
- Integrating data from multiple sources
- Centralized dashboard for infrastructure health
π§ Grafana Core Concepts
Term | Description |
---|---|
Dashboard | Collection of panels |
Panel | A single visual element (graph, table, gauge) |
Datasource | The backend that Grafana pulls data from |
Query Editor | UI to build queries for the panel |
Variables | Used to make dashboards dynamic |
Alerting | Rule-based alerting system on panels |
Annotations | Notes or events on graphs (manual/auto) |
βοΈ Installing Grafana (Linux Manual Setup)
1οΈβ£ Download & Install
wget https://dl.grafana.com/oss/release/grafana-10.2.0.linux-amd64.tar.gz
tar -zxvf grafana-10.2.0.linux-amd64.tar.gz
cd grafana-10.2.0
./bin/grafana-server web
2οΈβ£ Access Grafana
Open browser at: http://localhost:3000
Default credentials:
- Username:
admin
- Password:
admin
π Adding Data Sources
- Go to βοΈ β Data Sources
- Click βAdd data sourceβ
- Choose from supported sources (e.g., Prometheus, InfluxDB, MySQL, Loki)
- Provide the required URL/credentials
- Click βSave & Testβ
π Creating Dashboards
Steps:
- Click on β β Dashboard
- Click βAdd new panelβ
- Select data source
- Write a query (e.g., in PromQL if using Prometheus)
- Choose visualization type: Graph, Gauge, Stat, Table, etc.
- Apply & Save dashboard
π Common Visualizations
Panel Type | Use Case |
---|---|
Graph | Time-series visual |
Stat | Single metric display |
Gauge | Visual threshold display |
Bar Gauge | Multiple values comparison |
Table | Tabular data (logs, statuses) |
Pie Chart | Categorical values |
π§ͺ Example Use Case: Node Exporter + Prometheus + Grafana
π’ Metrics Source:
Prometheus + Node Exporter
π’ Grafana Panel:
rate(node_cpu_seconds_total{mode!="idle"}[5m])
- Display: Graph Panel
- Tooltip: Show series name + value
- Alert if CPU usage > 80%
π Dashboard Variables
Variables make dashboards dynamic.
Example:
Variable Name: instance
Query: label_values(node_cpu_seconds_total, instance)
- Use in panel query as:
$instance
- Allows dropdown selection
π¨ Grafana Alerting
Simple Alert Flow:
- Go to panel β Alert β Create alert rule
- Define conditions:
- When: Average of query A is above 80
- For: 1m
- Set notification channel (Slack, Email, Discord)
- Save
π Alert Rule Example:
IF avg() OF query (A, 5m, now) IS ABOVE 90
FOR 2m
THEN alert
π¬ Notification Channels
Grafana supports:
- Slack
- Microsoft Teams
- PagerDuty
- Webhooks
- Discord
- Telegram
Set up via βοΈ β Alerting β Notification Channels
π Public Dashboards
- Explore and import dashboards from:
Import Example:
- Go to β β Import
- Enter dashboard ID (e.g., 1860 for Node Exporter Full)
- Set data source
- Click Import
π Security & Auth
- Users/Roles: Admin, Editor, Viewer
- Can integrate with:
- LDAP
- OAuth (Google, GitHub)
- SAML
- Passwords can be reset via CLI or config
π Grafana Folder Structure (Manual Install)
Path | Description |
---|---|
data/ |
DB, session, temp files |
conf/defaults.ini |
Default configuration |
public/ |
Static frontend files |
plugins/ |
External plugins folder |
logs/ |
Server logs |
βοΈ Custom Configuration
Edit conf/custom.ini
or pass env variables.
Common Options:
[server]
http_port = 3000
domain = localhost
[security]
admin_user = admin
admin_password = admin
π§° Advanced Features
Feature | Description |
---|---|
Data transformations | Combine, filter, calculate data inside panels |
Annotations | Mark events on graphs (manual or query-based) |
Dashboard Sharing | Export JSON or Share via link |
Plugins | Add new panel types, data sources |
Folder Permissions | Manage access for teams/users |
π§ͺ Example Use Cases
Use Case | Description |
---|---|
π Monitor API usage | Query metrics like request rate, error rate from Prometheus |
π§ View DB stats | Connect to MySQL/Postgres and visualize queries/sec, uptime |
π¦ Container Health | Visualize container CPU, memory with cadvisor |
π³ Docker & K8s | Monitor container clusters via Prometheus or Loki |
πͺ΅ Logs + Metrics | Combine Loki logs with Prometheus metrics in one dashboard |
π Final Thoughts
- Grafana is frontend for your monitoring stack.
- It is real-time, flexible, and plug-and-play with many data sources.
- For best results: Use Grafana with Prometheus, Loki, and Alertmanager.