The difference between OpenTSDB and Graphite

graphitemetricsmonitoringopentsdb

As far as I can tell, here are the main differences:

  1. OpenTSDB does not deteriorate data over time, unlike Graphite where the size of the database is pre-determined.
  2. OpenTSDB can store metrics per second, as opposed to Graphite which has minute intervals (I'm not sure of this, Graphite docs show retention policies which stores metrics every minute, but I don't know if this is the minimum unit of time we can play with)

I want to make an informed decision about which tool to use in order to store metrics, have I missed any other differences in these 2 systems? How performant/scalable are they?

Bonus Question: Is there any other time series system I should look at?

Best Answer

Disclaimer: I wrote OpenTSDB.

I would say that the biggest advantage of Graphite seems to be superior graphing capabilities. It offers more graph types and features. Deployment complexity is also probably a bit lower with Graphite, as it's not a distributed system and thus has fewer moving parts.

OpenTSDB, on the other hand, is capable of storing a significantly larger amount of fine-grained data points. This comes at the cost of deploying HBase, which isn't that big of a deal to be honest. If you want to get real-time data down to the second with >>10k new data points/s, then OpenTSDB will suit you well.

Some info about our current scale at StumbleUpon (these numbers generally double every 2-3 months):

  • Over 1B new data points per day (=12k/s on average).
  • Hundreds of billions of data points stored.
  • Less than 2TB of disk space consumed (before 3x replication by HDFS).
  • Read queries are generally capable of retrieving, munging and plotting over 500k data points per second.