#Prometheus
Time-series database for metrics.
#Architecture
diagram
┌─────────────┐ ┌─────────────┐
│ Prometheus │────▶│ Targets │
│ Server │ │ /metrics │
└─────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ Grafana │
└─────────────┘#Configuration
yaml
1# prometheus.yml
2global:
3 scrape_interval: 15s
4
5scrape_configs:
6 - job_name: 'prometheus'
7 static_configs:
8 - targets: ['localhost:9090']
9
10 - job_name: 'node'
11 static_configs:
12 - targets: ['node-exporter:9100']#PromQL Examples
promql
1# CPU usage
2100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
3
4# Memory usage
5(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
6
7# HTTP request rate
8rate(http_requests_total[5m])
9
10# Error rate
11rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m])[!TIP] Pro Tip: Use recording rules for expensive queries!