HTTP health check endpoint using socat
What do you do when you need to expose an HTTP health check endpoint but
the thing you’re health checking isn’t a web server? You
socat
it! Here’s a complete example:
nohup socat TCP-LISTEN:8080,reuseaddr,fork,crnl SYSTEM:" supervisorctl status celery | grep -q RUNNING && echo HTTP/1.0 200 OK || echo HTTP/1.0 500 Down echo " &>/dev/null &
In short, the above will run a web server on port
8080
which will respond with HTTP status code of
200
if celery
is running, or
500
otherwise. You can replace
supervisorctl status celery | grep -q RUNNING with any other
command. The exit code of that command determines the web server’s
response. Pretty neat ha!