Twitter Notifications

NodePing is happy to announce our newest notification method – twitter direct messages.  The ability to receive a twitter direct message is a great addition to our current notification system that already includes unlimited email, international SMS, and voice calls.

Twitter notifications are in testing at this point.  They are available on all accounts so please do kick the tires and let us know how things work for you at support@nodeping.com.

You’ll need to follow @NodePing in order to get direct message alerts.  Then add your twitter handle in your contact record and in your check’s notification section and we’ll send you a private and discrete ‘direct message’ (not an embarrassing public tweet) when that check goes down and again when it comes back up.

Let us know in the comments how this new notification type is working for you and what you’d like to see added next – instant message (IM), HTTP POST to url, carrier pigeon, etc?

SSH Check with Content String Matching

NodePing is happy to announce the new SSH check. In its simplest use, the new SSH monitoring provides a real SSH connection for monitoring those critical SSH services, but our check can do much more than that.

Not only can we monitor the availability of your SSH services on any port, but we can also optionally have the check log in and verify the presence, or absence, of a particular string in the login response. Pairing the SSH check with a login script makes it much more powerful and flexible. With it, you can monitor much more than SSH.

In the example below, we’re going to set a login script that checks server load, available memory, and disk usage. We’ll use its simple ‘PASS‘ or ‘FAIL‘ output to trigger email and SMS alerts from NodePing when the 1 minute load average goes over 4.0, when available memory drops below 50MB, or when the disk becomes more than 90% full.

The script is a simple BASH script that relies on commonly installed programs like ‘top’, ‘free’, and ‘df’ to determine the ‘PASS’/’FAIL’ status for each of the things we’re monitoring. It’s not the prettiest thing, but it seems to work well on an Ubuntu server.

#!/bin/bash
# Load average limit
# A quad-core server may be maxing out CPUs at 4.0
LOADLIMIT=4;
# Free memory floor in MB.
FREEMEMLIMIT=50;
# Disk usage in percentage, but without the percent sign. 
DISKUTILIZATION=90;
# Path to the disk partition you want to monitor.
DISKPATH='/dev/sda7';

LOAD=`top -n1 | grep 'load average' | awk -F" " '{print $12}'`;
LOAD=${LOAD:0:4}
LOAD=`echo "$LOAD > $LOADLIMIT" | bc`
if [ $LOAD -eq 1 ]; then
echo "LOAD:FAIL";
else
echo "LOAD:PASS";
fi

MEMUSAGE=`free -m | grep '^Mem' | awk -F" " '{print $4}'`;
MEMUSAGE=`echo "$MEMUSAGE < $FREEMEMLIMIT" | bc`;
if [ $MEMUSAGE -eq 1 ]; then
echo "MEM:FAIL";
else
echo "MEM:PASS";
fi
DISKSPACE=`df | grep "$DISKPATH" | awk -F" " '{print $5}'`;
LEN=`expr "$DISKSPACE" : '.*'`;
LEN=`echo "$LEN-1" | bc`;
DISKSPACE=${DISKSPACE:0:$LEN}
DISKSPACE=`echo "$DISKSPACE > $DISKUTILIZATION " | bc`;
if [ $DISKSPACE -eq 1 ]; then
echo "DISK:FAIL";
else
echo "DISK:PASS";
fi
# logout right away
# This SSH user is restricted for security purposes
exit;

We saved this script as ‘mylogin.bash‘ in our user’s home folder and then edited the /etc/passwd file, replacing the shell ‘/bin/bash‘ with ‘/home/testuser/mylogin.bash‘.  Don’t forget to make the script file executable with something like

chmod 0755 /home/testuser/mylogin.bash 

Now when our test user logs in, we see something like:

Last login: Thu Apr 12 22:41:33 2012 from 127.0.0.1
LOAD:PASS
MEM:PASS
DISK:PASS
Connection to 127.0.0.1 closed.

It’s the response text above that will be checked against our user defined content string. In our SSH check configuration, we’ll set the ‘Content string‘ dropdown to ‘Does not contain‘ and type ‘FAIL‘ in the text field.  Now when NodePing’s probe servers login via SSH and find the word ‘FAIL‘ in the response, I’ll get a notification!

But the notification just says that the SSH check failed. We won’t know what failed.  It could be the load, memory, or disk.  Instead of logging in to see, I’ll be lazy and create three separate SSH checks, all with the same host and login information, but have one check for the string ‘LOAD:FAIL‘, another check for ‘MEM:FAIL‘, and the other ‘DISK:FAIL‘.  I’ll label the one that checks the load average a nice informative name like “Load Average on test server” and the other checks something similar. Now my SMS notification say something like “SSH Check failed for: Load Average on test server“, letting me know exactly what’s failing.

