Node.js Client for Metricfire

We’re big fans of Node.js here at Metricfire – our open source highcharts rendering service Dali is written in Node and we’ve been happily using it in production for several months. As I prepared this blog post, my co-founder Charlie was giving a talk over the other side of the world at the first Node JS Dublin meetup and it seems as good a time as any to announce our Node.js client for Metricfire.

As with our other clients, this is a fast non-blocking client that will not compromise the speed of your application and allow you to send thousands of events per second.

We’ve already found our Node client useful – it helped us identify a memory leak:

This sort of “up and to the right” behaviour is desirable in many things, but not memory usage. The code for getting this data out of Node and sending it to Metricfire is very simple:

Our node.js client can be installed right from npm:

$ npm install metricfire

If you like documentation, you can find it on docs.metricfire.com, along with docs for all the other client libraries and the HTTP API.

Check out our free trial and see how you can easily measure and graph what’s happening in your application.

New Feature – Metric Deletion

Behind the scenes in Metricfire we’re constantly at work building new features and improving old ones, but a feature we’ve deliberately held back on until now is the ability to delete a metric. Our philosophy is that you should measure everything that your application does, and figure out the most useful data points later. That said, it’s human nature that mistakes will happen when creating a metric – typos in a metric name, test sites sending data you’re not interested in, or anything else that creates metrics that aren’t useful to you.

We’ve finally added an interface to quickly and easily determine which metrics are not used, and then delete them. A simple spark line chart will show whether the metric has been collecting data, and a summary screen will tell you whether it’s used on any graphs before you make a decision to remove it.

Just select “Apps and Data” from the main navigation menu and you’ll see all your applications, metrics, and a spark line of the data from each.  See our 30-day free trial and try it for yourself.

 

 

Announcing pricing and general availability!

Image credit: stickermule.com

For the last few months we’ve been working with users on our beta list to tweak our features based on their feedback. We’re now ready to open our 30-day free trial to the public, and release details of our prices.

We’re building a tool aimed at developers who need the flexibility of instant metrics, but who either don’t want the trouble of setting up a server, or are in an environment where it’s just not possible for them. We have three paid plans, and we’re willing to talk to non-profits, students, or open source projects about free accounts.

Our developer plan is designed to provide enough metrics and capacity for any small project, with all the benefits of our fast client APIs, our HTTP API and embeddable graphs.

Our small business plan is designed to compete with the cost of buying or renting a server, then setting up a metrics tool, securing it, ensuring it’s backed up properly, tweaking the inevitable things that happen to a server over the course of a year and all the time that a sysadmin or devops person could be spending automating something else.

Our enterprise offering is designed as a fully hosted metrics service to rival a custom system, and it will handle as much as you want to send us. (Billions of data-points per day is no problem – talk to us!)

Some thoughts on why you might want to use a hosted version:

Take the cost of setting up an Amazon server which needs to run 24/7, getting a dedicated server rented, or racking and co-locating one of your own. Add on the time it takes your sysadmin to evaluate, install and then configure whatever metrics system you eventually decide on. Even if they’re some sort of ninja rock-star unicorn, that’s probably going to be a day of tinkering. You want it done right though, so they have to spend another day making sure it’s backed up properly, and that there’s a redundant copy somewhere so that all your delicious metrics don’t disappear into the void when something goes wrong. You’ve possibly doubled your server costs, and tacked on several expensive days of salary, but it’s done.

Now you’re finally ready to send some metrics! Fast-forward six months down the line and unfortunately you’ve run in to some sort of problem but the person who set up the metric collector is busy working on that important normal stuff that keeps your company making money. Or if we throw another spanner in the works, maybe they left the company, and someone now has to spend a few days figuring out how the system works – essentially starting from scratch?

We’ve been there, and it’s exactly why we started Metricfire. Replace the mess above with quick integration using a fast API that handles all the scaling, replication, and backups for you and save on time and money. We think it’s the way to go (even if we’re a little biased…). Try our free 30-day trial.

Thanks to the beta testers!

