If you are managing servers, whether its 100 servers in your own data center or a single cloud VPS server, monitoring server performance is important and shouldn’t be overlooked. With the right monitoring and alerting in place you can resolve issues before they impact your systems. This is all the more critical when you are hosting Internet-facing websites. If you run out of disk space or CPU utilization is at 100% your website performance can tank or even worse, it’s completely down. In the past your options were limited, you either implemented an off the shelf monitoring system, an open source system like Nagios, or wrote your own scripts to perform check the server. Today we’ve got a lot more options available. One such option is a cloud-based service called NIXStats. NIXStats is a hosted solution, available at https://nixstats.com.
NIXStats is primarily a Linux server monitoring tool, but they also offer Domain Monitoring and a Public Status Page service. Currently, they are in a Public Beta and the entire service is available free of charge. For the time being that’s a great deal, as similar services charge $5 – $10 a month. I started looking at NIXStats for this article and was so impressed I moved all my monitoring over to it.
Getting Started with NIXStats
The setup is drop dead simple. On nixstats.com signup with and email address and password. After confirming your email address you’ll be able to login to the dashboard. On the dashboard, you’ll see charts for Server load as well as Website response times. You can further drill down into Server details or Website details.
Adding a new server or website is pretty easy. Go to the Servers tab and at the bottom, you’ll be given the command to run on your server to install the agent and register with NIXStats. I used the Python agent on my servers and it seems to have worked pretty well. The install process ran smoothly on all of my servers. It takes a few minutes and you will see data populating. Data is automatically refreshed every minute.
Adding a website to be monitored is even easier. Provide the DNS name and select HTTP or HTTPS. You can also choose how often to check, what data center to check from, and an alias.
On the Servers tab, you’ll see a dashboard of each of your servers, with a card view of each server’s stats. I really like the look of this page, it gives you a good overview of all your servers. From this view, you can also see any recent alerts on each server.
Drilling into an individual server lets you see detailed charts for CPU, Memory, Disk, Load Average, and Network. This view also shows you alerts for the server, current Processes, and Server Details. From there you can dive into each of those areas and see further detail. For example, you can view CPU history for the past 2 months.
One feature I’ve found really useful is the ability to look at active processes on a server. You can then look at the details for an individual process, and look at details like Memory usage for that process over time. This is a great troubleshooting feature or just a way to understand your servers better.
Similar to the Servers tab, on the Domain tab, you’ll see a dashboard of all the websites you’re monitoring and they’re health. The focus is on response time, and NIXStats is tracking the following metrics:
- Time to Resolve DNS
- Time to Connect to Server
- Time to Receive First Byte
- Time to Fully Load
You’ll also see any previous alerts for slowness, as well as a long-range historical view of months where you had performance issues.
NIXStats Status Pages
Another nice feature in NIXStats is the ability to create a Status Page containing your monitoring metrics. This gives you a link that you advertise on Twitter and contains your service availability. Since its hosted on NIXStats, it’s independent of your servers. The Status Page doesn’t contain a ton of details but provides a simple view of website and server health. You can customize the logo and attach a Twitter feed. You can also setup your own DNS record to CName to the Status Page.
I created one for Wire & Frost in about 30 seconds, http://statuspage.wireandfrost.com.
Notifications is an area where NIXStats does well but also still has some rough corners. Currently, NIXStats reports sending alerts to the following destinations:
- Slack Channels
The downside is that I found the initial setup a little cumbersome. It took some tweaking to get notifications to be sent out for server alerts. Everything works, but the process was slightly confusing in my opinion.
I contacted NIXStats with some questions about their service. Vincent from NIXStats was kind enough to provide some answers about NIXStats.
Can you provide an overview of how you created NixStats? What language(s), frameworks, databases?
NIXStats runs on PHP, MongoDB, RabbitMQ, Python and some bash scripts.
How many users do you currently in your beta?
Currently 3,100 users since start of beta about 1.5 years ago.
What server operating systems do you support?
We currently support the latest major distro’s (debian, ubuntu, centos, redhat). A new monitoring agent is under development and should be available soon, it will be distributed thru the operating systems’ package managers repositories. The new monitoring agent also has Windows support.
NixStats offers a lot of great functionality, currently for free. Do you have plans to become a paid service soon? If so will you have plans to offer some form a free service?
As soon as NIXStats is production ready we’ll introduce paid plans but will keep a free plan. Beta users will get a discount on the plans.
Any new features that are currently in development?
Ping and tcp port monitoring are being developed right now.
Clearly, NIXStats is a great cloud monitoring solution for websites and servers. If you’re a small shop or a startup, using NIXStats is probably a no brainer. If you’re an enterprise organization, it may be lacking some capabilities you need. I’m hoping this service continues to evolve, and I’m looking forward to where they go.