Gracefully handle application downtimes and server errors
This project is intended to run alongside nginx
or another reverse proxy.
Configuration example:
error_page 500 502 503 504 /500.html;
location /500.html {
root /srv/http;
}
location /panik/ {
proxy_set_header X-App-Id "XptoApp";
proxy_pass http://unix:/run/panik.socket:/app/;
}
With this setup, we can run a script from panik
app on 500.html
page, that checks
application status, read logs and refreshes the browser when it comes back online:
<script src="/panik/init.js"></script>
Example webpage:
+------------------------------------+
| + 5xx error + |
| |
| / Application is currently \ |
| \ restarting. Please wait. / |
| |
| Last online: 1 min ago |
| Logs: ~~~~~~~~~~~~~~~~ |
| ~~~~~~~~~~~~~~~~ |
| ~~~~~~~~~~~~~~~~ |
| |
+------------------------------------+
- systemd (dbus) and systemd-journald integration
- (opt) docker and docker-compose integration
- websocket or wamp protocol?
- (opt) backoffice
- internal api to start / restart / shutdown applications
- check if application is healthy via http / systemd
- keep online status, last online, and other useful metrics (TBD)
- (op1) python 3.7+, tornado, sqlite
- (op2) python 3.7+, django + channels, sqlite
- (op3) python 3.7+, autobahn, sqlite
- (op4) go, sqlite