Prometheus & Grafana
Prometheus collects and stores metrics, while Grafana visualizes them with beautiful dashboards. Together they form the most popular open-source monitoring stack.
The Monitoring Stack
βββββββββββββββββββββββββββββββββββββββββββ
β Grafana Dashboards β
β ββββββββββββ ββββββββββββ βββββββββ β
β β CPU/Mem β β Request β βErrors β β
β β Graphs β β Rate β β Panelβ β
β ββββββββββββ ββββββββββββ βββββββββ β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β Queries
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β Prometheus Server β
β ββββββββββββββββββββββββββββββββββββ β
β β Time-Series Database (TSDB) β β
β ββββββββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββ β
β β PromQL Query Engine β β
β ββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββ¬βββββββββββββββββββββββ
β Scrapes
ββββββββββββΌβββββββββββ
βΌ βΌ βΌ
ββββββββββββ ββββββββββββ ββββββββββββ
βApp Metricsβ βNode Exp. β βMySQL Exp.β
β /metricsβ β:9100 β β:9104 β
ββββββββββββ ββββββββββββ ββββββββββββ
Prometheus Configuration
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'myapp'
static_configs:
- targets: ['app:8080']
metrics_path: '/metrics'
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
PromQL Examples
# Request rate per second
rate(http_requests_total[5m])
# Error rate (5xx responses)
rate(http_requests_total{status=~"5.."}[5m])
# CPU usage percentage
100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# Memory usage
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100