How to Add a Health Check Endpoint to Your Application
Tags: healthcheck, endpoint, node, express
Published: 2020-09-21 09:13:15

As your customer base grows, your responsability to provide a functionning service at all time grows too. Let's see how you can a add a few lines of code and earn peace of mind!

# Why would we need a health check endpoint

Firstly, it is dead simple to make one and doesn't require a lot of technical skills. Type "How to create a *[insert language]* health check" on Google and you'll quickly find some code you can copy/paste!

Major reasons could be:

 - **SLA** — you are often required to keep up with a Service Level Agreement (SLA) that specifies what uptime you need to commit to.
 - **Money loss** — in some industries, a minute of downtime can cost tens of thousands of dollars. How much money and business would you lose for a minute, an hour or a whole day of downtime?
 - **Reputation** — repeatedly downtimes simply tarnish your business reputation.

Here we'll see how to create a health route that is intended to be monitored using an uptime monitoring service, and make sure your application never goes down without a notice, using Node.js as an example using its most popular framework: [Express](https://expressjs.com/) (my favorite).

```
const http = require('http');

const app = express();
const router = express.Router();

router.use((req, res, next) => {
  res.header('Access-Control-Allow-Methods', 'GET');
  next();
});

router.get('/health', (req, res) => {
  res.status(200).send('Ok');
});

app.use('/api/v1', router);

const server = http.createServer(app);
server.listen(3000);
```

You could additionally add other connectivity checks such as the database or redis. You should also have one health check for each micro-service that you're running!

# Automate the checks
Now that we have a brand new endpoint to check the status of our app, let's collect its uptime and other metrics such as response time, and that we are sure to get notified on time when 💩 hits the fan. You can use a dedicated service like [Hyperping](https://hyperping.io) which continuously monitors the availability of websites and APIs. [Create an account](https://app.hyperping.io/register), where you will be redirected to create your first monitor.

![](https://hyperping.io/img/healthcheck.png)

By simply adding the new endpoint to Hyperping's app, with no additional setup, its availability is being continuously monitored. After a few minutes, its uptime and response time are shown for the selected date range across a selectable set of regions (London, Amsterdam, Toronto, San Francisco & more), and displays historical data.

On top of that, it easily integrates with alerting tools such as [Slack](https://slack.com), [OpsGenie](https://www.atlassian.com/software/opsgenie), or send [SMS](https://hyperping.io/integrations/sms) to you and your teammates!

# Conclusion
This has been a pretty simple and straightforward way to setup a health check! This will give you additionnal peace of mind and can only push you to make your app more robust.


I hope this has been useful for you, please tweet [@me](https://twitter.com/sinequanonh) after you've setup anything after this, and please share your code snippets of other languages such as Go, Python or Laravel!