NodePing provides 1000 checks run at up to 1 minute intervals for only $10/month so you’re running out of reasons not to monitor everything. If you don’t have a NodePing account yet, sign up for our free 15-day trial and kick the tires.  We think you’ll like it.

The above example is fairly simple.  You can write your own login scripts in Node.js, Python, etc to check statuses for databases, VPN connections, virus definition updates,… dang near anything!  You can find information on how to configure your SSH checks in our documentation.

How will you use the new SSH check with content string matching?  Let us know in the comments below.

FTP Check Now Looks for Files Too!

Until today, the NodePing FTP check was fairly basic but we’ve rolled up our sleeves to add the awesome sauce and are proud to announce our new and improved FTP monitoring check.

Features:

  • Monitor FTP on any port, not just 21
  • Supports anonymous logins
  • Verify FTP user logins (optional)
  • Verify the existence, or non-existence of a file on your FTP server (optional)

Detailed information about how to configure your FTP checks can be found in our documentation.

The “file exists” feature in particular can be a huge help for those who wish to do more than just check to see if their FTP service is currently running. We’ll send you a notification if that important file goes missing from your FTP service – or if a particular file suddenly appears! This can be used to receive an alert when an application error log file gets created.  Or you could write your own scripts for internal processes that trigger NodePing SMS alerts by touching files on your FTP server.

The new enhancements are available on your account now at NodePing.  If you don’t have a NodePing account, you can sign up today for a free 15-day trial and for $10 a month you can monitor 1000 servers and get unlimited email and international SMS alerts.

SSL Certificate Check

An SSL certificate is an important part of serving up secure websites. It puts the ‘S’ in HTTPS and gives your visitors that warm fuzzy feeling when they see that padlock in their browsers. But those SSL certificates don’t last forever. Most have to be renewed every 1-3 years and should you forget and let that certificate expire, your visitors will be met with an ugly “This Site is Untrusted‘ message instead of your great content. Let NodePing keep an eye on your SSL certificates with our new SSL check available today.

Monitoring your SSL certificate with NodePing will allow you to receive notifications if the certificates is nearing its expiration, is replaced with an invalid certificate, or if your webserver is incorrectly serving it. You can also configure how many days in advance of expiration you’d like to receive the notification, giving you time to renew and install a new certificate without interruption.

The new SSL check is just one more link in your comprehensive server monitoring chain. NodePing is happy to keep an eye on your SSL certificates. If you don’t have an account yet, sign up for a free 15 day trial at http://nodeping.com.

Let us know what you think of the new SSL check in the comments below.

Monitoring results now available in JSON and CSV formats

Many of our customers monitor their own customers’ websites, or they monitor services about which they have to periodically report availability and incident statistics. Many of them would like to include status information in their own dash boards or integrate results with other data in reports. All of that calls for the data to be available in formats that can be easily used by scripts, or easily imported into spreadsheets.

NodePing has now added the ability to retrieve monitoring results in JSON and CSV format. JSON is ideal for scripting situations, such as creating your own dashboards or views of the data. CSV is great for loading the results data into your spreadsheets for analysis or creating reports for customers or management.

Both of these formats are available as extensions to our public reporting feature, which we added a while back. When you turn on public reporting, you are given a UUID that identifies that check. The same UUID can be used to access the data as a public report (you need to know the UUID, which gives you some control over who sees it, but does not require a login), as JSON output, or as a CSV download.

You can read more about these features and see some sample URLs on our Reporting page in the NodePing Documentation.

Monitoring password protected websites

Some of our customers have asked us to add basic authentication to our HTTP checks. They want to be able to check the availability of web pages that are protected from public access by a login. So, we have enhanced our HTTP and HTTP Content checks to support basic authentication.

This means that when you set up HTTP or HTTP Content checks in NodePing’s website monitoring service, you can now include a username and password in the URL. The format is username:password@host. We already supported both http and https requests and arbitrary ports in the URL. The following URL examples are all in a valid format for NodePing HTTP and HTTP Content checks (although these are fictitious, don’t actually use these URL’s in your checks), with this enhancement rounding out the list:

