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

  1. Go to βš™οΈ β†’ Data Sources
  2. Click β€œAdd data source”
  3. Choose from supported sources (e.g., Prometheus, InfluxDB, MySQL, Loki)
  4. Provide the required URL/credentials
  5. Click β€œSave & Test”

πŸ“ˆ Creating Dashboards

Steps:

  1. Click on βž• β†’ Dashboard
  2. Click β€œAdd new panel”
  3. Select data source
  4. Write a query (e.g., in PromQL if using Prometheus)
  5. Choose visualization type: Graph, Gauge, Stat, Table, etc.
  6. 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:

  1. Go to panel β†’ Alert β†’ Create alert rule
  2. Define conditions:
    • When: Average of query A is above 80
    • For: 1m
  3. Set notification channel (Slack, Email, Discord)
  4. Save

πŸ›‘ Alert Rule Example:

IF avg() OF query (A, 5m, now) IS ABOVE 90
FOR 2m
THEN alert

πŸ“¬ Notification Channels

Grafana supports:

  • Email
  • Slack
  • Microsoft Teams
  • PagerDuty
  • Webhooks
  • Discord
  • Telegram

Set up via βš™οΈ β†’ Alerting β†’ Notification Channels


🌍 Public Dashboards

Import Example:

  1. Go to βž• β†’ Import
  2. Enter dashboard ID (e.g., 1860 for Node Exporter Full)
  3. Set data source
  4. 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.