UpDown is nice but I'm considering moving because they don't support multiple domains on the same status page. I don't need a single status page for each of the domains I own, that would be ridiculous.
I'm using the same, but I'm looking around for alternatives after I received a couple of false alerts (about 3-4 over the last year) from them. Still, overall a good service.
If you want a light (and free) DIY solution, it's pretty straightforward to build a basic uptime monitor (with connections to Slack, SMS, whatever) using Standard Library [0] and Scheduled Tasks, one of our engineers just posted this article (you can build from your browser):
Another option if you don't feel in the mood for DIY is TJ Holowaychuk's Apex Ping: https://apex.sh/ping/. Great service, run by a solo developer, reasonable price.
Sorry but that has got to be one of the worst company/product names ever. Either it is completely un-searchable since literally every programming language has a "standard library" or if it actually takes off it will push down actually relevant results for niche programming language docs.
Yes — you’re not the first person to come at me with a pitchfork for the domain and name and won’t be the last. I do appreciate the feedback, but we’re committed to the name. :)
We haven’t historically had a problem with “stdlib”, we’re already the top Google result. “Standard Library” (full name) is new for us as we expand to a less technical cohort of customers. We’re working with some pretty great people and companies (Stripe, Slack) on our mission to build a, well, Standard Library — so if you can get over the name choice you should check out our online development environment! -> https://code.stdlib.com/
I see that it's trending but without any comments - so allow me a shameless plug, I created a tool to monitor my APIs (can schedule calls, do response content checks, send alerts etc): http://www.apilope.com
If you drop me a line after you signed up I can flag you as a demo user that's free forever - or at least until you want to pay or cancel :)
I've written custom bash scripts that Zabbix runs and alerts based on their output.
For example, domain expiry - I have a script that Zabbix runs once a day that does a whois and grabs the expiry date for the domain in question. Convert that to a unix string and subtract the current date on it. Echo that from the script.
In Zabbix we can now alert if that item's value is <30d. Similar for SSL certificates and the web monitoring stuff is built in
Edit: Oh actually on the whois, I remember it was a huge pain in the butt getting the expiry for a variety of different domains - I now use https://jsonwhoisapi.com/ to get the whois info
- Custom health check endpoint: checks a bunch of internal status metrics (NewRelic metrics for speed and error rate, DB connection check, a few E2E tests). Returns a simple overall status: OK, Warning (error rate high but not critical, slower than usual response times), Critical (DB down, errors high, anything else). Benefit of this approach is that it's easy to add new health checks any time you add a feature (example: is redis up?).
- Pingdom: polls custom endpoint every minute. Sends notification to PagerDuty if critical, or if warning for more than 5 mins.
- PagerDuty to notify team
- SSL Expiry: calendar notifications (whole team) and reminder emails from our SSL cert issuer
I have no affiliation with any of these companies.
I use StatusCake for basic uptime monitoring for websites. I switched to them from Pingdom because they are cheaper. Only downsides I've had with StatusCake is if something is down it doesn't give you the cause. Pingdom would show you the trace route. That has made it hard to tell and I would get quite a few false positives saying sites were down. I haven't had false positive issues for months now though. Their paid plans have SSL/domain monitoring.
I started using Site 24x7 from Zoho about a year ago for all of my apps and my clients "basic" websites.
It ended up being a great tool for me because it allows for the most basic ping test and to content checks to be setup in 10 mins. It also has the ability to add reporting based on apps, servers, and databases. The aws add-ins helped me tune my usage, as i was paying way to much for a couple services that i could downgrade with out impacting my apps.
I feel it is priced right and a good value up to the 89/month plan.
Pingdom, SiteUptime, and Montastic. None of these are relied upon for mission critical monitoring. I set them up as a sort of "canary in the coal mine" for each of my servers, to help alert me to issues.
I also created a very hacky, browser start page which has GIF's that are pulled from each of my servers. Sort of like how "game copy world" used to setup their mirror page. Super unsophisticated but it allows me to do an "uptime check" every time I open my browser.
External monitoring: Pingdom/Site24x7. Lesson learnt - have the alerts route to at least a few emails outside of your company domain if you use the same domain for email.
Site monitoring: NewRelic
PagerDuty/OpsGenie: For alert routing if you have more than 2 people.
I discovered earlier this week that Keybase.io also offers pseudo monitoring by emailing me the proof on my website was no longer valid due to broken https.
I second this. Been using the free plan of UptimeRobot for years without a problem. It pings your website every 5 minutes and you get an email alert when it’s down.
I've had a bad experience with Uptime Robot - it only checked our server via IPv4. We didn't know IPv6 was down for far too long (it was a DNS problem).
I basically add a /global-health endpoint on my server. It executes a bunch of checks programmatically - e.g. database connection, rendering working, etc. It would be easy to add in "fail if cert expires in next month".
Then, I monitor just that one endpoint with Stackdriver (because it's easy). If any of the checks fail, it logs it, prints details, and sets a 500 header code. Adding new checks is just a code change.
You need to realize health checking doesn't need to be cool.
It's a good solution to check the statistics by human eyes but there are simpler and more effective solutions for health checking.
What tools do you use to monitor uptime of your web apps and/or APIs?
I use a custom AWS Lambda function. It fires every four hours or so, and tries to make an https connection to each configured URL (the URLs are stored in a file in S3) and if the site is either down, or if there is an SSL error (which probably means an expired certificate) then it sends me a text message using SNS.
The whole thing is about 50 lines of code, and that's in Java. And it doesn't even come close to exceeding the free tier limit of Lambda calls, so it doesn't even cost anything so far.
To be fair, I could have used a 3rd party service, but writing this thing was my first foray into using Lambda, so I did it as much for the learning experience as anything. But it works really well, so I doubt I'll replace it anytime soon.
Yeah, it's just using the standard AWS scheduled events stuff. Nothing fancy. Then again, our needs (for now) are pretty simple. I basically just want to know if our website goes down or if our SSL certificate expires or something.
One of the sites is a SaaS offering, but it's not live yet, so I don't need to stay super-on-top-of-it. Once it's live we'll want more frequent monitoring and some other stuff, so we might either move to another approach, or supplement this with something else.
Guess I'm not the only one, and of course my personal site was down for the last three days because the domain registration had expired and couldn't be renewed on an outdated card.
I facepalmed.
But once my setups get a bit more complex I was thinking I'd build webhooks into an analytics server, and ping those from each server with a json request which includes health data for each's databases and other servers.
I'm no where near that so I'll probably sign up for the free plan on uptimerobot later mentioned in other comments.
We have been fairly happy with Runscope [0] for fairly simplistic monitoring of api response codes and body payloads. My biggest complaint is probably the lack of individualized response data after >= 24 hours.
Still waiting to see if the CA Technologies acquisition [1] makes things worse or not.
There are more resources working on Runscope than ever before. CA continues to invest in stability, new features and support. CA is also going through an acquisition and that introduces more variables, but as of today (1+ year after acquiring us), CA has been extremely supportive of Runscope.
100 comments
[ 3.0 ms ] story [ 128 ms ] threadBest value of any tool I've ever used. It does literally everything you asked. I didn't even know it checked SSL expiry till it pinged me.
https://hackernoon.com/build-an-uptime-monitor-in-minutes-wi...
Another option if you don't feel in the mood for DIY is TJ Holowaychuk's Apex Ping: https://apex.sh/ping/. Great service, run by a solo developer, reasonable price.
[0] https://stdlib.com
Disclaimer: I founded Standard Library. :)
We haven’t historically had a problem with “stdlib”, we’re already the top Google result. “Standard Library” (full name) is new for us as we expand to a less technical cohort of customers. We’re working with some pretty great people and companies (Stripe, Slack) on our mission to build a, well, Standard Library — so if you can get over the name choice you should check out our online development environment! -> https://code.stdlib.com/
If you drop me a line after you signed up I can flag you as a demo user that's free forever - or at least until you want to pay or cancel :)
For example, domain expiry - I have a script that Zabbix runs once a day that does a whois and grabs the expiry date for the domain in question. Convert that to a unix string and subtract the current date on it. Echo that from the script.
In Zabbix we can now alert if that item's value is <30d. Similar for SSL certificates and the web monitoring stuff is built in
Edit: Oh actually on the whois, I remember it was a huge pain in the butt getting the expiry for a variety of different domains - I now use https://jsonwhoisapi.com/ to get the whois info
It's not perfect but I hardly have issues with it.
Honestly, I don't do expiry checks...
- Pingdom: polls custom endpoint every minute. Sends notification to PagerDuty if critical, or if warning for more than 5 mins.
- PagerDuty to notify team
- SSL Expiry: calendar notifications (whole team) and reminder emails from our SSL cert issuer
I use StatusCake for basic uptime monitoring for websites. I switched to them from Pingdom because they are cheaper. Only downsides I've had with StatusCake is if something is down it doesn't give you the cause. Pingdom would show you the trace route. That has made it hard to tell and I would get quite a few false positives saying sites were down. I haven't had false positive issues for months now though. Their paid plans have SSL/domain monitoring.
Monitis for cheap Linux CPU/RAM/Load monitoring.
A ton of different types of checks. A lot of value for not a lot of money. The public status page style is minimalastic but exactly what I want.
Example: https://status.regexplanet.com/
It ended up being a great tool for me because it allows for the most basic ping test and to content checks to be setup in 10 mins. It also has the ability to add reporting based on apps, servers, and databases. The aws add-ins helped me tune my usage, as i was paying way to much for a couple services that i could downgrade with out impacting my apps.
I feel it is priced right and a good value up to the 89/month plan.
I also created a very hacky, browser start page which has GIF's that are pulled from each of my servers. Sort of like how "game copy world" used to setup their mirror page. Super unsophisticated but it allows me to do an "uptime check" every time I open my browser.
Site monitoring: NewRelic
PagerDuty/OpsGenie: For alert routing if you have more than 2 people.
I'm not affiliated with them, just an happy customer
[0] E.g. status page: https://status.appdrag.com/
Then, I monitor just that one endpoint with Stackdriver (because it's easy). If any of the checks fail, it logs it, prints details, and sets a 500 header code. Adding new checks is just a code change.
Gives me all sorts of useful information that I use to make decisions.
I use a custom AWS Lambda function. It fires every four hours or so, and tries to make an https connection to each configured URL (the URLs are stored in a file in S3) and if the site is either down, or if there is an SSL error (which probably means an expired certificate) then it sends me a text message using SNS.
The whole thing is about 50 lines of code, and that's in Java. And it doesn't even come close to exceeding the free tier limit of Lambda calls, so it doesn't even cost anything so far.
To be fair, I could have used a 3rd party service, but writing this thing was my first foray into using Lambda, so I did it as much for the learning experience as anything. But it works really well, so I doubt I'll replace it anytime soon.
One of the sites is a SaaS offering, but it's not live yet, so I don't need to stay super-on-top-of-it. Once it's live we'll want more frequent monitoring and some other stuff, so we might either move to another approach, or supplement this with something else.
I facepalmed.
But once my setups get a bit more complex I was thinking I'd build webhooks into an analytics server, and ping those from each server with a json request which includes health data for each's databases and other servers.
I'm no where near that so I'll probably sign up for the free plan on uptimerobot later mentioned in other comments.
Still waiting to see if the CA Technologies acquisition [1] makes things worse or not.
[0] https://www.runscope.com/ [1] https://blog.runscope.com/posts/301
There are more resources working on Runscope than ever before. CA continues to invest in stability, new features and support. CA is also going through an acquisition and that introduces more variables, but as of today (1+ year after acquiring us), CA has been extremely supportive of Runscope.