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#

Blue Mountain Capital has written a C# client.

Clojure

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

Erlang

Reify Health has published Zeta, an Erlang client.

Aircloak has also written erlang_riemann.

Go

Amir Mohammad Saied wrote Raidman, a client for Go.

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.

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.

Bernhard is Banjiewen's Python client. You can install it with pip install bernhard

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.

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.

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.

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.

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.

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.

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