This is a simple observability boilerplate that is aimed at Log-Metric-Tracing collection
- Application: Python Django
- Log Collection: Elastic
- Metric Collection: Prometheus
- Trace Collection: Zipkin
- Dashboarding: Kibana | Grafana | Zipkin
Note: A huge thanks to @mordaha for building a base seed project on top of which this boilerplate is built.
- python 3
- django 1.9
- postgresql for django database (dockerized for development, host-based for production)
- nginx as production webserver, with send_file && secure_link for serve uploaded files
- elasticsearch + logstash + kibana (ELK) for log collection
- prometheus for metric collection
- zipkin for trace collection
- ./setup.sh for "docker-compose with development config" shortcut
- Run
$ ./setup.sh
- Wait until all containers start, then run
./es_index.sh
- Python Django application URL: http://127.0.0.1:8000/
- Nginx URL (First log entry): http://127.0.0.1:8080/
- Logstash Endpoint: http://127.0.0.1:8050/
- Elasticsearch URL: http://127.0.0.1:8020/
- Kibana Dashboard URL: http://127.0.0.1:8056/
- Prometheus Dashboard URL: http://127.0.0.1:9090/
- Grafana Dashboard URL: http://127.0.0.1:3000/
- Zipkin Dashboard URL: http://127.0.0.1:9411/
MIT
- Polishing the setup