A Riemann client for Elixir, surprise!
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
config cosmetic cleanups Dec 11, 2015
lib bump honeydew Aug 21, 2018
test Allow events to be sent with no metric Aug 4, 2017
.gitignore initial commit Apr 25, 2015
.travis.yml travis Aug 21, 2018
LICENSE initial commit Apr 25, 2015
README.md Version 0.1.6 Aug 21, 2018
mix.exs Version 0.1.6 Aug 21, 2018
mix.lock bump honeydew Aug 21, 2018


Riemann Build Status

Riemann is (surprise!) a Riemann client for Elixir.

Getting Started

Chuck this into your project config:

defp deps do
  [{:riemann, " ~> 0.1.6"},

You'll also need to start the :riemann application, either manually (Application.start(:riemann)) or in your mix.exs application config.


Sending Events

Events are anything that implements the Dict protocol, so you'll likely want a Keyword list or a Map.

If you want to send custom attributes, stick them in the attributes key as a Dict. You can add in the state key, if you want to add a state to your event.

Send your events with Riemann.send/1 and Riemann.send_async/1, blocking and non-blocking (just call and cast). They both expect an event, or a list of events.

Riemann.send(service: "my awesome app", metric: 5.0, attributes: [build: "7543"])

  [service: "my awesome app req", metric: 1, state: "up", attributes: [build: "7543"]],
  %{service: "things in queue", metric: 100, attributes: [build: "7543"]}

Querying for Events

To ask the server for a list of events matching a query string, use Riemann.query/1.

{:ok, events} = Riemann.query('service ~= "my awesome"')
#=> events = [%{attributes: %{"build" => "7543"}, description: nil, host: "dax",
#               metric: nil, service: "my awesome app", state: nil, tags: [],
#               time: 1430329965, ttl: 60.0},
#             %{attributes: %{"build" => "7543"}, description: nil, host: "dax", metric: 1,
#               service: "my awesome app req", state: "up", tags: [], time: 1430329965,
#               ttl: 60.0}]


Just toss this snippet into your environment's config:

config :riemann, :address,
  host: "",
  port: 5555

You can also set a hostname for events to override the default (the machine's name).

config :riemann, event_host: "app host (staging)"


  • Only TCP is supported, read this.

If you want UDP, feel free to submit a PR (with tests 👺) or bug me to implement it.


See the LICENSE file. (spoiler: it's MIT)