People who use this feature should be aware that HTTP basic authentication is not secure, which is one of the reasons we had not included it until now. This has required a small change to our Terms of Service to point out that we aren’t responsible for confidential information that is included in checks such as this. If you choose to include a username and password in your checks, you should take normal precautions to protect your data, including making sure that the login used for the checks is limited to no more access than is needed for the check, and avoid reusing passwords.

If you have any questions about basic authentication in HTTP or HTTP content checks, or about any aspect of our website monitoring, please don’t hesitate to ask us by emailing info@nodeping.com.

Server Monitoring from Europe

NodePing is happy to announce we’ve added a new region to our check locations. You can now choose to run your checks from our North American or new European regions… or both!

Website Monitoring

We’ve heard from many of our customers with a presence in Europe that a check location on that side of the pond would be a huge benefit. Thanks to our great providers, IntroVPS and RobHost, we added 4 new probe servers in the following locations:

  • London, England
  • Amsterdam, Netherlands
  • Falkenstein, Germany
  • Bucharest, Romania
Check out our FAQ for ip addresses and more information on our check locations.

We’ve also introduced the idea of a ‘default region‘ for your NodePing account. For new customers, you’ll set your default region when you sign up. Current customers have their default region set to ‘North America’. The default region can be changed in the ‘Scheduling‘ tab. When you create checks, they will be automatically run from your default region. You may, of course, decide to run any check from any region (including multiple regions and ‘worldwide’) by simply choosing the desired region from the check configuration when you create it. You can also change an existing check by selecting a different region in the check configuration at any time.

When you assign your checks to a region, they will be run from a random server in that region. If an ‘up/down’ event is detected, NodePing will immediately and automatically recheck from other servers in that same region. The number of rechecks is based on your configuration of the check – the default is 2 rechecks. After verifying the ‘up/down’ status on other servers in the same region, we’ll send out your configured email and SMS notifications.

Everything is included with NodePing so the new European region checking is already part of your flat-rate $10 a month subscription which includes your 1000 site/server checks, unlimited logins, contacts, contact groups, emails and international SMS. If you’re not already a customer, sign up for your free 15-day trial.

We’re already planning to add even more check regions to NodePing – Oceania maybe? South America? East Asia? Let us know in the comments what new region you’d like to see added next.

Contact Groups added to NodePing

We have been getting a lot of great feedback and suggestions from our users over the months since we launched the NodePing monitoring service. One feature that many people have asked for is the ability to group contacts and assign notifications to groups of contacts rather than just to individuals. Today we’re excited to announce that we’ve added Contact Groups to the service.

You can now create a Group, assign individual addresses or phone numbers to each contact group, and then set the Group to receive notifications for individual checks. So, for example, you could create a Developers group and a Systems group and have each assigned to different sites or servers you are monitoring. Then if the makeup of that part of your team changes you can change who belongs to the group without having to change each of the notifications.

One way we use this feature in the NodePing team is to assign SMS numbers to a group called SMS. Then we can easily set notifications to all of our phones together. For us, SMS notifications generally mean “Do something about this now!” and it makes it easy to assign key services to this notifications contact group. You could also use it to group all of a person’s contact methods easily for notifications that should get to them wherever they are. So for example you could create a “Shawn” group and include all of Shawn’s email addresses and phone numbers in that group. Then notifications will automatically be sent to all of his addresses.

As with contacts, there is no limit on the number of contact groups you can use in NodePing. You can mix and match contact methods in all kinds of ways, to suit your particular needs. We’re happy to now get to use this feature ourselves, and we hope it will further enhance the usefulness of our service to you as well.

There are a few smaller enhancements and adjustments in the release today as well, and we have more coming. Thank you to everybody who has chosen NodePing for their server and website monitoring. Thank you also to everybody who has given us feedback and suggestions. Please keep them coming!

When 200 Isn’t Enough

Website monitoring seems like a simple thing.  Most HTTP checks look for a response in the 200-399 range, 200 being the most common HTTP response meaning “Server responded correctly – here’s the resource you were looking for.”  But if you’re one of the millions of people or businesses that use Joomla, checking for 200 just isn’t enough.

Now don’t get me wrong, I like Joomla.  It’s a fine CMS and I’ve built many custom modules and plugins for it.  There are plenty of great websites running on it.  But you have to keep a close eye out for errors.