It took us a long time to get here, and we have to thank our beta testers for helping us get this far. We’re immensely grateful for your time and all the effort you put in to help us improve Metricfire. We’ve offered a discount via email to anyone who signed up to our beta, as well as stickers to anyone who wants ‘em (while they last…),  just drop us a mail with where you want your stickers sent!

- Dave and Charlie

 

 

New Feature – Graph Image Embedding

While we’re delighted if you want to use our dashboards for your reporting needs, we also realize that a lot of people have their own internal reporting and dashboarding setups, or just want to share a graph quickly with someone else.

Metricfire embed menu option Next to your graph’s action menu, you’ll find the new ‘Embed’ option, which will give you a URL to a static image of that graph. You can configure some simple options such as the image size and the format – we’re providing the graph data in PNG or SVG formats for you to play with. This URL is unauthenticated and you can use it anywhere, like embed it into your own dashboards, your back-end admin system, or put it on a big TV in your office.

The tech side of it is a slight departure from the rest of our codebase in that we’re using server-side javascript in the form of node.js to convert our existing front-end graphing tools into image data. What’s amazing (to me at least) is the amount of code reuse; with minimal code changes to our front-end javascript we can keep the rich interactive graph stuff in powerful browsers and also get simple images to embed anywhere.

Here’s what the embedding interface looks like:

Using the URL provided you get access to the resulting graph as an image:

Metricfire - Example embedded graph

 

 

 

 

 

 

The ability to embed graphs wherever you want is just one of many new features currently undergoing testing. Check out how we can help you measure application performance.

37Signals on Metrics

37signals Logo37Signals had a fantastic blog post last week detailing their internal metrics service they use for all their products. After using a larger stats package, they moved to a custom system for all of the reasons that we’ve created Metricfire:

While we still use some of those tools today, we found ourselves wanting more – more information about the distribution of timing, more control over what’s being measured, a more intuitive user interface, and more real-time access to data when something’s going wrong.

 

We’re pleased to see that the reasons they moved away from existing tools, and the design decisions they made in their own system are not a million miles away from our own. We’re also using stats delivery over UDP, and instant aggregations of min, max, sum, observations, standard deviation – as well as data transformations baked in which make other statistical information like moving averages available without you having to mess with code.

We started Metricfire to solve the ‘Everything in One Place’ problem where you try to get several systems designed for different purposes working together to produce a holistic service that covers the whole problem. Generally, it either doesn’t work or just takes too long and leaves you with plenty of quirks to work around. We’re taking care of the entire chain, from where you want to know how a certain part of your app is performing, right up to the point at which you wake someone up in the middle of the night.

It’s interesting to get this sort of perspective (and validation) from a company like 37Signals. Let us know how we can help you get the same sort of application monitoring for your own systems.

New Features – Data Transformations and Graph Cosmetics

We’re rolling out new features at a regular pace here at Metricfire, and we’ve just added two we’re particularly pleased with – Data Transformations and some basic graph cosmetics.

The transformations option allows you to alter each point of data from the metrics you’ve sent to us in a way that’s useful to you.

These options let you:

  • scale – Apply a coefficient of your choosing to each point
  • timeshift  – Retrieve the data for this metric from a period of time in the past (Seconds, minutes, hours, days, months)
  • derivative – Calculate the change between each value
  • integral – Add successive values together
  • movingaverage  – Calculate a moving average over a supplied time period.

For example, let’s say you’re comparing two different hypothetical metrics with vastly different ranges:

  • The bytes received per second over your network interface
  • The number of packets received per second over the same interface

At their base levels, mapping this data is not very useful – the data units are too different to make sense:

The blue line representing the packets per second has a useful relationship to the bytes received but at this resolution you’ll never know.

We add in our Scaling factor – our new interface will highlight correct syntax as you type:

Scaling the data to ranges closer to each other will give you something that will let you compare:

Well, that makes more sense...

Cosmetic enhancements

In addition to things to allow you to manipulate the data you’re sending to Metricfire, we’ve added the ability to customize the look and feel of your graph:

  • Line width and Color
  • Line vs Stacked Area Graphs
  • Display / Hide the graph legend

This can produce some attractive-looking graphs, (even if the end result in this case is only good for trolling your co-founder).