Backend Tools
🔁 High-Level Roles
- Prometheus: A monitoring and alerting toolkit. It collects, stores, and queries metrics from your applications.
- Grafana: A visualization and dashboard tool. It connects to Prometheus and displays the metrics.
So the order is:
Prometheus first, then Grafana.
What to Learn First
📌 1. Prometheus Basics
Learn this first, because Grafana depends on Prometheus as a data source.
Key Concepts
- Metrics format (key-value pairs, usually pulled from
/metrics
) - How Prometheus scrapes targets (your FastAPI app)
- PromQL: Prometheus Query Language
- Configuration (
prometheus.yml
) - How to expose metrics from FastAPI (using
prometheus_client
)
Example metric from FastAPI
from prometheus_client import start_http_server, Counter
REQUEST_COUNT = Counter('http_requests_total', 'Total HTTP Requests')
@app.middleware("http")
async def count_requests(request: Request, call_next):
REQUEST_COUNT.inc()
return await call_next(request)
Then Prometheus scrapes http://<your-app>:8000/metrics
.
📌 2. Grafana Basics
Once Prometheus is collecting metrics:
- Add Prometheus as a data source in Grafana.
-
Create dashboards using:
-
Graphs (time series)
- Gauges
- Tables
You can use built-in dashboards or import community ones from Grafana Dashboards.
🔧 Local Testing
You can visit:
- Prometheus UI:
http://localhost:9090
Try simple PromQL queries like:
- Grafana UI:
http://localhost:3000
Default login is admin / admin
.
🛠 Recommended Learning Path
-
Prometheus:
- Learn about scraping targets
- Learn PromQL basics
- Understand how metrics are collected
-
Grafana:
- Learn dashboard creation
- Set up alerts
- Explore panel types