Today, one of our clients had an issue with the network storage on their server and the file system was quickly remounted in read-only mode.  This is expected and even prescribed behavior for mount point errors.  But MySQL, the database, didn’t like not being able to write to its tables and logs and quickly failed.  That, in turn, took the public website offline.  Joomla presented a big white page with the error message Database Error: Unable to connect to the database:Could not connect to MySQL.  The site was not working as expected… surely the website monitoring service would send an alert!  Nope.  The database access error was returned with an HTTP status of 200.  The web server was saying “Everything’s OK.”  No alert was sent from the basic HTTP check.  How embarrassing is it to get the news that your website is down on a call from a customer?

With NodePing, you can use our HTTP Content checks to make sure this doesn’t happen to your Joomla (or other CMS) site.  It works by simply searching for particular text within the returned HTML page.  If you add a check that searches for your copyright footer, it will fail as expected if the database is unavailable and the above error message was returned on the check.  You’ll receive your email or SMS notification that it’s down and can react quickly.  Conversely, if you know the exact error you want to avoid, you can run a negative content check so that it will alert you when the response of the check DOES contain the text ‘Database Error’.

With today’s complex web applications depending on many moving parts, it’s not enough to just check for a 200 response from a web server.  You have to dig deeper, and NodePing has just the shovel you need.

Making sure a web site is solid

There are a lot of things that go into making an Internet business successful. Layout, design, content wording, the effectiveness of graphics and how they are placed, the call to action, SEO, marketing and ads, product placement, pricing, visitor experience, check out processing… not to mention having the right product at the right time. None of that matters at all if your web site isn’t up.

Once you do all the work to get it all working together, you want to make sure it stays that way. Monitoring is a required part of running a solid business. It is a basic part of the infrastructure necessary to make sure your investment is going to continue to work for you. It isn’t something that is really optional when it comes to protecting the work and financial investment you put into building your site.

A server monitoring service checks to make sure things are working properly at all times. It isn’t just about making sure the server is up (although that is important). Monitoring should be comprehensive, and touch each part of your critical business infrastructure. Yes, you need to know if your server is sown. You also need to know if people are seeing database errors, or if their email to your customer service aren’t going through, and if your DNS is working properly. Each piece of your site should be checked to make sure everything is as it should be.

That means that one check on your front page isn’t really enough. Typically, a web site is running some kind of software that provides the framework of the site. Joomla, Drupal, and WordPress are all popular tools for this piece, but there are many others. Some businesses write their own platforms for this piece, but just about everybody uses something (even if it is custom built) that provides the framework for their content. If this piece breaks, it most often won’t show as down to simplistic site checks. The web server will still respond to requests, people will just see an ugly error message instead of your beautiful design. Your monitoring should check to make sure that your page is not just up, but working properly.

In fact, if your site uses several components that all need to be working together to pull off the overall effect, you should monitor each piece. That might consist of a shopping cart component (like osCommerce), a database and module for your inventory and product placements. Your blog needs to be working smoothly. If you serve images or media from a separate service or server you need to keep an eye on that too.

What does this look like in practice? Typically, you’ll want a basic HTTP check to monitor the entry page to your site. Then, you’ll want a content check on an image and other key elements that might break independently. For dynamic content served through modules or integration, you often don’t know in advance what that content will be. For those, a negative content check is in order, watching for an error or for messages like “0 items found.” For each of these checks, you’ll want to tune the timeouts to levels appropriate for your hosting and configuration.

All of this should be easy, and it shouldn’t cost you too much. You should be able to set it up, and then it should just work. This isn’t where you want to spend your time and energy. It should be boring stuff. It should be simple and dependable. If you are a small to medium sized business with a typical web site or three, and you don’t have a team of people dedicated to doing all the stuff we’ve discussed here, you should not have to spend more than twenty dollars a month on monitoring for your entire business infrastructure, and the whole monitoring setup should not take more than a few minutes a month of your time. If your monitoring provider is costing more than that or is more trouble than that, switch to someone else.

Many people think they can get monitoring for free. You can’t. The businesses that offer “free” services are paying ad costs around $10 per visitor to their site to get your “free” business. Don’t believe them when they say you can get a good value for that “free” plan. The “free” plans typically are for very few (usually one) check with a 15 minute or even one hour interval. That doesn’t do anything useful in making sure your site is working for your customers. Monitoring should be inexpensive, but it isn’t really free.

The biggest player on the block is Pingdom. Pingdom’s service is fairly similar to NodePing’s, but the five sites Pingdom provides for $9.95 (as of the date of this post) aren’t enough for your business. As we’ve discussed here, a small business with a web site already needs their 30 site plan for $39.95. As compared to many providers, Pingdom is a good deal. Compare that plan to NodePing’s $10 flat rate plan, and we think the value choice is clear.