Clients send events to Riemann.

Riemann clients speak Protocol Buffers over TCP and UDP. They can submit events to Riemann and query the index.

Write a client in your favorite language? Need help with the protocol? See the client implementors' guide, or drop me a line.

Clients

Client libraries to help you instrument your code.

C

Daniel Hilst wrote a client in C, supporting both events and queries.

Gergely Nagy wrote another client in C, supporting both events and queries, but with a different API and goals.

C++

bigdatadev wrote a client in C++, supporting both events and queries, RAII, exceptions, move semantics and STL containers.

C#

Blue Mountain Capital has written a C# client.

Clojure

Riemann-clojure-client is a small wrapper around the Java client.

Elixir

elixir-riemann is an Elixir TCP client.

riemannx is an Elixir client with support for UDP/TCP/TLS and index querying.

Erlang

Reify Health has published Zeta, an Erlang client.

Aircloak has also written erlang_riemann.

Daniel Kempkens maintains Katja, another Erlang client.

Go

The Riemann Go Client is a client supporting TCP, UDP, TLS, and querying the index.

Amir Mohammad Saied wrote Raidman, a client for Go.

bigdatadev wrote a client in Go, supporting both events and queries, and thread safety using channels.

Guile

Gergely Nagy wroteriemann-disguile, a Guile client library built on top of his riemann-c-client library.

Java

riemann-java-client provides a basic thread-safe TCP and UDP client built on Netty. It offers synchronous and asynchronous APIs and is used by Riemann internally. You can grab it from clojars.

mgodave's riemann-client is based on Netty and Java Futures.

Lua

Gergely Nagy wrote riemoon, a simple Lua client based on his riemann-c-client library.

Node.js

Derek Perez maintains the Node.js client.

OCaml

Dave Parfitt is working on riemann-ocaml-client.

Perl

Miquel Ruiz has written a Perl client, available on CPAN.

Python

If you're using Twisted, EagleEye offers a UDP transport with support for long and float metrics.

There's also borntyping's riemann-client, which supports UDP, TCP and TLS, as well as queuing events for delivery.

Gleicon has also written a Python client which supports submitting events over TCP and UDP, and querying the index.

You can instrument your Python code with Riemann through riemann_wrapper.

Ruby

The Riemann Ruby client is a threadsafe, auto-retrying client supporting both TCP and UDP. It also provides utility classes to help manage service state.

Digital Science's riemann-metrics gem forwards Rails ActiveSupport notifications to Riemann.

Users of the adhearsion telephony framework might appreciate ahn_riemann.

Rust

Ning Sun is building a Rust client, using Tokio.

Scala

Rached Ben Mustapha is building a Scala client, providing strong typing, an asynchronous API (using Akka under the hood) and a DSL.

Toolbox

Tools, programs, and plugins to monitor existing systems.

Riemann-Tools

Riemann-tools is a Ruby gem with little daemons to monitor key systems like host health, Riak, and more. You can require it as a library to build your own pollers, in just a few lines of code.

Cassandra

Blue Mountain Capital has written a Java tool to monitor Cassandra with Riemann.

Chef

A Chef Reporting Handler sends information about your chef run to Riemann.

Collectd

The Write Riemann plugin for collectd submits collectd values as events to Riemann.

Crabby

Crabby is a web page performance monitor that loads your pages in a real browser (headless Chrome) and reports various page performance metrics (DNS resolution time, time-to-first-byte, DOM rendering time, etc.) to Riemann. It also reports HTTP response codes as state events.

Ganglia

Ganglia can forward events to Riemann.

Graphite

Riemann is able to listen for events sent over carbon's plaintext protocol. This allows to hook in a wide range of popular tools, such as statsd or jmxtrans.

HBase

Riemann-hbase forwards some JMX metrics from an HBase server to Riemann.

Himpy

himpy is a multithreaded SNMP poller, with very low system overhead. It publishes the output of its SNMP polls to a riemann host. A great fit when you need some data from these pesky SNMP-only proprietary network devices.

JMX

The Clojure fork of riemann-jmx can monitor any number of JVMs, across varying hosts, and submit their metrics to Riemann. A JRuby riemann-jmx is also available.

JVM profiling

The Riemann JVM Profiler lets you profile hundreds of JVMs in soft-real time.

Kiries

Kiries is a pre-packaged integration of Kibana, Riemann, and ElasticSearch, together with management tools.

Logstash

Logstash's Riemann output plugin sends log events to Riemann.

Monitorlib

Krux's monitorlib is a Python library for creating monitoring scripts and plugins. It supports sending events to Riemann.

Mysql

Riemann-mysql monitors a mysql server's replication status.

Nagios

Riemann can send events to nagios (using nsca) and Riemann-ocsp can send events from nagios.

Puppet

Riemann-icmp-ping monitors hosts from puppet via ICMP ping. Puppet-riemann sends puppet reports to Riemann.

Riemannq

riemannq lets you query Riemann on the command line, and spits out JSON responses.

Riepete

Riepeteproxies statsd metrics to Riemann.

Run-and-report

This Python script runs a shell command and sends specially formatted events to Riemann.

Syslog-ng

This syslog-ng module sends log events to Riemann.

Tensor

Tensor is a daemon for writing pluggable pollers that forward their results to Riemann. It's written in Python.

Wireshark

Wireshark, a tool that captures and analyzes network packets, has a dissector for Riemann's protocol since version 1.99.1.

Plugins

Additional functionality within riemann provided by external libraries

riemann-acknowledgement

Provides the ability to acknowledge hosts & services temporarily, suppressing alert sending. Acnowledgements are handled through a simple web interface. https://github.com/exoscale/riemann-acknowledgement

riemann-extra

A collection of plugins for often-met use cases:

  • collectd: provides useful metric rewriting facilities for events coming from collectd.
  • thresholds: update event state based on a given threshold map.
  • python: handle events coming from https://github.com/exoscale/python-riemann-wrapper
https://github.com/pyr/riemann-extra

riemann-cond-dt

A plugin for verifying that a condition on an event is true during a time period. https://github.com/mcorbin/riemann-cond-dt-plugin

samplerr

Round robin timeseries middleware based on riemann and elasticsearch https://github.com/ccin2p3/samplerr

riemann-discovery

Basic service discovery for Riemann. https://github.com/mcorbin/riemann-discovery/