15

As we're a web software development company, we've got many applications running on different servers. Sometimes, we get notified about some of them being down by different issues.

Is there any server/application/tool which checks the state of a given url (performing raw HTTP GET requests) sequencially, given a concrete interval? It would be also interesting if we can add a mail server configuration in order to notify administrators if the site is down.

It shouldn't be so complicated to build ourselves, but I want just to check if there's something available just to avoid reinventing the wheel.

The tool should provide the next features:

  • Tool we can install in our web servers, not to be dependent on third party services
  • Kind of service which can be manually started/stoped
  • Lightweight solution
  • Runnable at least on Linux, will be interesting to have it on Windows too
  • Open source / Cheap alternative
4
  • 2
    One remark re the requirements: Several years ago we wrote a tool to do exactly that and had it running on our own servers. We needed to know a.s.a.p. when one of our (hosted) servers was down. Running it ourselves had the disadvantage that we had to provide for the possibility that our own connections were down. We solved this by pinging totally unrelated reliable sites. So this became a sort of 'distributed' testing. An (commercial) external service will test from different locations and maybe even alert your by SMS. Bottom line: I recommend an external service.
    – user416
    Feb 25, 2014 at 8:46
  • @JanDoggen, that's an excellent feedback from you. Actually, apart from our internal servers, we do have some of our applications running in externals. The method would consist in a tool in our own web servers and also in external ones. That way we could have every server testing all the services. Doing that has a several drawback, that's about having to update what to check everywhere, everytime we set up a new service. But that's what my question is about. Actually, we're also considering running an external service, as there are interesting free options as uptimerobot.com
    – Aritz
    Feb 25, 2014 at 10:03
  • ´loop: curl url & sleep 600 & goto loop ´? Aug 23, 2014 at 11:25
  • I use the free website monitoring service upnow.info which is open source and based on Sails JS + Angular (NodeJS) Nov 12, 2016 at 19:36

5 Answers 5

8

What you're looking for falls under the category of monitoring software.

I've used mon for that. Now I'm not an expert, so I can't really say how it compares to the many other monitoring tools out there, but based on your description it should work well for you.

  • Tool we can install in our web servers → apt-get install mon or yum install mon or whatever it is on your distribution
  • Kind of service which can be manually started/stoped → service mon start/stop
  • Lightweight solution → the program and its documentation take about 1MB
  • Runnable at least on Linux, will be interesting to have it on Windows too → should be in all major Linux distribution; there's no Cygwin package though.
  • Open source → yes, it's Debian-compliant free.

Mon is simple to get going. Out of the box on Debian/Ubuntu, it sends me (root) email when the Apache server on the same box goes down. Obviously you have to edit the configuration file to make it monitor other hosts. Mon comes with monitoring for hosts (ping), HTTP, FTP, SMTP, MySQL, available disk space and many more services, and you can run arbitrary commands to monitor services that are not built-in. Alerts can be sent via email, SNMP or custom methods.

Mon does not try to restart services that have gone down, that goes beyond its job.

You may want to explore the monitoring tag on Unix & Linux and on Server Fault to see if some alternatives catch your fancy.

4
  • Meets all the requirements, it seems (+1). Just as a side-note: Last update seems to be from 2010. But that must not mean anything for a simple background service :) A comparable (and up-to-date) project would be PHP Server Monitor. But not having used it, I can't detail on it...
    – Izzy
    Feb 24, 2014 at 18:56
  • @Izzy I'll have to give that a try as I develop on Windows personally and have been following this topic with interest. Feb 24, 2014 at 19:49
  • @NickWilde If you're speaking about PHP Server Monitor (which I assume), you're welcome to convert your try into some rep by creating an answer. Looking at that project's rating, I'm pretty sure it's worth it!
    – Izzy
    Feb 24, 2014 at 20:12
  • @Izzy yeah once I've tried it I'll definitely turn it into an answer if I matches as well as it appears to, thanks :) Feb 24, 2014 at 20:30
8

