What Is It?

https://status.leohamel.com/status/main

It’s a simple monitoring service (Uptime Kuma) I put together to monitor the uptime of services we use here at Leo Hamel. They are docker apps running on AWS EC2 Instance named “Docker Services.” The app is exposed and mapped to status.leohamel.com using reverse proxy provided by Nginx Proxy Manager (port map 80:3001). You can go inside status.leohamel.com to add more services or configure notifications.

How Does It Work?

Since we have both internal and public-facing services, there are 2 methods Uptime Kuma is using to monitor these services:

  1. For public-facing services: Uptime Kuma pings selected services on their service ports every minute to determine if the service is alive, and notifies us if a service is not pingable.
  2. For internal services: A script on status-proxy.leohamel.com (192.168.0.102) runs as a cron job every minute to ping the internal services, then check in with Uptime Kuma for each service that is alive. Since status-proxy.leohamel.com is a member of our internal network, it will be able to reach these services that Uptime Kuma can’t. If after 90 seconds and there is no check in from the script, Uptime Kuma will assume the service is down and notify us. This is call a passive/push-based monitoring. The script is located at /home/bryan/monitor.ts.

How to Add More Services to Monitor?

  1. For public-facing services: Log in to status.leohamel.com and add the service.
  2. For internal services:
    • Create a push-based monitor from status.leohamel.com. Note down the `Push URL`.
    • Add the service(s) that need monitoring to the array hosts with this format:
      { name: "Service Name", host: "IP address or hostname", port: /* Optional */ 80, callbackURL: "Push URL obtained above", method: /* Optional, used for services that cannot be pinged using TCPPing wrapper for NodeJS */ "ping" }