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.
Client libraries to help you instrument your code.
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.
bigdatadev wrote a client in C++, supporting both events and queries, RAII, exceptions, move semantics and STL containers.
Blue Mountain Capital has written a C# client.
Riemann-clojure-client is a small wrapper around the Java client.
elixir-riemann is an Elixir TCP client.
riemannx is an Elixir client with support for UDP/TCP/TLS and index querying.
Reify Health has published Zeta, an Erlang client.
Aircloak has also written erlang_riemann.
Daniel Kempkens maintains Katja, another Erlang client.
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.
Gergely Nagy wroteriemann-disguile, a Guile client library built on top of his riemann-c-client library.
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.
Gergely Nagy wrote riemoon, a simple Lua client based on his riemann-c-client library.
Derek Perez maintains the Node.js client.
Dave Parfitt is working on riemann-ocaml-client.
Miquel Ruiz has written a Perl client, available on CPAN.
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.
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.
Ning Sun is building a Rust client, using Tokio.
Rached Ben Mustapha is building a Scala client, providing strong typing, an asynchronous API (using Akka under the hood) and a DSL.
Tools, programs, and plugins to monitor existing systems.
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.
Blue Mountain Capital has written a Java tool to monitor Cassandra with Riemann.
A Chef Reporting Handler sends information about your chef run to Riemann.
The Write Riemann plugin for collectd submits collectd values as events to Riemann.
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 can forward events to Riemann.
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.
Riemann-hbase forwards some JMX metrics from an HBase server to Riemann.
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.
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.
The Riemann JVM Profiler lets you profile hundreds of JVMs in soft-real time.
Kiries is a pre-packaged integration of Kibana, Riemann, and ElasticSearch, together with management tools.
Logstash's Riemann output plugin sends log events to Riemann.
Krux's monitorlib is a Python library for creating monitoring scripts and plugins. It supports sending events to Riemann.
Riemann-mysql monitors a mysql server's replication status.
Riemann can send events to nagios (using nsca) and Riemann-ocsp can send events from nagios.
Riemann-icmp-ping monitors hosts from puppet via ICMP ping. Puppet-riemann sends puppet reports to Riemann.
riemannq lets you query Riemann on the command line, and spits out JSON responses.
Riepeteproxies statsd metrics to Riemann.
This Python script runs a shell command and sends specially formatted events to Riemann.
This syslog-ng module sends log events to Riemann.
Tensor is a daemon for writing pluggable pollers that forward their results to Riemann. It's written in Python.
Wireshark, a tool that captures and analyzes network packets, has a dissector for Riemann's protocol since version 1.99.1.
Additional functionality within riemann provided by external libraries
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
A collection of plugins for often-met use cases:
A plugin for verifying that a condition on an event is true during a time period. https://github.com/mcorbin/riemann-cond-dt-plugin
Round robin timeseries middleware based on riemann and elasticsearch https://github.com/ccin2p3/samplerr
Basic service discovery for Riemann. https://github.com/mcorbin/riemann-discovery/