As somebody who runs a few sites I like to keep an eye on them and make sure they’re up and responding correctly.
My go-to for years has been Pingdom but this year they gutted their free service so that you can now only monitor every 5 minutes.
The free service with Pingdom wasn’t great to start with – limited alerting options and you can only monitor a single endpoint – so I went searching for something better as $15 a month to monitor a couple of personal low-volume sites is not money well spent.
I’ve played with the Google Cloud Platform offerings for a while and like many others theirs includes a monitoring component called unsurprisingly Google Cloud Monitoring.
Right now it’s in beta and is free and is based on StackDriver which was acquired by Google in 2014. I can imagine more integration and services will continue to come through as they have a complete product that also monitors AWS.
You can create HTTP/HTTPS/TCP/UDP checks and while it was designed to monitor the services you’re running on Google Cloud will happily take arbitrary URLs to services running elsewhere.
Checks can be run every 1/5/10 or 15 minutes, use custom ports, look for specific strings in the response as well as setting custom headers and specifying authentication credentials.
Each URL is monitored and the performance reported from six geographical locations split between east, central and west USA as well as one or Europe, one in Asia and one in Latin America. For example:
- Virginia responded with 200 (OK) in 357 ms
- Oregon responded with 200 (OK) in 377 ms
- Iowa responded with 200 (OK) in 330 ms
- Belgium responded with 200 (OK) in 673 ms
- Singapore responded with 200 (OK) in 899 ms
- Sao Paulo responded with 200 (OK) in 828 ms
Here’s where Google’s offering really surprised me with alerting options not just for SMS and Email but also for HipChat, Slack, Campfire and PagerDuty and you can specify a number of them together and mix and match them with different uptime checks etc.
Like Pingdom if the endpoint being monitored goes down an incident is opened that you can write details (comments) into and also like Pingdom it the incident is closed once the endpoint starts responding again.
Graph & dashboard
The cloud monitoring product has a configurable dashboard that like the rest of the product is really geared around monitoring Google Cloud specific services but there is an uptime monitoring component that can still provide some value.
I’m very impressed with this tool given the lack of limitations in a free product and will be using it for a bunch of my sites for now bearing in mind however that it has no SLA right now!
Any other recommendations for free URL monitoring?
A couple of weeks ago I ordered the latest third-generation of the DAS Keyboard – my second generation packed away back in Guernsey and the Alps-switched one from DSI incapable of reliably registering more than 2 keys on USB.
Being that I’m fixed on the European keyboard layout (our enter key is double height with the backslash moved down next to Z) I had to order from Germany, specifically the guys over at getDigital.de
When the keyboard hadn’t arrived a couple of weeks later I headed off to the tracking link at DHL Germany.
As a customer all I’m interested in is:
- Where is the package now?
- When will I have it?
A good developer would understand and deliver this. Instead DHL present:
|Addressee:||Item destined for abroad|
|Status:||Arrival at inward Office of Exchange in the Country of Destination|
|Status from:||19.08.08 17:07|
|Process:||Arrival at inward Office of Exchange in the Country of Destination|
Everything here screams bad systems, poor understanding and disregard for the customer. They aren’t giving the customer what they want, they’re giving the customer a little of what they have and are not even reinterpreting the data from the customers perspective.
This isn’t untypical but neither of my questions have been answered and the item is over the delivery times so I need to go further. Hitting the contact button next to the “piece-number” takes us to:
|For further information, please call us on
0 18 05-345 22 55 *
(14 cent per minute within german fixed network)
Monday – Saturday between 7 a.m. and 10 p.m.
Sundays and public holidays between 9 a.m. and 6 p.m.
* only within Germany
or per contact form (except for investigation inquiries)
If your shipment has not arrived at the recipient within 6 days, you have the opportunity to fill out an investigation inquiry dircectly via your PC.
Wow, so the primary point of contact for an international delivery is a number that can only be called from Germany. Useless.
So we can now choose a per-contact form or an investigation form. Okay, let’s go to the investigation form. Let’s try that.
The web page you would like to access cannot be viewed at this time.
We apologize for any inconvenience. Perhaps it is due to a connection problem, perhaps the link is no longer valid or you have directly selected a page that no longer exists in the specified directory
Wow, DHL Germany really don’t have things under control here. Let’s flip over to DHL’s main site and take it from there.
First of all we need to chose our country, currently Canada… Now let’s enter the reference number we’ve been using on DHL Germany’s web site and “Shipment/Waybill not found”.
Okay, I’m a persistent fellow, let’s give DHL Canada a call and find out what’s going on… I give the reference number to the woman at the other end and “that’s too long”. Hmm, tell her it works on DHL Germany web site, she goes to the web site and tries it out and confirms it does but that it doesn’t work on their system. She tries a few searches on my name, from Germany to Vancouver, nothing, nada, zip and suggests I try contacting DHL Germany or the sender to get a “proper” reference number.
The real icing on the cake of course is the “About DHL” page states:
DHL Express offers seamless service worldwide.
I can see a very big seam here between Germany and Canada.
Expertise around the globe.
Not much use when the people with that expertise are sat behind a number you can’t call from outside their country.
One world. One express and logistics company.
But not one system or tracking mechanism.
On Saturday an explosion at ISP ThePlanet took this site offline and it remained like that for 48 hours whilst power and structure were restored to the 4,000+ affected servers.
It’s unfortunate it happened when the site got some DotNetKicks and StumbleUpon love for Envy Code R but at least this isn’t a commercial venture losing money to such an incident – if it was I’d have a warm standby somewhere else – something many of ThePlanet’s commercial customers didn’t.
If downloads and images aren’t working for you then you’ll need to clear your DNS cache which may help the problem depending on the cache at your forwarder.
Windows ipconfig /flushdns
OS X Tiger lookupd -flushcache
OS X Leopard dscacheutil -flushdns
It’s been a few weeks since I upgraded to WordPress 2.5 and whilst the upgrade went well it hasn’t been all plain sailing.
New and changed
Manage files removed
The Manage > Files administration function has been silently removed despite still appearing in the on-line documentation.
If you don’t have FTP access this was the only way to modify your .htaccess and other important files without installing additional software. I can understand such a powerful function could be abused but an option to turn it back on or even a warning about its removal in the upgrade notes/read-me would have been useful.
Hopefully somebody will repackage the old functionality into a plug-in.
New look administration
I’m not sold on the new administration theme look but Dean J Robinson has crafted a plug-in called Fluency that refines the styling.
Generally usability in the administration user interface is better, the write post screen makes a lot more sense and the category & tag management is more logical.
Auto update plug-ins
I love this new feature, it shows you when a new version of a plug-in is available and then lets you automatically update. It isn’t without issue however, specifically it:
- overwrites modified local versions without warning
- may go wrong (it “upgraded” my wp-PostViews to wp-DBManager)
- does not provide a roll-back or revert facility
Still it’s a v1 feature and I’m sure it’ll get some refinement in 2.6.
Live search broken (Redoable theme)
I’m not 100% happy with the output from Sociable right now but that can wait until my new theme is finished.
These weren’t caused by the 2.5 upgrade but once you start messing with one thing there’s always that urge to fix other things you know aren’t right.
Whilst testing my site I found XHTML compliance was broken. It turns out that Joost’s Google Analytics for WordPress incorrectly rewrites the hyperlinks when they parent another element such as an image. Putting on my PHP hacking hat I managed to fix it by editing the plug-in and changing the last line of ga_parse_link to:
return '<a '.$matches.'href="'.$matches.'//' .$matches.'"'.' '.$coolBit.$matches.'>'.$matches.'</a>';
My feed subscriber counts have been bugging me for a while as they jump up and down seemingly at random. In fact, it can be traced down to two things:
- If you base it on less than 5 days of activity you’ll get the weekend dip
Solution: Count 7 days worth of individual subscribers
- Google Reader etc. sometimes stop passing the subscriber count from time to time
Solution: Use single most recent multi-subscriber header for each service/feed in the last 30 days
If you want to do the same you need to edit the Feed Statistics plug-in and change the how_many_subscribers function to:
$q = "SELECT subscribers, CASE WHEN subscribers = 1 THEN identifier ELSE CONCAT(identifier, feed) END AS ident FROM ".$table_prefix."feed_subscribers WHERE ((subscribers = 1 AND date > '".date("Y-m-d H:i:s", time() - (60 * 60 * 24 * get_option("feed_statistics_expiration_days")))."' ) OR (subscribers = 1 AND LOCATE('###',identifier) != 0 AND date > '".date("Y-m-d H:i:s", time() - (60 * 60 * 24 * get_option("feed_statistics_expiration_days") * 3))."' ) OR (subscribers > 1 AND date > '".date("Y-m-d H:i:s", time() - (60 * 60 * 24 * 30 * 3))."' ) ) ORDER BY ident ASC, date DESC";
This should help but it’s not ideal with individual readers counted more than once if they change IP and groups counted as one if they are sharing an IP/NAT.