A production-style backend observability and monitoring project built with Node.js, Express, TypeScript, Prometheus, Grafana, Loki, and Docker.
This project demonstrates structured logging, metrics collection, centralized error handling, request tracing, and monitoring practices commonly used in real-world backend systems.
- Express.js API with TypeScript
- Structured logging with Winston
- HTTP request logging with Morgan
- Metrics collection using Prometheus
- Grafana dashboards for visualization
- Loki + Promtail log aggregation
- Request ID tracing
- Centralized error handling
- Dockerized development environment
- Production-style backend architecture
- Node.js
- Express.js
- TypeScript
- Docker
- Prometheus
- Grafana
- Loki
- Promtail
- Winston
- Morgan
src/
├── configs/
├── controllers/
├── middlewares/
├── routes/
├── utils/
├── constants/
├── types/
└── index.tsgit clone https://github.com/harshitclub/node-api-observability.git
cd node-api-observabilitynpm installCreate a .env file:
PORT=5000
LOG_LEVEL=info
NODE_ENV=developmentnpm run devdocker compose up --build| Service | URL |
|---|---|
| API | http://localhost:5000 |
| Prometheus | http://localhost:9090 |
| Grafana | http://localhost:3000 |
Prometheus metrics endpoint:
/api/metricsTracked metrics include:
- Total HTTP requests
- Request duration
- Status codes
- Node.js system metrics
Application logs include:
- HTTP requests
- Errors
- Request tracing
- Response times
Logs are stored inside:
logs/Collects application and system metrics.
Visualizes metrics through dashboards.
Stores and aggregates logs.
Ships logs from the application to Loki.
- API monitoring
- Performance analysis
- Error tracking
- Backend observability learning
- Production backend practices
- Grafana dashboard provisioning
- OpenTelemetry integration
- Redis-based rate limiting
- Distributed tracing
- CI/CD pipeline
MIT