Coder Social home page Coder Social logo

riemann / riemann Goto Github PK

View Code? Open in Web Editor NEW
4.2K 4.2K 536.0 7.4 MB

A network event stream processing system, in Clojure.

Home Page: https://riemann.io

License: Eclipse Public License 1.0

Shell 1.48% Clojure 97.49% ANTLR 0.27% Perl 0.69% Dockerfile 0.06%
clojure events logging metrics monitoring monitoring-tool riemann

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

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.

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

(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.

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?

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))

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.

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.

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.

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 (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.

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

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

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}))

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]))

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 

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

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

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...

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.

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.