This is one of the things Nagios is designed for. It can monitor just about any externally visible service (HTTP, IMAP, POP, MySQL, SSH etc) as well as any internal stuff on the server (disk use, system load, number of processes) via what's called NRPE. It will send emails on service problems, optionally with constraints (don't email Joe outside working hours) to arbitrarily complicated mappings of recipients to services on machines. It will keep logs of when services were up/critical/down. It can also be set up to perform other actions on service failures (restart MySQL if down). It's free and open source (there is a for-pay version with extra features that go way beyond what you need), and there's plenty of documentation out there. There's at least one Windows (Cygwin) port, Nagwin.

1
  • 1
    I would add it's easy to add a plugin to check anything through NRPE. Create some script that returns 0,1,2 or 3 depending on the state, add the script to commands.cfg file and check whatever you want. On top of that, you also have Mobile apps to monitor your Nagios. Worth reading: signalvnoise.com/posts/3178-nagios-monitoring-performance
    – xbello
    Feb 25, 2014 at 17:17
4

I use Monit for that, it's free, open source (AGPL) and a Debian package available.

It supports:

  • Daemon mode - poll programs at a specified interval
  • Monitoring modes - active, passive or manual
  • Start, stop and restart of programs
  • Group and manage groups of programs
  • Process dependency definition
  • Logging to syslog or own logfile
  • Configuration - comprehensive controlfile
  • Runtime and TCP/IP port checking (tcp and udp)
  • SSL support for port checking
  • Unix domain socket checking
  • Process status and process timeout
  • Process cpu usage
  • Process memory usage
  • Process zombie check
  • Check the systems load average
  • Check a file or directory timestamp
  • Alert, stop or restart a process based on its characteristics
  • MD5 checksum for programs started and stopped by monit
  • Alert notification for program timeout, restart, checksum, stop resource and timestamp error
  • Flexible and customizable email alert messages
  • Protocol verification. HTTP, FTP, SMTP, POP, IMAP, NNTP, SSH, DWP, LDAPv2 and LDAPv3
  • An http interface with optional SSL support to make monit accessible from a webbrowser
2

If you're open to paying for a service, I've been very happy with Pingdom.

  • You can configure the check interval
  • Downtime notifications are sent via email, SMS messages, or Twitter.
  • They have consolidated dashboards that give summaries and historical data for the sites you're monitoring.
  • They have a free plan that can monitor a single URL, if you want to try it out.
4
  • 2
    It looks interesting. However I would prefer to have something internal rather than being dependent on a third party (and paid) service...
    – Aritz
    Feb 24, 2014 at 14:15
  • Would this work at all on a server that isn't accessible from the Internet? Feb 24, 2014 at 18:00
  • @Gilles no, it wouldn't. Feb 24, 2014 at 19:44
  • @XtremeBiker those weren't mentioned in the original question, though I see you've updated it now. Feb 24, 2014 at 19:45
2

SmartBear, the owners of SoapUI offers such a service. The starting price is currently $12/month for the basic service (with a free trial for all levels of service).

It looks like it cover your specifications plus more. I am not sure if you would consider such a service as possibly overkill since it seems to do a lot more than your question asked for. It does include the performance threshold monitoring you wanted and it does include both email and SMS notifications of any issues.

I have used SmartBear's products several times in the past (and currently) and have been extremely satisfied with them. If you want to give the service a test run than check out their free demo. Just put your URL into it and it will create a report based on your site.

All of that being said, if you want a simple up/down check, I would just code a pinger personally. These other options are great for monitoring, finding bottlenecks and addressing issues before they arise, which is where their value lies. And at the price, it's a lot less expensive than Load and Performance testing.

2
  • It seems interesting, but it looks like it's a more complete tool which also provide whole testing of the app. I only want to notify if it goes down! (To detect a 404 response when getting the page would be enough)
    – Aritz
    Feb 24, 2014 at 14:11
  • I have no experience with this one but it looks like it's suitable for your needs. Ping For Life looks to be extremely basic. Would this support your needs better?
    – Paul Muir
    Feb 24, 2014 at 14:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.