Giter VIP home page Giter VIP logo

riemann's Introduction

Riemann monitors distributed systems.

Riemann aggregates events from your servers and applications with a powerful stream processing language.

Find out more at https://riemann.io

Build Status

Riemann testing

Clojars Project

riemann's People

Contributors

aphyr avatar b20n avatar blalor avatar boernd avatar chhetripradeep avatar chillitom avatar daniellesucher avatar dbriones avatar dlobue avatar eguven avatar ento avatar eric avatar faxm0dem avatar gsandie avatar jamtur01 avatar juise avatar lwf avatar mblair avatar mcorbin avatar pradeepchhetri avatar pyr avatar samn avatar serge-medvedev avatar sjl avatar snewman avatar spazm avatar tcrayford avatar timbuchwaldt avatar vixns avatar xrstf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

riemann's Issues

FAIL in (rate-fast) (streams.clj:523)

603 FAIL in (rate-fast) (streams.clj:523)
604 expected: (approx-equal total (reduce + (map :metric o)))
605 actual: (not (approx-equal 10000 9880

A timing bug that slipped through the cracks, perhaps.

Riemann won't start with Icedtea 1.7.0_09

Trying to start riemann 0.1.3 on a vm with fedora 17 gives the following error:

Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

$ java -version
java version "1.7.0_09-icedtea"
OpenJDK Runtime Environment (fedora-2.3.3.fc17.1-i386)
OpenJDK Client VM (build 23.2-b09, mixed mode)

$ uname -rvp
3.6.3-1.fc17.i686 #1 SMP Mon Oct 22 16:10:29 UTC 2012 i686

streams/sdo

Takes a list of functions f1, f2, f3, and returns f such that (f event) calls (f1 event) (f2 event) (f3 event).

(sdo index graph) -> (fn [event] (call-rescue event [index graph]))

Fix threadpool leak on reload

(riemann.bin/reload)
(count (Thread/getAllStackTraces))

... rises with each reload. My guess is we're leaking a threadpool in riemann.server.

streams/split, streams/splitp

Split is the stream analogy to cond. It takes a list of test/stream pairs. Test expressions are evaluated using the same substitution/matching rules as (where). If a test returns logical true, the corresponding stream is evaluated. A catchall stream can be provided with or without a test.

(split
  (> 75 metric) (with :state "ok" index)
  (> 95 metric) (with :state "warning" index)
  :else (with :state "oh no" index email))

split* is to split as where* is to where: instead of macro-substituted tests, it takes a list of functions to apply to the current event.

(split*
  #(> 75 (:metric %)) (with :state "ok" index)
  #(> 95 (:metric %)) (with :state "warning" index)
  (with state "oh no" index email))

splitp takes a binary predicate, an expression evaluated with where-substitution rules, and a set of clauses comprising a value and a stream. Clauses are evaluated with (pred value expr), and the first to return true determines which stream is called.

(splitp > metric
  75 (with :state "ok" index)
  95 (with :state "warning" index)
  (with state "oh no" index email))

rollup stops when an expired event arrives

The rollup stream primitive uses periodically-until-expired (by use of part-time-fast), which stops when an expired event occurs. This is sensible for some use cases but creates problems in others, for instance when trying to roll up all expired events per host.

Maybe part-time-fast could be refactored to provide a parameter as to whether periodic/every or periodically-until-expired should be used?

Riemann won't start with Oracle JDK 1.6.27

When starting riemann with oracle java 1.6.27 I get the following message:

Unrecognized VM option '+UseCompressedOops'
Could not create the Java virtual machine.

Removing the '+UseCompressedOops' solves the issue.

$ java -version
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) Client VM (build 20.2-b06, mixed mode, sharing)

$ uname -rvp
3.6.3-1.fc17.i686 #1 SMP Mon Oct 22 16:10:29 UTC 2012 i686

core :services

Cores should have a Service interface for things that require lifecycle management. This will allow us to free resource pools when we shut down cores for reloading.

(where (service x)) should evaluate x.

(let [x #"foo"](where %28service x%29 ...)))

will fail because the macro compiles the equality check based on the symbol x, not the value it refers to.

Add a cookbook to the Riemann site

We need a section that explains how to accomplish simple tasks. Syntax highlighting is all ready to go; just need a page with an index.

(where ... (else ...))

(where) should take an (else child1 child2 ...) clause, similar to the way (catch) works in Clojure.

Replace protobufs parser

Normalize all the protobuf parsing functions; right now the code path is split between riemann-client and clojure-protobuf. Should improve performance. We can also introduce defrecords for events and messages.

Generated .deb file is not indexable by apt-ftparchive & friends

Hi,

there's a debian packaged offered as a download here:

http://aphyr.com/riemann/riemann_0.1.2.deb

But the naming is not conform debian naming policy, so tools like apt-ftparchive and so on do not understand whether to index it as 'all' or 'i386' etc. If you change the name to this for example, it works just fine and our internal apt repo offers it up for installation:

riemann_0.1.2-1_all.deb 

FAIL in (rate-fast) (streams.clj:613)

490 FAIL in (rate-fast) (streams.clj:613)
491 expected: (approx-equal total (reduce + (map :metric (clojure.core/deref output))))
492 actual: (not (approx-equal 10000 9849))

FAIL in (expires) (core.clj:115)

481 FAIL in (expires) (core.clj:115)
482 expected: (= (clojure.core/deref res) {:service 1, :host nil, :time 0.011, :state "expired"})
483 actual: (not (= nil {:host nil, :state "expired", :service 1, :time 0.011}))

multimethods for boolean dispatch

This is more of a Clojure best-practice question/discussion than an issue...

There are a couple uses of multimethods in streams.clj that I'm not sure are best expressed with multimethods. In my mind, multimethods are useful when the potential values for the dispatch func are unbounded, and unknown at the time of writing the function. The cool thing about mutlimethods is that they are open, but in this case, you're necessarily covering all the possibilities at once. Hope this makes sense...

Percentiles in Graphite assume two digits of precision

Hi, I was recently trying to create a 99.9th percentile graph in Graphite, but couldn't figure out for the life of me where the data was going. I could see the events being emitted in the stream, and everything looked fine. Finally figured out the offending bit is this:

https://github.com/aphyr/riemann/blob/master/src/riemann/graphite.clj#L21

Seems that it's assuming two digits of precision for percentiles at all times. I'm mulling over some options for dealing with this, without breaking existing deployments.

Riemann 0.1.3, java 1.6 & i686

When running this combination, java complains about an unsupported argument:

$ /usr/bin/riemann config.clj
Unrecognized VM option '+UseCompressedOops'
Could not create the Java virtual machine.

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing)

$ dpkg -l|grep riemann
ii  riemann                           0.1.3                                           A network event stream processor. Intended f

$ uname -a
Linux <redacted> 2.6.32-347-ec2 #53-Ubuntu SMP Tue Aug 21 13:45:32 UTC 2012 i686 GNU/Linux

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.