Facebook’s Prineville Data Server Center

Creating PULSE — A developer-friendly server monitoring tool (Part 1)

This is part of a weekly development blog series, where I will document the creation of an application from the initial idea through to its deployment on a scalable architecture. Even as an experienced developer, I find these stories to be interesting and I usually pick up a tip or two, so if you’d like to come along, and hopefully benefit in some way, let’s dig in!

NOTICE: Pulse has now launched and is available to use. You can create an account by visiting https://pulse.alphametric.co

While developing a new app at Alphametric, I realised we were going to need to set up a whole bunch of client servers. This meant we would require some sort of server monitoring tool to ensure everything runs smoothly.

A quick Google search and an hour or so of preliminary research revealed the ugly truth… what was needed, was not available. Okay, that’s a bit of an exaggeration, so let me explain why I reached that conclusion.

  • Firstly, most server monitoring tools available are expensive, as in they cost about as much as the VPS itself. Since our margin per app license is not that significant, this would all but negate our profit.
  • Secondly, they are total overkill when it comes to their feature set. I don’t need deep analysis of network packets going in and out between 3 and 3:30am, and my guess is, that most independent developers / small software houses don’t need that functionality either.
  • Thirdly, their user interfaces are very industrial and not at all friendly. You need to be a seasoned DevOps person to know your way around them.

These results led to a discussion… if Alphametric is in this boat, then there’s a good chance that other developers are too. My thinking was, that they either cough up the dough, or they use an even less-friendly open-source option.

Alternatively, maybe they just don’t bother and figure they’ll fix the problem if and when it occurs. I have no evidence to support this, but my guess is, that this is the more likely scenario in the majority of cases.

It became pretty clear that there was a need for...

A friendly, straightforward, affordable server monitoring tool, specifically designed for developers.

So, with that in mind, we’re going to build it!

One of the biggest issues I see with apps, is that they try to cater for everyone and end up becoming these monolithic systems, which are so abstract that no one really knows how to use them, or even what they’re for… I’m just as guilty of this. I’ve made products in the past that have failed for this exact reason.

So, as a starting point, I looked into what would actually be required to meet OUR needs. As it turned out, our MVP involved keeping tabs on the basics — CPU, Memory, Storage & Networking. We also need to ensure that a few key services that our app depends on (MySQL, Redis & Nginx) are running.

I’ll need to add support for many others services (Memcached, Beanstalk, Apache etc…) before launching, but that’s something that can be done throughout development and via updates after its release.

Next, we’ll need a fairly robust notification system that will allow developers to create alerts for each item they want to monitor e.g. if CPU usage hits 90% send a message through Slack, or if free disk space is less than 5 GB, email me. It must also be smart enough so as not to flood a developer’s inbox.

I intend to ship Pulse with a great UI, but since developers may wish to build their own dashboard, Pulse will also need to ship with an API allowing access to the latest stats, as well as daily, weekly or monthly history.

We’ll also need all the usual bells and whistles of any viable SaaS app — authentication, billing, technical support etc.

Alphametric is a Laravel ecosystem-based company. With first class offerings such as the framework, Forge for server management, Horizon for queues, Dusk for browser tests, and so much more, it really provides everything we could want on the code side of things.

Beyond that, Pulse will be relying on MySQL for its database needs, Redis for caching, BugSnag for error management, Stripe for billing and Linode for its virtual private servers.

If you’re interested, I’ll be developing Pulse on a 27inch 2018 iMac using Visual Studio Code, Sequel Pro & iTerm.

The first thing I’ll be building, is the authentication, user registration, password management, account dashboard and billing system. Getting that all done in a week might be pushing it, but we’ll see how it goes…

I hope you’ll be interested in following this exciting journey and that it will provide some insight you find useful.

NOTICE: Pulse has now launched and is available to use. You can create an account by visiting https://pulse.alphametric.co

I’m aiming to post weekly updates on the development of Pulse, so please follow me here on Medium to keep on top of it.

In addition, I’ll be posting more regular tweets with screenshots, code samples and other bits and pieces as the development process continues, so be sure to follow me on Twitter for all those goodies!

Thanks for reading, and if you have any questions, feel free to leave a response here, or on Twitter and I’ll aim to get you an answer ASAP 🙂

Founder and developer of https://getcrest.app. Most of the time, I’m working with PHP, Laravel, Vue and TailwindCSS.