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
" &>/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!