The web app monitoring tool I want
I want a web app monitoring tool that notifies me if something goes wrong. Here is how it should work.
I'm a developer. I write web apps and run them on linux servers. I keep an eye on them to make sure all apps are running smoothly. But, as the number of apps and servers grows, manual monitoring takes more and more time, so I need an automated web app monitoring tool.
A few years back, I wrote a simple tool that checks if my URLs are reachable and sends me emails if not. This tool served me well, but it's time to move on. Besides simple URL checks, I also need to stay up-to-date about my SSL Certificate expiration dates, machine resource usages, database errors, and so on.
I've tried and tested many tools: Pingdom, UptimeRobot, PingPing, OnelineOrNot, and many more. All do an excellent job of URL checking, cronjob heartbeats, status pages, and whatnot. Some of them are a bit pricy, but that's OK.
Most tools check servers 'from the outside', that means they send HTTP(S) requests, DNS queries, and PINGs to the server and check the responses. If the response has a timeout or is somehow suspicious, they notify via Email, Slack, SMS, and so on. Pretty and simple.
Then there are tools that gather data 'from the inside': Prometheus, Grafana, DataDog, Statsd, Collectd, there are many of them. Some of them are self-hosted, some are SaaS. Most are too complicated for my taste, definitely more complex than the apps they should monitor.
I want a web app monitoring tool that is simple, affordable and easy to setup.
Preferrably a SaaS product that has a scriptable API I can
reach via simple curl
commands.
The rest of this article describes the ideal tool that I want. I will list all top-priority must-have requirements. Additionally I will also describe some nice-to-have features.
Periodic HTTP URL Checks
Of course. If my app is not reachable for whatever reason, I should definitely be the first one to know. The tool should check HTTP responses (status, content, time-to-load) and should notify me if something is wrong.
SSL certificate checks
Absolutely. The tool should notify me if my SSL certificate is about to expire, for example 5 days before.
Watchdogs and Heartbeats
Must-Have. My servers should be able to send heartbeats to the tool. Periodically,
for example every hour. If the tool does not receive a heartbeat on time,
a watchdog should trigger and notify me.
Ideally a simple curl
command should be enough
for sending a watchdog heartbeat, for example via a crontab entry.
Machine Resource Usage
The tool should collect resource usage (CPU, Memory, Disk Usage) data from my servers and notify me if any resource reaches a critical threshold.
Custom Metrics
This is something that well-known uptime-tools do generally NOT provide: My web apps should be able to send custom metrics to the monitoring tool. Custom metrics are, for example:
- Number of HTTP requests served (per hour/day/month)
- Size of database files and/or folders
- Database transation latencies
- Number of registered users
- Number of failed database transactions
- Number of emails sent
- Number of upgradable apt packages
- and so on ...
Flexible Notifications
The tool should be able to use different notification channels (Email, SMS, Webhooks, custom Apps, etc.) and provide different severity levels (Info, Warning, Error). I want to be able to express things like that:
- "When URL https://example.com/api/healthcheck does not answer within 10 seconds, send high-priority SMS to phone number +49 xxxxx xxxxxxxxxxx, even in the night. Repeat every hour until URL is reachable again."
- "When number of upgradable software packages is greater than zero, send a low-prio email to xxxxxxx@xxxxxx.xx. Do not repeat, even if error persists."
Data Retention
All data (URL check latencies, Machine resource usages, Custom Metrics) should be stored for a month or two, so that I can look at growth rates (positive or negative). I want to be able to decide - based on the data collected - if I have to optimize my app, rent a bigger server machine, insert another harddrive, and so on.
API
The tool should provide a secure, robust, simple-to-use HTTP REST API I can use
with curl
or from within my web apps
(mostly Go
and Java).
A SDK for easier development would be preferred, ideally open-source.
Privacy
Definitely a MUST: I live in the EU (Germany), and most of my customers also. GDPR (General Data Protection Regulation), called DSGVO (Datenschutz-Grundverordnung) in German, is the definitive privacy regulation here. Any monitoring tool that I use must comply with the GDPR, otherwise I might not even be allowed to use it.
Things I do not need
- Fancy schmancy GUI design. I'm a developer. I'm interested in functionality. For beautiful design, I go to the museum.
- Public status pages. A monitoring tool should watch over my websites and web apps. If something breaks, it should tell me, not the public.
- A jack of all trades.
Conclusion
In this article I've presented the requirements for my ideal web app monitoring tool. I've described a tool that watches over my web apps and servers, like I do manually, but in an automated way. At the end of the day, I want a tool that lets me sleep better.
Subscribe to our newsletter. We will keep you informed about updates and news, approx. once per month. Do not worry, you can unsubscribe at any time.