Riemannx - A riemann client with UDP support

Hey all,

I recently ran into some performance issues with the latest (and only) elixir-riemann client and was sad I couldn’t find a way to configure pool sizes without changing the code, I also wanted UDP support so decided to take the brilliant parts of elixir-riemann and build a new library called riemannx.

  • Has connection backends allowing you to choose between Combined, UDP and TCP connections.
  • Combined will favour UDP until the byte size goes over the max_udp_size.
  • Uses poolboy instead of honeydew (an old favourite of mine from the erlang days)
  • Fully configurable so you can control your pool sizes and max overflow etc.

Right now it’s in beta and at version 0.0.1 I am looking for some feedback and maybe some early adopters who want to try it out as an alternative and help bug hunt - I have run load chart comparisons and have seen a large improvement already!



Just a quick note here that the client now supports TLS and index querying. I have also focused a LOT on documentation since this last post :).



We’ve been using this library at the company I work for for months now and have experienced no issues thus far! As a result of months of usage, profiling and with more of our projects being migrated to Elixir a lot of features have been implemented - here are some of the best:

  • Batching support using any protocol (UDP, TLS, TCP or combined).
  • time_micros a new field added to Riemann is supported for higher time resolution.
  • Add your own tcp/udp/ssl opts to the underlying :gen_x/:ssl connection.
  • When using the combined setup you now have more control over worker spread between UDP and TCP.
  • The ability to store your settings anywhere, allowing you to have a company-wide setup instead of sys.configs for every service.

Our test suite also extensively tests every protocol using propEr as well as the batching functionality. We’ll be trying to keep up with new Riemann developments but contributers would be a godsend as maintaining this on my own will become difficult.