Monitoring doesn’t have to be complicated. Prometheus + Grafana in 15 minutes.
Docker Compose¶
services:
prometheus:
image: prom/prometheus:latest
ports: [“9090:9090”]
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana:latest
ports: [“3000:3000”]
environment:
GF_SECURITY_ADMIN_PASSWORD: admin
Prometheus config¶
Monitoring Stack in 15 Minutes¶
global:
scrape_interval: 15s
scrape_configs:
- job_name: app
static_configs:
- targets: [“app:8080”]
Node.js Metrics¶
import { collectDefaultMetrics, register } from ‘prom-client’; collectDefaultMetrics(); app.get(‘/metrics’, async (req, res) => { res.set(‘Content-Type’, register.contentType); res.end(await register.metrics()); });
Grafana Dashboards¶
Import ready-made dashboards from grafana.com — ID 1860 (Node Exporter Full), ID 11159 (Node.js).
Alerting¶
prometheus rules¶
groups: - name: alerts rules: - alert: HighErrorRate expr: rate(http_errors_total[5m]) > 0.1 for: 5m
Result¶
15 minutes and you have metrics, graphs, and alerting. Gradually expand with additional exporters.