Riemann is a team effort! To everyone who wrote a client, built a dashboard, pointed out bugs, submitted patches, or just asked questions—thank you.
Gergely Nagy (algernon) added regex support to the query engine.
Danielle Sucher wrote folds/count.
Marc Fournier (mfournier) fixed a bug in riemann-dash event expiry.
Fabien Wernli (faxm0dem) fixed a bug in riemann-dash which caused null metrics to be rendered as 0.
Max Newbould fixed a regression in riemann-redis due to the Beefcake frozen-string bug.
Marc Fournier (mfournier) updated several links in the documentation and added new tools to the clients page.
Kanak Biscuitwala (kanakb) set an explicit AOT classname for riemann.bin.
Richo Healey (richo) fixed a typo in the readme link to riemann-clojure-client.
Ashton Kemerling and NeoTyk started work on better testing of configs.
Ryan Berdeen (also) fixed a typo in the docstring for transport/websockets.clj
Dick Davies (rasputnik) wrote riemannq, for running queries from the shell.
Patrick Bohan (arkban) fixed the riemann-java-client readme omitting connect();
Brian Hatfield (bmhatfield) added additional .err, .warn, .failure state colors to the dash.
Philippe Hanrigou pointed out a typo in the howto.
Pierre Yves-Ritschard (pyr) added a server-side-events transport to Riemann, and support in the dash. He fixed some edge cases in folds, and added a plugins system for the config.
Christopher Merrick (cmerrick) added riemann-proc, for monitoring process status, to riemann-tools.
Michael Fairley fixed the incorrect use of :host instead of :bind for riemann-dash's Sinatra config.
Jan Brauer (Bracki) added an NSCA client for forwarding state to Nagios.
tjake added a logstash client!
ucb pointed out minor bugs in index expiry (not binding default ttls correctly) and in riemann.pool (always setting :block-start true).
Eric Lindvall fixed an outdated reference to TcpClient in the riemann-java-client readme.
Mark Feeney (overthink) fixed a typo in the Debian init script sourcing /etc/defaults instead of /etc/default.
Harry Brundage (hornairs) added stacked plots and bar graphs to riemann-dash.
Joscha (schnipseljagd) tracked down and fixed a bug causing graphite-server to not start.
Jan Brauer (bracki) fixed an issue with start-stop-daemon on older Debian versions.
Turre Laurinolli (tazle) added a simple UDP transport to riemann-java-client.
Federico Borgnia (fborgnia) added a MySQL status check to riemann-tools.
Marc Fournier (mfournier) changed the dash to display human-readable times for events, and fixed a typo in the howto example for (adjust).
Jeroen van Dijk helped fix an error in the howto's "count number of hosts" example.
Hubert Iwaniuk (neotyk) added tag support to riemann-java-client's Yammer Metrics adapter, and expanded the range of exceptions caught by exception-stream to include all Throwables. Hubert also added support for Hipchat integration to Riemann.
dcjackson pointed out a typo in riemann.client's docstring.
Bitprophet helped fix a typo in the streams docstring.
justwrote changed out riemann-dash's URIs to use relative paths.
Tin Tvrtković (Tinche) improved riemann-dash's shortening of host and service names.
Narrative-joe changed the riemann-redis states to be more descriptive.
Tazle fixed a disconnect() before open state bug in riemann-java-client, and added an exception callback handler. He also added the source and javadocs to the pom.
Chillitom fixed a bug preventing Riemann from starting on Windows, and added a std-dev fold. He also added commas to Riemann's cell renderer.
Sam Neubardt (samn) added custom attributes to the email and SNS notifications.
Paul Goldbaum extended riemann.config/include to load directories as well as specific files.
Markus Burger (mburger) fixed the debian binary's classpath variable.
Andreas (asemt) changed the package md5sums to use relative paths.
Gavin Sandie (gsandie) added documentation about the REPL and hot code reloading, and wrote an elasticsearch monitoring plugin. He also improved the Resmon script's connection handling, and added health status to riemann-nginx. And now he's gone and written a RabbitMQ monitoring plugin too; and added cloudwatch integration to riemann-tools. The guy's unstoppable!
Ben Mabey (bmabey) fixed a typo in the docs, and bumped Clojure to 1.5.1.
Brian Wong (bwong114) improved the Librato Metrics adapter by adding support for sending batches of events at once.
Drew Searcy (supersix4our) added HTTPS support to riemann-riak.
Sam Neubardt (samn) fixed a really confusing bug where (where (tagged-any ...)) behaved unexpectedly.
Tilman Holschuh helped fix a typo in riemann's documentation.
odiszapc added numpad +/- keybindings to riemann-dash.
Pierre Yves-Ritschard (pyr) added streams/scale and made it easier to add custom JARs and JVM options when using bin/riemann.
vadv helped fix a bug in riemann-ruby-client's connected? method.
Torbjörn Norinder (lwf) helped clean up dead code in riemann-tools, and added timeouts to riemann-tools, allowing the client to reconnect when using TCP.
William Roe (wjlroe) explained how to match tags against expired events in the howto.
Michael Allman (mallman) improved riemann-java-client: reporters can now take a client directly.
Dave Cottlehuber (dch) changed the dash to show expired events in purple, and bumped nrepl to 0.2.2.
Torbjörn Norinder (lwf) added custom attributes to riemann-tools.
Michael Hood fixed a bug in query escaping for riemann-dash.
Sebastian Cruz (default50) added riemann-freeswitch for monitoring calls and channels in FreeSWITCH
Gavin Sandie contributed a howto article on finding a fraction of events over a time period, added configurable FQDN behavior to riemann-resmon, and added a connect timeout to the ruby client. He also added campfire integration to Riemann proper. He also updated riemann-net to report TX errors on interfaces.
Robert Rees added index/lookup, for fetching specific events from the index, and extended the quickstart docs to help newbies learn about streams.
Benjamin Anderson added type hints to the graphite client.
Bhuwan added configurable erlang cookies to riemann-riak.
Jegt caught a typo in riemann-riak's http status check.
Brian Hicks added riemann-nginx for monitoring Nginx status.
Kevin Nuckolls (knockolls) and Matt Blair (mblair) helped untangle Riemann's java dependencies on Debian systems.
Marica Odagai (ento) made a ton of improvements to his amazon-sns module for Riemann.
Richo Healey (richo) fixed a bug in get-string-bytes's UTF-8 handling.
Simon Hildrew (sihil) fixed a bug in streams/where* evaluating its children on each event, added a UDP transport to graphite-server,
Hawk Owl wrote a Twisted Python client and helped fix broken documentation.
Zach Tellman was a huge help in fixing Lamina and Aleph issues, and in writing the HTTP PUT handler.
Leandro López (inkel) added a Redis SLOWLOG checker to riemann-tools.
Andrew Grangaard (spazm) helped improve the README and CONTRIBUTING files, and docstrings in riemann.folds.
Brian Hatfield added a run detection stream.
Gavin Sandie added an option to riemann-health to control which checks are run, and helped merge Torbjörn Norinder (lwf)'s AWS-status commit.
Marica Odagaki (ento) added an Amazon Simple Notification Service adapter.
Banjiewen swapped out riemann.pool's queue from ArrayBlockingQueue to LinkedBlockingQueue, and ensured (:streams core) is never lazy.
Matt Blair fixed a broken lamina dependency in 0.2.0, added Java to the debian dependencies, and helped improve the debian package's reload behavior. He also added tests for Brian Hatfield's (runs) stream.
Jonas Tehler (jegt) helped add custom attributes to riemann-ruby-client.
Gavin Sandie (gsandie) made the riemann-tools resmon plugin more robust.
pdmct helped build pivotable grid views for the dash.
Matt Blair added an emacs modeline to the riemann configs.
Roman H (mindreframer) did a fantastic job cleaning up the dashboard's ruby code, improving configurability, and adding tests.
Dave Cottlehuber (dch) added some extra states to the dashboard CSS.
Sebastian Probst Eide wrote an Erlang client.
Thomas Omans (eggsby) made sweeping improvements to riemann-dash, including timeseries charts, typo fixes, UI polish, adding pushState logic for workspaces, and more. He added a configuration option for the dashboard's json store, as well as pivotable grid views.
Goblin added a ResMon adapter to riemann-tools.
Camshaft wrote two node.js libraries: simple-riemann, a client, and riemann-response-time, an instrumentation middleware.
Tim Shadel added a local hostname override to all riemann-tools.
Bip Thelin added fallback to riak-admin for riemann-riak, and fixed a bug causing riemann-tools to report nil hosts when no --event host was specified.
Amir Mohammad Saied wrote a Go client.
Magnus Holm pointed out some problems with the howto.
Aaron Feng wrote a howto post about working with the dashboard.
Franck Cuny added basic memcached monitoring to riemann-tools, added a help popup to riemann-dash, a few keybindings, and documentation fixes.
Peter Scott consolidated the different Netty executor pools and changed repl/start-server! to take a hashmap instead of flat kv pairs. He also helped fix a bug in graphite-server.
Guilherme Manika (gmanika) tracked down a Netty bug causing Riemann to leak connections in CLOSE_WAIT, and pointed out a transient bug in streams/coalesce on master.
Ben Black (b6n) added arbitrary key-value pairs to the protocol, ruby client, java client, and clojure client.
Peter Scott fixed a method name in graphite-server.
Dave Parfitt (metadave) wrote an OCaml client.
richardg helped track down a bug in the Librato metrics name-escaping function.
benmur fixed a nomethoderror on the dash.
lwf added exception handling to the index reaper thread and added UDP support to the Graphite client. He also extended (delete-from-index) to delete classes of similar events, and helped with the riemann-java-client update, ensuring compatibility with Java 6.
Rached Ben Mustapha wrote a Scala client.
Tyler Schuett helped design Riemann's visual identity.
Daniel Hilst wrote a C client.
Miquel Ruiz wrote a Perl client.
clee fixed some missing endquotes in the howto.
dgtized fixed a typo in riemann-riak.
Manos fixed a paren mismatch in the howto.
Pierre-Yves Ritschard (pyr) formalized the protocol for riemann servers and split up the riemann.server namespace into distinct, modular transports. He suppressed the unnecessary close-channel logging messages from the TCP server. Pyr added streams/stream for composing streams together, and streams/split, split*, and splitp for branching conditionals. And riemann-puppet-ring. And riemann-mysql. As if that wasn't enough, he added debian package timestamps for snapshot builds. Jeez that guy's been busy! :D
Ben Firshman reported a critical bug in (where).
jib and lwf pointed out that Cheshire would fix some JSON encoding problems.
jib and hhenkel reported issues with various JVM flags.
Dave Cottlehuber (dch) changed riemann-health to report comm instead of full process args in cpu descriptions.
Pierre-Yves Ritschard (pyr) put together a simple Riemann grid at Exoscale, corrected documentation on lein run, and fixed a bug in graphite-server.
Jos Bourmans (jib) helped clarify Riemann's documentation, fixed streams, and made /usr/bin/riemann properly exec java.
Henrik Nordvik (zerd) fixed a few bugs in riemann-health's OS X support.
Banjiewen fixed a memory leak in moving-event-window, and reworked the Netty socket handler.
David J Rusek wrote a new Java client for Riemann, based on Netty and Guaava futures.
Pierre-Yves Ritschard improved (coalesce), cleaned up some code in riemann.common, added Travis-CI support, a Graphite-compatible server, and improved performance of pubsub. He added performance tests for the index.
William Jimenez added a KVM monitor to riemann-tools.
lwf added custom tags to riemann-tools, as well as riemann-diskstats.
Derek Perez added Redis, Haproxy, and Cloudant monitors to riemann-tools, plus countless other commits. Rock on, man!
Carl Yeksigian of Blue Mountain Capital published a C# client.
Jake Luciani of Blue Mountain Capital contributed a Cassandra watcher.
Ben Black contributed streams for fast reduction of events and metrics over time, experimented with integrating Parallel Colt, and suggested windowing API ideas.
Gareth Rushgrove made it easier for folks to get started with Riemann-dash by fixing typos, adding 1.8 compatibility, and writing a puppet module.
Edward Ribeiro refactored riemann-java-client's reporting and helped find bugs in riemann-java-client's rewrite.
Derek Perez wrote a node.js client
Joeseph Abrahamson, of Reify Health, wrote an Erlang client: Zeta.
Joe Caswell added FreeBSD and Darwin support to riemann-health.
Michael Klishin (antares) helped get Riemann's build process up to speed with Leiningen 2.
Michael Bernstein (mrb) got Riemann running on Clojure 1.4 and Lein2.
Brian Shumate corrected a non-portable shebang line.
Jeremy Carroll pointed out my evil lies in the configuration guide.
Michael Fairley added a hostname override to RiemannReporter.
Edward Ribeiro improved concurrency in the Java client and fixed lots of little bugs, misphrasings, and typos.
Tom Crayford pointed out a typo.
Benjamin Anderson (banjiewen) wrote a new Python client.
Steve Losh (sjl) wrote streams/fill-in-last and polished several rough edges in common, streams, and periodic. Steve also expanded the adjust stream to take a function which arbitrarily transforms entire events.
Mårten Gustafson started work on the Java client, added timeouts, and tests.
Paul Butcher fixed a typo in the quickstart.
Obfuscurity and Lusis contributed ideas for HA failover and peer discovery.
Lusis wrote an adapter between logstash and Riemann.
Eric Lindvall (lindvall) updated riemann-ruby-client to be 1.8-compatible.
#flatland, #clojure and #leiningen, including jodaro, ninjudd, raynes, and amalloy, helped with protobufs parsing, leiningen, and general Clojure questions.
Showyou, my employer, gave me the infrastructure I needed Riemann for, and the chance to share it with the world.
John Mullerleile (jrecursive) was deeply involved in talking through the concept and structure of Riemann, as well as advice around the JVM and profiling.
C Scott Andreas (cscotta) and the Boundary crew gave many helpful suggestions around the JVM, Maven, high_scale_lib, and profiling. Our conversations yielded many references, algorithms and ideas.
Allen Rohner (arohner) on #clojure offered a logging configuration snippet.
Ryan Grove and Sean Cribbs gave feedback on documentation and design.
Reid Draper contributed a syntactic patch.
Sam Newman (snewman) brought Riemann up to speed with Clojure 1.3.
Tyler Schuett offered graphic design advice.
Gleicon wrote the Python client.