diff --git a/project.clj b/project.clj index 74b76c2..9878aca 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject fr.mcorbin/mirabelle "0.4.0" +(defproject fr.mcorbin/mirabelle "0.5.0" :description "A stream processing engine inspired by Riemann" :url "https://github.com/mcorbin/mirabelle" :license {:name "EPL-1.0" diff --git a/site/api/index.html b/site/api/index.html index 7864189..b4f9ae8 100644 --- a/site/api/index.html +++ b/site/api/index.html @@ -1,3 +1,3 @@ -Mirabelle 0.4.0

Mirabelle 0.4.0

Released under the EPL-1.0

A stream processing engine inspired by Riemann.

Installation

To install, add the following dependency to your project or build file:

[fr.mcorbin/mirabelle "0.4.0"]

Namespaces

mirabelle.action

mirabelle.action.condition

mirabelle.b64

Public variables and functions:

mirabelle.config

Public variables and functions:

mirabelle.core

mirabelle.db.queue

Public variables and functions:

mirabelle.event

mirabelle.graphviz

Public variables and functions:

mirabelle.handler

Public variables and functions:

mirabelle.http

Public variables and functions:

mirabelle.index

Public variables and functions:

mirabelle.io

Public variables and functions:

mirabelle.io.file

Public variables and functions:

    mirabelle.io.influxdb

    mirabelle.io.pagerduty

    mirabelle.math

    mirabelle.path

    Public variables and functions:

    mirabelle.pool

    mirabelle.pubsub

    Public variables and functions:

    mirabelle.spec

    Public variables and functions:

    mirabelle.stream

    mirabelle.test

    Public variables and functions:

    mirabelle.time

    Public variables and functions:

    mirabelle.transport

    mirabelle.transport.tcp

    mirabelle.transport.websocket

    user

    Public variables and functions:

    \ No newline at end of file +Mirabelle 0.5.0

    Mirabelle 0.5.0

    Released under the EPL-1.0

    A stream processing engine inspired by Riemann.

    Installation

    To install, add the following dependency to your project or build file:

    [fr.mcorbin/mirabelle "0.5.0"]

    Namespaces

    mirabelle.action

    mirabelle.action.condition

    mirabelle.b64

    Public variables and functions:

    mirabelle.config

    Public variables and functions:

    mirabelle.core

    mirabelle.db.queue

    Public variables and functions:

    mirabelle.event

    mirabelle.graphviz

    Public variables and functions:

    mirabelle.handler

    Public variables and functions:

    mirabelle.http

    Public variables and functions:

    mirabelle.index

    Public variables and functions:

    mirabelle.io

    Public variables and functions:

    mirabelle.io.elasticsearch

    mirabelle.io.file

    Public variables and functions:

      mirabelle.io.influxdb

      mirabelle.io.pagerduty

      mirabelle.math

      mirabelle.path

      Public variables and functions:

      mirabelle.pool

      mirabelle.pubsub

      Public variables and functions:

      mirabelle.spec

      Public variables and functions:

      mirabelle.stream

      mirabelle.test

      Public variables and functions:

      mirabelle.time

      Public variables and functions:

      mirabelle.transport

      mirabelle.transport.tcp

      mirabelle.transport.websocket

      user

      Public variables and functions:

      \ No newline at end of file diff --git a/site/api/mirabelle.action.condition.html b/site/api/mirabelle.action.condition.html index ff8a368..65ff796 100644 --- a/site/api/mirabelle.action.condition.html +++ b/site/api/mirabelle.action.condition.html @@ -1,3 +1,3 @@ -mirabelle.action.condition documentation

      mirabelle.action.condition

      compile-condition

      (compile-condition [condition field & args])

      compile-conditions

      Takes a condition and returns a function which can be applied to an event to check if the condition is valid for this event

      condition->fn

      Map containing the functions associated to the where options

      valid-condition?

      (valid-condition? condition)
      \ No newline at end of file +mirabelle.action.condition documentation

      mirabelle.action.condition

      compile-condition

      (compile-condition [condition field & args])

      compile-conditions

      Takes a condition and returns a function which can be applied to an event to check if the condition is valid for this event

      condition->fn

      Map containing the functions associated to the where options

      valid-condition?

      (valid-condition? condition)
      \ No newline at end of file diff --git a/site/api/mirabelle.action.html b/site/api/mirabelle.action.html index 9823518..a952426 100644 --- a/site/api/mirabelle.action.html +++ b/site/api/mirabelle.action.html @@ -1,61 +1,61 @@ -mirabelle.action documentation

      mirabelle.action

      above-dt

      (above-dt threshold dt & children)

      Takes a number threshold and a time period in seconds dt. If the condition “the event metric is > to the threshold” is valid for all events received during at least the period dt, valid events received after the dt period will be passed on until an invalid event arrives. :metric should not be nil (it will produce exceptions).

      +mirabelle.action documentation

      mirabelle.action

      above-dt

      (above-dt threshold dt & children)

      Takes a number threshold and a time period in seconds dt. If the condition “the event metric is > to the threshold” is valid for all events received during at least the period dt, valid events received after the dt period will be passed on until an invalid event arrives. :metric should not be nil (it will produce exceptions).

      (above-dt 100 10
         (debug))
       
      -

      In this example, if the events :metric field are greater than 100 for more than 10 seconds, events are passed downstream.

      action->fn

      async-queue!

      (async-queue! queue-name & children)

      Execute children into the specific async queue. The async queue should be defined in the I/O configuration file.

      +

      In this example, if the events :metric field are greater than 100 for more than 10 seconds, events are passed downstream.

      action->fn

      async-queue!

      (async-queue! queue-name & children)

      Execute children into the specific async queue. The async queue should be defined in the I/O configuration file.

      (async-queue! :my-queue
         (info))
      -

      async-queue!*

      (async-queue!* context queue-name & children)

      below-dt

      (below-dt threshold dt & children)

      Takes a number threshold and a time period in seconds dt. If the condition the event metric is < to the threshold is valid for all events received during at least the period dt, valid events received after the dt period will be passed on until an invalid event arrives. :metric should not be nil (it will produce exceptions).

      +

      async-queue!*

      (async-queue!* context queue-name & children)

      below-dt

      (below-dt threshold dt & children)

      Takes a number threshold and a time period in seconds dt. If the condition the event metric is < to the threshold is valid for all events received during at least the period dt, valid events received after the dt period will be passed on until an invalid event arrives. :metric should not be nil (it will produce exceptions).

      clojure (below-dt 100 10 (debug))

      -

      In this example, if the events :metric field are lower than 100 for more than 10 seconds, events are passed downstream.

      between-dt

      (between-dt low high dt & children)

      Takes two numbers, low and high, and a time period in seconds, dt. If the condition the event metric is > low and < high is valid for all events received during at least the period dt, valid events received after the dt period will be passed on until an invalid event arrives. :metric should not be nil (it will produce exceptions).

      +

      In this example, if the events :metric field are lower than 100 for more than 10 seconds, events are passed downstream.

      between-dt

      (between-dt low high dt & children)

      Takes two numbers, low and high, and a time period in seconds, dt. If the condition the event metric is > low and < high is valid for all events received during at least the period dt, valid events received after the dt period will be passed on until an invalid event arrives. :metric should not be nil (it will produce exceptions).

      (between-dt 50 100 10
         (debug))
       
      -

      In this example, if the events :metric field are between 50 ans 100 for more than 10 seconds, events are passed downstream.

      by

      (by fields & children)

      Split stream by field Every time an event arrives with a new value of field, this action invokes its child forms to return a new, distinct set of streams for that particular value.

      +

      In this example, if the events :metric field are between 50 ans 100 for more than 10 seconds, events are passed downstream.

      by

      (by fields & children)

      Split stream by field Every time an event arrives with a new value of field, this action invokes its child forms to return a new, distinct set of streams for that particular value.

      (by [:host :service]
         (fixed-time-window 5))
       
      -

      This example generates a moving window for each host/service combination.

      by-fn

      (by-fn fields new-fork)

      call-rescue

      (call-rescue event children)

      changed

      (changed field init & children)

      Passes on events only if the field passed as parameter differs from the previous one. The init parameter is the default value for the stream.

      +

      This example generates a moving window for each host/service combination.

      by-fn

      (by-fn fields new-fork)

      call-rescue

      (call-rescue event children)

      changed

      (changed field init & children)

      Passes on events only if the field passed as parameter differs from the previous one. The init parameter is the default value for the stream.

      (changed :state "ok")
       

      For example, this action will let event pass if the :state field vary, the initial value being ok.

      -

      This stream is useful to get only events making a transition.

      changed*

      (changed* _ field init & children)

      coalesce

      (coalesce dt fields & children)

      Returns a list of the latest non-expired events (by fields) every dt seconds (at best).

      +

      This stream is useful to get only events making a transition.

      changed*

      (changed* _ field init & children)

      coalesce

      (coalesce dt fields & children)

      Returns a list of the latest non-expired events (by fields) every dt seconds (at best).

      (coalesce 10 [:host :service]
         (debug)
       
      -

      In this example, the latest event for each host/service combination will be kept and forwarded downstream. The debug action will then receive this list of events. Expired events will be removed from the list.

      coalesce*

      (coalesce* _ dt fields & children)

      coll-bottom

      (coll-bottom nb-events & children)

      Receives a list of events, returns the top N events with the lowest metrics.

      +

      In this example, the latest event for each host/service combination will be kept and forwarded downstream. The debug action will then receive this list of events. Expired events will be removed from the list.

      coalesce*

      (coalesce* _ dt fields & children)

      coll-bottom

      (coll-bottom nb-events & children)

      Receives a list of events, returns the top N events with the lowest metrics.

      (fixed-time-window 60
         (coll-bottom
           (info)))
      -

      coll-bottom*

      (coll-bottom* _ nb-events & children)

      coll-count

      (coll-count & children)

      Count the number of events. Should receive a list of events from the previous stream. The most recent event is used as a base to create the new event, and its :metric field is set to the number of events received as input.

      +

      coll-bottom*

      (coll-bottom* _ nb-events & children)

      coll-count

      (coll-count & children)

      Count the number of events. Should receive a list of events from the previous stream. The most recent event is used as a base to create the new event, and its :metric field is set to the number of events received as input.

      (fixed-time-window 60
         (coll-count
           (debug)))
      -

      coll-count*

      (coll-count* _ & children)

      coll-max

      (coll-max & children)

      Returns the event with the biggest metric. Should receive a list of events from the previous stream.

      +

      coll-count*

      (coll-count* _ & children)

      coll-max

      (coll-max & children)

      Returns the event with the biggest metric. Should receive a list of events from the previous stream.

      (fixed-event-window 10
         (coll-max
           (debug)))
       
      -

      Get the event the biggest metric on windows of 10 events

      coll-max*

      (coll-max* _ & children)

      coll-mean

      (coll-mean & children)

      Computes the events mean (on metric). Should receive a list of events from the previous stream. The most recent event is used as a base to create the new event

      +

      Get the event the biggest metric on windows of 10 events

      coll-max*

      (coll-max* _ & children)

      coll-mean

      (coll-mean & children)

      Computes the events mean (on metric). Should receive a list of events from the previous stream. The most recent event is used as a base to create the new event

      (fixed-event-window 10
         (coll-mean
           (debug)))
       
      -

      Computes the mean on windows of 10 events

      coll-mean*

      (coll-mean* _ & children)

      coll-min

      (coll-min & children)

      Returns the event with the smallest metric. Should receive a list of events from the previous stream.

      +

      Computes the mean on windows of 10 events

      coll-mean*

      (coll-mean* _ & children)

      coll-min

      (coll-min & children)

      Returns the event with the smallest metric. Should receive a list of events from the previous stream.

      (fixed-event-window 10
         (coll-min
           (debug)))
       
      -

      Get the event the smallest metric on windows of 10 events

      coll-min*

      (coll-min* _ & children)

      coll-percentiles

      (coll-percentiles points & children)

      Receives a list of events and selects one event from that period for each point. If point is 0, takes the lowest metric event. If point is 1, takes the highest metric event. 0.5 is the median event, and so forth. Forwards each of these events to children. The event has the point appended the :quantile key. Useful for extracting histograms and percentiles.

      +

      Get the event the smallest metric on windows of 10 events

      coll-min*

      (coll-min* _ & children)

      coll-percentiles

      (coll-percentiles points & children)

      Receives a list of events and selects one event from that period for each point. If point is 0, takes the lowest metric event. If point is 1, takes the highest metric event. 0.5 is the median event, and so forth. Forwards each of these events to children. The event has the point appended the :quantile key. Useful for extracting histograms and percentiles.

      (fixed-event-window 10
         (coll-percentiles [0.5 0.75 0.98 0.99]))
      -

      coll-percentiles*

      (coll-percentiles* _ points & children)

      coll-quotient

      (coll-quotient & children)

      Divide the first event :metrìc field by all subsequent events :metric. Return a new event containing the new :metric.

      -

      Should receive a list of events from the previous stream.

      coll-quotient*

      (coll-quotient* _ & children)

      coll-rate

      (coll-rate & children)

      Computes the rate on a list of events. Should receive a list of events from the previous stream. The latest event is used as a base to build the new event.

      +

      coll-percentiles*

      (coll-percentiles* _ points & children)

      coll-quotient

      (coll-quotient & children)

      Divide the first event :metrìc field by all subsequent events :metric. Return a new event containing the new :metric.

      +

      Should receive a list of events from the previous stream.

      coll-quotient*

      (coll-quotient* _ & children)

      coll-rate

      (coll-rate & children)

      Computes the rate on a list of events. Should receive a list of events from the previous stream. The latest event is used as a base to build the new event.

      (fixed-event-window 3
         (coll-rate
           (debug)))
      @@ -63,216 +63,224 @@
       

      If this example receives the events:

      {:metric 1 :time 1} {:metric 2 :time 2} {:metric 1 :time 3}

      The stream will return {:metric 2 :time 3}

      -

      Indeed, (1+2+1)/2 = 3 (we divide by 2 because we have 2 seconds between the min and max events time).

      coll-rate*

      (coll-rate* _ & children)

      coll-sum

      (coll-sum & children)

      Sum all the events :metric fields Should receive a list of events from the previous stream.

      +

      Indeed, (1+2+1)/2 = 3 (we divide by 2 because we have 2 seconds between the min and max events time).

      coll-rate*

      (coll-rate* _ & children)

      coll-sum

      (coll-sum & children)

      Sum all the events :metric fields Should receive a list of events from the previous stream.

      (fixed-event-window 10
         (coll-sum
           (debug)))
       
      -

      Sum all :metric fields for windows of 10 events

      coll-sum*

      (coll-sum* _ & children)

      coll-top

      (coll-top nb-events & children)

      Receives a list of events, returns the top N events with the highest metrics.

      +

      Sum all :metric fields for windows of 10 events

      coll-sum*

      (coll-sum* _ & children)

      coll-top

      (coll-top nb-events & children)

      Receives a list of events, returns the top N events with the highest metrics.

      (fixed-time-window 60
         (coll-top
           (info)))
      -

      coll-top*

      (coll-top* _ nb-events & children)

      cond-dt*

      (cond-dt* _ conditions dt & children)

      A stream which detects if a condition (f event) is true during dt seconds. Takes conditions (like in the where action) and a time period dt in seconds. If the condition is valid for all events received during at least the period dt, valid events received after the dt period will be passed on until an invalid event arrives. Skips events that are too old or that do not have a timestamp.

      critical

      (critical & children)

      Keep all events in state critical.

      +

      coll-top*

      (coll-top* _ nb-events & children)

      cond-dt*

      (cond-dt* _ conditions dt & children)

      A stream which detects if a condition (f event) is true during dt seconds. Takes conditions (like in the where action) and a time period dt in seconds. If the condition is valid for all events received during at least the period dt, valid events received after the dt period will be passed on until an invalid event arrives. Skips events that are too old or that do not have a timestamp.

      critical

      (critical & children)

      Keep all events in state critical.

      (critical
         (error))
       
      -

      In this example, all events with :state “critical” will be logged.

      critical*

      (critical* _ & children)

      critical-dt

      (critical-dt dt & children)

      Takes a time period in seconds dt. If all events received during at least the period dt have :state critical, new critical events received after the dt period will be passed on until an invalid event arrives.

      +

      In this example, all events with :state “critical” will be logged.

      critical*

      (critical* _ & children)

      critical-dt

      (critical-dt dt & children)

      Takes a time period in seconds dt. If all events received during at least the period dt have :state critical, new critical events received after the dt period will be passed on until an invalid event arrives.

      (critical-dt 10
         (debug))
       
      -

      In this example, if the events :state are “critical” for more than 10 seconds, events are passed downstream.

      custom

      (custom action-name params & children)

      Executes a custom action. Custom actions are defined in the Mirabelle configuration file. The actomn can then be called (by name) using this custom action.

      +

      In this example, if the events :state are “critical” for more than 10 seconds, events are passed downstream.

      custom

      (custom action-name params & children)

      Executes a custom action. Custom actions are defined in the Mirabelle configuration file. The actomn can then be called (by name) using this custom action.

      (custom :my-custom-action ["parameters"]
         (info))
      -

      ddt

      (ddt & children)

      Differentiate metrics with respect to time. Takes an optional number followed by child streams. Emits an event for each event received, but with metric equal to the difference between the current event and the previous one, divided by the difference in their times. Skips events without metrics.

      +

      ddt

      (ddt & children)

      Differentiate metrics with respect to time. Takes an optional number followed by child streams. Emits an event for each event received, but with metric equal to the difference between the current event and the previous one, divided by the difference in their times. Skips events without metrics.

      (ddt
         (info))
       
      -

      If ddt receives {:metric 1 :time 1} and {:metric 10 :time 4}, it will produce {:metric (/ 9 3) :time 4}.

      ddt*

      (ddt* _ remove-neg? & children)

      ddt-pos

      (ddt-pos & children)

      Like ddt but do not forward events with negative metrics. This can be used for counters which may be reseted to zero for example.

      debug

      (debug)

      Print the event in the logs using the debug level

      +

      If ddt receives {:metric 1 :time 1} and {:metric 10 :time 4}, it will produce {:metric (/ 9 3) :time 4}.

      ddt*

      (ddt* _ remove-neg? & children)

      ddt-pos

      (ddt-pos & children)

      Like ddt but do not forward events with negative metrics. This can be used for counters which may be reseted to zero for example.

      debug

      (debug)

      Print the event in the logs using the debug level

      (increment
         (debug))
      -

      debug*

      (debug* _)

      decrement

      (decrement & children)

      Decrement the event :metric field.

      +

      debug*

      (debug* _)

      decrement

      (decrement & children)

      Decrement the event :metric field.

      (decrement
         (index [:host]))
      -

      decrement*

      (decrement* _ & children)

      default

      (default field value & children)

      Set a default value for an event

      +

      decrement*

      (decrement* _ & children)

      default

      (default field value & children)

      Set a default value for an event

      (default :state "ok"
         (info))
       
      -

      In this example, all events where :state is not set will be updated with :state to “ok”.

      default*

      (default* _ field value & children)

      discard-fn

      (discard-fn e)

      disk-queue!

      (disk-queue!)

      Write events into the on-disk queue.

      disk-queue!*

      (disk-queue!* context)

      error

      (error)

      Print the event in the logs using the error level

      +

      In this example, all events where :state is not set will be updated with :state to “ok”.

      default*

      (default* _ field value & children)

      discard-fn

      (discard-fn e)

      disk-queue!

      (disk-queue!)

      Write events into the on-disk queue.

      disk-queue!*

      (disk-queue!* context)

      error

      (error)

      Print the event in the logs using the error level

      (increment
         (debug))
      -

      error*

      (error* _)

      ewma-timeless

      (ewma-timeless r & children)

      Exponential weighted moving average. Constant space and time overhead. Passes on each event received, but with metric adjusted to the moving average. Does not take the time between events into account. R is the ratio between successive events: r=1 means always return the most recent metric; r=1/2 means the current event counts for half, the previous event for 1/4, the previous event for 1/8, and so on.

      ewma-timeless*

      (ewma-timeless* _ r & children)

      exception->event

      (exception->event e base-event)

      Build a new event from an Exception and from the event which caused it.

      exception-stream

      (exception-stream & children)

      Takes two actions. If an exception is thrown in the first action, an event representing this exception is emitted in in the second action.

      +

      error*

      (error* _)

      ewma-timeless

      (ewma-timeless r & children)

      Exponential weighted moving average. Constant space and time overhead. Passes on each event received, but with metric adjusted to the moving average. Does not take the time between events into account. R is the ratio between successive events: r=1 means always return the most recent metric; r=1/2 means the current event counts for half, the previous event for 1/4, the previous event for 1/8, and so on.

      ewma-timeless*

      (ewma-timeless* _ r & children)

      exception->event

      (exception->event e base-event)

      Build a new event from an Exception and from the event which caused it.

      exception-stream

      (exception-stream & children)

      Takes two actions. If an exception is thrown in the first action, an event representing this exception is emitted in in the second action.

      (exception-stream
         (bad-action)
         (error))
       
      -

      Here, if bad-action throws, an event will be built (using the exception->event function) and sent to the error action (which will log it).

      exception-stream*

      (exception-stream* _ success-child failure-child)

      expired

      (expired & children)

      Keep expired events.

      +

      Here, if bad-action throws, an event will be built (using the exception->event function) and sent to the error action (which will log it).

      exception-stream*

      (exception-stream* _ success-child failure-child)

      expired

      (expired & children)

      Keep expired events.

      (expired
         (increment))
       
      -

      In this example, all expired events will be forwarded to the incrementstream.

      expired*

      (expired* _ & children)

      Keep expired events.

      fixed-event-window

      (fixed-event-window size & children)

      Returns a fixed-sized window of events.

      +

      In this example, all expired events will be forwarded to the incrementstream.

      expired*

      (expired* _ & children)

      Keep expired events.

      fixed-event-window

      (fixed-event-window size & children)

      Returns a fixed-sized window of events.

      (fixed-event-window 5
         (debug))
       
      -

      This example will return a vector events partitioned 5 by 5.

      fixed-event-window*

      (fixed-event-window* _ size & children)

      fixed-time-window

      (fixed-time-window n & children)

      A fixed window over the event stream in time. Emits vectors of events, such that each vector has events from a distinct n-second interval. Windows do not overlap; each event appears at most once in the output stream. Once an event is emitted, all events older or equal to that emitted event are silently dropped.

      +

      This example will return a vector events partitioned 5 by 5.

      fixed-event-window*

      (fixed-event-window* _ size & children)

      fixed-time-window

      (fixed-time-window n & children)

      A fixed window over the event stream in time. Emits vectors of events, such that each vector has events from a distinct n-second interval. Windows do not overlap; each event appears at most once in the output stream. Once an event is emitted, all events older or equal to that emitted event are silently dropped.

      Events without times accrue in the current window.

      (fixed-time-window 60
         (coll-max
           (info)))
      -

      fixed-time-window*

      (fixed-time-window* _ n & children)

      from-base64

      (from-base64 field & children)

      Convert a field or multiple fields from base64 to string. Fields values should be string.

      +

      fixed-time-window*

      (fixed-time-window* _ n & children)

      from-base64

      (from-base64 field & children)

      Convert a field or multiple fields from base64 to string. Fields values should be string.

      (sdo
         ;; you can pass one field
         (from-base64 :host)
         ;; or a list of fields
         (from-base64 [:host :service]))
      -

      from-base64*

      (from-base64* _ fields & children)

      increment

      (increment & children)

      Increment the event :metric field.

      +

      from-base64*

      (from-base64* _ fields & children)

      get-env-profile

      (get-env-profile)

      include

      (include path config)

      Include an configuration file by path into the configuration. The file will be read using the aero (https://github.com/juxt/aero/) library. The config variable supports these optional options:

      +
        +
      • :profile: the aero profile to use. By default, Mirabelle will read (and convert to a Clojure keyword) the PROFILE environment variable during compilation. You can override this value by setting :profile.
      • +
      • :variables: variables to pass to the configuration file. You can use the #mirabelle/var reader in order to define variables in your EDN file.
      • +
      +

      This allows you to use the same configuration snippet (eventually templated) from multiple streams (or multiple parts of the same stream)

      +
      (includes"/etc/mirabelle/includes/my-actions.clj {:profile :dev
      +                                                   :variables {:foo "bar"})
      +

      increment

      (increment & children)

      Increment the event :metric field.

      (increment
         (index [:host]))
      -

      increment*

      (increment* _ & children)

      index

      (index labels)

      Insert events into the index. Events are indexed using the keys passed as parameter.

      +

      increment*

      (increment* _ & children)

      index

      (index labels)

      Insert events into the index. Events are indexed using the keys passed as parameter.

      (index [:host :service])
       
      -

      This example will index events by host and services.

      index*

      (index* context labels)

      info

      (info)

      Print the event in the logs using the info level

      +

      This example will index events by host and services.

      index*

      (index* context labels)

      info

      (info)

      Print the event in the logs using the info level

      (increment
         (info))
      -

      info*

      (info* _)

      io

      (io & children)

      Discard all events in test mode. Else, forward to children. You can use this stream to avoid side effects in test mode.

      io*

      (io* context & children)

      json-fields

      (json-fields fields & children)

      Takes a field or a list of fields, and converts the values associated to these fields from json to edn.

      +

      info*

      (info* _)

      io

      (io & children)

      Discard all events in test mode. Else, forward to children. You can use this stream to avoid side effects in test mode.

      io*

      (io* context & children)

      json-fields

      (json-fields fields & children)

      Takes a field or a list of fields, and converts the values associated to these fields from json to edn.

      (with :my-field "{"foo": "bar"}
         (json-fields [:my-field]))
       
      -

      In this example, we associate to :my-field a json string and then we call json-fields on it. :my-field will now contain an edn map built from the json data, with keywords as keys.

      json-fields*

      (json-fields* _ fields & children)

      keep-keys

      (keep-keys keys-to-keep & children)

      Keep only the specified keys for events.

      +

      In this example, we associate to :my-field a json string and then we call json-fields on it. :my-field will now contain an edn map built from the json data, with keywords as keys.

      json-fields*

      (json-fields* _ fields & children)

      keep-keys

      (keep-keys keys-to-keep & children)

      Keep only the specified keys for events.

      (keep-keys [:host :metric :time :environment :description]
         (info))
      -

      keep-keys*

      (keep-keys* _ keys-to-keep & children)

      keep-non-discarded-events

      (keep-non-discarded-events events)

      Takes an event or a list of events. Returns an event (or a list of events depending of the input) with all events tagged “discard” filtered. Returns nil if all events are filtered.

      log-action

      (log-action level)

      Generic logger

      moving-event-window

      (moving-event-window n & children)

      A sliding window of the last few events. Every time an event arrives, calls children with a vector of the last n events, from oldest to newest. Ignores event times. Example:

      +

      keep-keys*

      (keep-keys* _ keys-to-keep & children)

      keep-non-discarded-events

      (keep-non-discarded-events events)

      Takes an event or a list of events. Returns an event (or a list of events depending of the input) with all events tagged “discard” filtered. Returns nil if all events are filtered.

      log-action

      (log-action level)

      Generic logger

      moving-event-window

      (moving-event-window n & children)

      A sliding window of the last few events. Every time an event arrives, calls children with a vector of the last n events, from oldest to newest. Ignores event times. Example:

      (moving-event-window 5
         (coll-mean (info))
      -

      moving-event-window*

      (moving-event-window* _ n & children)

      not-expired

      (not-expired & children)

      Keep non-expired events.

      +

      moving-event-window*

      (moving-event-window* _ n & children)

      not-expired

      (not-expired & children)

      Keep non-expired events.

      (not-expired
         (increment))
       
       In this example, all non-expired events will be forwarded to the `increment`stream.
      -

      not-expired*

      (not-expired* _ & children)

      Keep non-expired events.

      outside-dt

      (outside-dt low high dt & children)

      Takes two numbers, low and high, and a time period in seconds, dt. If the condition the event metric is < low or > high is valid for all events received during at least the period dt, valid events received after the dt period will be passed on until an invalid event arrives. :metric should not be nil (it will produce exceptions).

      +

      not-expired*

      (not-expired* _ & children)

      Keep non-expired events.

      outside-dt

      (outside-dt low high dt & children)

      Takes two numbers, low and high, and a time period in seconds, dt. If the condition the event metric is < low or > high is valid for all events received during at least the period dt, valid events received after the dt period will be passed on until an invalid event arrives. :metric should not be nil (it will produce exceptions).

      (outside-dt 50 100 10
         (debug))
       
      -

      In this example, if the events :metric field are outside the 50-100 range for more than 10 seconds, events are passed downstream.

      over

      (over n & children)

      Passes on events only when their metric is greater than x.

      +

      In this example, if the events :metric field are outside the 50-100 range for more than 10 seconds, events are passed downstream.

      over

      (over n & children)

      Passes on events only when their metric is greater than x.

      (over 10
         (info))
      -

      over*

      (over* _ n & children)

      project

      (project conditions & children)

      Takes a list of conditions. Like coalesce, project will return the most recent events matching the conditions.

      +

      over*

      (over* _ n & children)

      project

      (project conditions & children)

      Takes a list of conditions. Like coalesce, project will return the most recent events matching the conditions.

      (project [[:= :service "enqueues"]
                 [:= :service "dequeues"]]
         (coll-quotient
           (with :service "enqueues per dequeue"
             (info))))
       
      -

      We divide here the latest event for the “enqueues” :service by the latest event from the “dequeues” one.

      project*

      (project* _ conditions & children)

      publish!

      (publish! channel)

      Publish events in the given channel.

      +

      We divide here the latest event for the “enqueues” :service by the latest event from the “dequeues” one.

      project*

      (project* _ conditions & children)

      publish!

      (publish! channel)

      Publish events in the given channel.

      (publish! :my-channel)
       
      -

      Users can then subscribe to channels using the websocket engine.

      publish!*

      (publish!* context channel)

      push-io!

      (push-io! io-name)

      Push events to an external system.

      +

      Users can then subscribe to channels using the websocket engine.

      publish!*

      (publish!* context channel)

      push-io!

      (push-io! io-name)

      Push events to an external system.

      I/O are defined in a dedicated file. If you create a new I/O named :influxdb for example, you can use push-io! to push all events into this I/O:

      (push-io! :influxdb)
       
      -

      I/O are automatically discarded in test mode.

      push-io!*

      (push-io!* context io-name)

      reaper

      (reaper interval)(reaper interval destination-stream)

      Everytime this action receives an event, it will expires events from the index (every dt seconds) and reinject them into a stream (default to the current stream if not specified).

      +

      I/O are automatically discarded in test mode.

      push-io!*

      (push-io!* context io-name)

      reaper

      (reaper interval)(reaper interval destination-stream)

      Everytime this action receives an event, it will expires events from the index (every dt seconds) and reinject them into a stream (default to the current stream if not specified).

      (reaper 5)
       
      (reaper 5 :custom-stream)
      -

      reaper*

      (reaper* context interval destination-stream)

      reinject!

      (reinject!)(reinject! destination-stream)

      Reinject an event into the streaming system. By default, events are reinject into the real time engine. You can reinject events to a specific stream by passing the destination stream as parameter.

      +

      reaper*

      (reaper* context interval destination-stream)

      reinject!

      (reinject!)(reinject! destination-stream)

      Reinject an event into the streaming system. By default, events are reinject into the real time engine. You can reinject events to a specific stream by passing the destination stream as parameter.

      (reinject)
       

      This example reinjects events into the real stream engine.

      (reinject :foo)
       
      -

      This example reinjects events into the stream named :foo.

      reinject!*

      (reinject!* context destination-stream)

      rename-keys

      (rename-keys replacement & children)

      Rename events keys.

      +

      This example reinjects events into the stream named :foo.

      reinject!*

      (reinject!* context destination-stream)

      rename-keys

      (rename-keys replacement & children)

      Rename events keys.

      (rename-keys {:host :service
                     :environment :env}
       
      -

      In this example, the :host key will be renamed :service and the :environment key is renamed :env. Existing values will be overrided.

      rename-keys*

      (rename-keys* _ replacement & children)

      scale

      (scale factor & children)

      Multiplies the event :metric field by the factor passed as parameter.

      +

      In this example, the :host key will be renamed :service and the :environment key is renamed :env. Existing values will be overrided.

      rename-keys*

      (rename-keys* _ replacement & children)

      scale

      (scale factor & children)

      Multiplies the event :metric field by the factor passed as parameter.

      (scale 1000
         (info
       
      -

      This example will multiply the :metric field for all events by 1000.

      scale*

      (scale* _ factor & children)

      sdissoc

      (sdissoc fields & children)

      Remove a key (or a list of keys) from the events/

      +

      This example will multiply the :metric field for all events by 1000.

      scale*

      (scale* _ factor & children)

      sdissoc

      (sdissoc fields & children)

      Remove a key (or a list of keys) from the events/

      (sdissoc :host (info))
       
       (sdissoc [:environment :host] (info))
      -

      sdissoc*

      (sdissoc* _ fields & children)

      sdo

      (sdo & children)

      Send events to children. useful when you want to send the same events to multiple downstream actions.

      +

      sdissoc*

      (sdissoc* _ fields & children)

      sdo

      (sdo & children)

      Send events to children. useful when you want to send the same events to multiple downstream actions.

      (sdo
         (increment)
         (decrement))
       
      -

      Here, events arriving in sdo will be forwarded to both increment and decrement.

      sdo*

      (sdo* _ & children)

      sflatten

      (sflatten & children)

      Streaming flatten. Calls children with each event in events. Events should be a sequence.

      +

      Here, events arriving in sdo will be forwarded to both increment and decrement.

      sdo*

      (sdo* _ & children)

      sflatten

      (sflatten & children)

      Streaming flatten. Calls children with each event in events. Events should be a sequence.

      This stream can be used to “flat” a sequence of events (emitted by a time window stream for example).

      (fixed-event-window 5
         (sflatten
           (info)))
      -

      sflatten*

      (sflatten* _ & children)

      sformat

      (sformat template target-field fields & children)

      Takes the content of multiple event keys, and use them to build a string value and assign it to a given key.

      +

      sflatten*

      (sflatten* _ & children)

      sformat

      (sformat template target-field fields & children)

      Takes the content of multiple event keys, and use them to build a string value and assign it to a given key.

      (sformat "%s-foo-%s" :format-test [:host :service])
       

      If the event {:host "machine" :service "bar"} is passed to this action the event will become {:host "machine" :service "bar" :format-test "machine-foo-bar"}.

      -

      More information about availables formatters in the Clojure documentation: https://clojuredocs.org/clojure.core/format

      sformat*

      (sformat* _ template target-field fields & children)

      split

      (split & clauses)

      Split by conditions.

      +

      More information about availables formatters in the Clojure documentation: https://clojuredocs.org/clojure.core/format

      sformat*

      (sformat* _ template target-field fields & children)

      split

      (split & clauses)

      Split by conditions.

      (split
         [:> :metric 10] (debug)
         [:> :metric 5] (info)
         (error)
       

      In this example, all events with :metric > 10 will go into the debug stream, all events with :metric > 5 in the info stream, and other events will to the default stream which is “error”.

      -

      The default stream is optional, if not set all events not matching a condition will be discarded.

      split*

      (split* _ clauses & children)

      stable

      (stable dt field & children)

      Takes a duration (dt) in second and a field name as parameter. Returns events where the value of the field specified as second argument is equal to the value of the field for the last event, for at least dt seconds. Events can be buffered for dt seconds before being forwarded in order to see if they are stable or not.

      +

      The default stream is optional, if not set all events not matching a condition will be discarded.

      split*

      (split* _ clauses & children)

      stable

      (stable dt field & children)

      Takes a duration (dt) in second and a field name as parameter. Returns events where the value of the field specified as second argument is equal to the value of the field for the last event, for at least dt seconds. Events can be buffered for dt seconds before being forwarded in order to see if they are stable or not.

      Events should arrive in order (old events will be dropped).

      You can use this stream to remove flapping states for example.

      (stable 10 :state
         (info))
       
      -

      In this example, events will be forwarded of the value of the :state key is the same for at least 10 seconds

      stable*

      (stable* _ dt field & children)

      stream

      (stream config & children)

      Creates a new stream. This action takes a map where the :name key, which will be the name of the stream, is mandatory.

      streams

      (streams & streams)

      Entrypoint for all streams.

      +

      In this example, events will be forwarded of the value of the :state key is the same for at least 10 seconds

      stable*

      (stable* _ dt field & children)

      stream

      (stream config & children)

      Creates a new stream. This action takes a map where the :name key, which will be the name of the stream, is mandatory.

      streams

      (streams & streams)

      Entrypoint for all streams.

      (streams
         (stream {:name :fobar}
           (info))
         (stream {:name :foo}
           (info)))
      -

      tag

      (tag tags & children)

      Adds a new tag, or set of tags, to events which flow through.

      +

      tag

      (tag tags & children)

      Adds a new tag, or set of tags, to events which flow through.

      (tag "foo"
         (info))
       

      This example adds the tag “foo” to events.

      (tag ["foo" "bar"] (info))
       
      -

      This example adds the tag “foo” and “bar” to events.

      tag*

      (tag* _ tags & children)

      tagged-all

      (tagged-all tags & children)

      Passes on events where all tags are present.

      +

      This example adds the tag “foo” and “bar” to events.

      tag*

      (tag* _ tags & children)

      tagged-all

      (tagged-all tags & children)

      Passes on events where all tags are present.

      (tagged-all "foo"
         (info))
       

      This example keeps only events tagged “foo”.

      (tagged-all ["foo" "bar"] (info))
       
      -

      This example keeps only events tagged “foo” and “bar”.

      tagged-all*

      (tagged-all* _ tags & children)

      tap

      (tap tap-name)

      Save events into the tap. Noop outside tests.

      +

      This example keeps only events tagged “foo” and “bar”.

      tagged-all*

      (tagged-all* _ tags & children)

      tap

      (tap tap-name)

      Save events into the tap. Noop outside tests.

      (where [:= :service "foo"]
         (tap :foo)
       
      -

      In test mode, all events with :service “foo” will be saved in a tap named :foo

      tap*

      (tap* context tape-name)

      test-action

      (test-action state & children)

      Bufferize all received events in the state (an atom) passed as parameter

      test-action*

      (test-action* _ state)

      throttle

      (throttle dt & children)

      Let one event pass at most every dt seconds. Can be used for example to avoid sending to limit the number of alerts sent to an external system.

      -
      (throttle 10
      -  (alert))
      +

      In test mode, all events with :service “foo” will be saved in a tap named :foo

      tap*

      (tap* context tape-name)

      test-action

      (test-action state & children)

      Bufferize all received events in the state (an atom) passed as parameter

      test-action*

      (test-action* _ state)

      throttle

      (throttle n dt & children)

      Let N event pass at most every dt seconds. Can be used for example to avoid sending to limit the number of alerts sent to an external system.

      +
      (throttle 3 10
      +  (error))
       
      -

      In this example, throttle will let one event pass at most every 10 seconds. Other events, or events with no time, are filtered.

      throttle*

      (throttle* _ dt & children)

      to-base64

      (to-base64 field & children)

      Convert a field or multiple fields to base64. Fields values should be string.

      +

      In this example, throttle will let 3 events pass at most every 10 seconds. Other events, or events with no time, are filtered.

      throttle*

      (throttle* _ n dt & children)

      to-base64

      (to-base64 field & children)

      Convert a field or multiple fields to base64. Fields values should be string.

      (sdo
         ;; you can pass one field
         (to-base64 :host)
         ;; or a list of fields
         (to-base64 [:host :service]))
      -

      to-base64*

      (to-base64* _ fields & children)

      under

      (under n & children)

      Passes on events only when their metric is under than x.

      +

      to-base64*

      (to-base64* _ fields & children)

      under

      (under n & children)

      Passes on events only when their metric is under than x.

      (under 10
         (info))
      -

      under*

      (under* _ n & children)

      untag

      (untag tags & children)

      Removes a tag, or set of tags, from events which flow through.

      +

      under*

      (under* _ n & children)

      untag

      (untag tags & children)

      Removes a tag, or set of tags, from events which flow through.

      (untag "foo" index)
       

      This example removes the tag “foo” from events.

      (untag ["foo" "bar"] index)
       
      -

      This example removes the tags “foo” and “bar” from events

      untag*

      (untag* _ tags & children)

      warning

      (warning & children)

      Keep all events in state warning.

      +

      This example removes the tags “foo” and “bar” from events

      untag*

      (untag* _ tags & children)

      warning

      (warning & children)

      Keep all events in state warning.

      (warning
         (warning))
       
      -

      In this example, all events with :state “warning” will be logged.

      warning*

      (warning* _ & children)

      where

      (where conditions & children)

      Filter events based on conditions. Each condition is a vector composed of the function to apply on the field, the field to extract from the event, and the event itself. Multiple conditions can be added by using :or or :and.

      +

      In this example, all events with :state “warning” will be logged.

      warning*

      (warning* _ & children)

      where

      (where conditions & children)

      Filter events based on conditions. Each condition is a vector composed of the function to apply on the field, the field to extract from the event, and the event itself. Multiple conditions can be added by using :or or :and.

      (where [:= :metric 4])
       

      Here, we keep only events where the :metric field is equal to 4.

      (where [:and [:= :host "foo"]
                    [:> :metric 10])
       
      -

      Here, we keep only events with :host = foo and with :metric > 10

      where*

      (where* _ conditions & children)

      with

      (with & args)

      Set an event field to the given value.

      +

      Here, we keep only events with :host = foo and with :metric > 10

      where*

      (where* _ conditions & children)

      with

      (with & args)

      Set an event field to the given value.

      (with :state "critical"
         (debug))
       
      @@ -281,4 +289,4 @@
      (with {:service "foo" :state "critical"}
         (debug))
       
      -

      This example set the the field :service to “foo” and the field :state to “critical” for events.

      with*

      (with* _ fields & children)
      \ No newline at end of file +

      This example set the the field :service to “foo” and the field :state to “critical” for events.

      with*

      (with* _ fields & children)
      \ No newline at end of file diff --git a/site/api/mirabelle.b64.html b/site/api/mirabelle.b64.html index 2c1eeba..bac0a14 100644 --- a/site/api/mirabelle.b64.html +++ b/site/api/mirabelle.b64.html @@ -1,3 +1,3 @@ -mirabelle.b64 documentation

      mirabelle.b64

      from-base64

      (from-base64 s)

      to-base64

      (to-base64 s)
      \ No newline at end of file +mirabelle.b64 documentation

      mirabelle.b64

      from-base64

      (from-base64 s)

      to-base64

      (to-base64 s)
      \ No newline at end of file diff --git a/site/api/mirabelle.config.html b/site/api/mirabelle.config.html index 162efc0..1283553 100644 --- a/site/api/mirabelle.config.html +++ b/site/api/mirabelle.config.html @@ -1,3 +1,3 @@ -mirabelle.config documentation

      mirabelle.config

      compile-config!

      (compile-config! src-dir dest-dir)

      load-config

      (load-config)

      name->compiled

      (name->compiled f)

      Get a file, returns a vector where the first value is the file name and the second value the compiled version of it.

      \ No newline at end of file +mirabelle.config documentation

      mirabelle.config

      compile-config!

      (compile-config! src-dir dest-dir)

      load-config

      (load-config)

      name->compiled

      (name->compiled f)

      Get a file, returns a vector where the first value is the file name and the second value the compiled version of it.

      \ No newline at end of file diff --git a/site/api/mirabelle.core.html b/site/api/mirabelle.core.html index 3e2016a..7cc7a15 100644 --- a/site/api/mirabelle.core.html +++ b/site/api/mirabelle.core.html @@ -1,3 +1,3 @@ -mirabelle.core documentation

      mirabelle.core

      -main

      (-main & args)

      Starts the application

      build-system

      (build-system {:keys [tcp stream http queue io websocket]})

      compile!

      (compile! args)

      init-system

      (init-system config)

      Initialize system, dropping the previous state.

      reload!

      (reload!)

      start!

      (start!)

      Start the system.

      stop!

      (stop!)

      Stop the system.

      system

      test!

      (test!)
      \ No newline at end of file +mirabelle.core documentation

      mirabelle.core

      -main

      (-main & args)

      Starts the application

      build-system

      (build-system {:keys [tcp stream http queue io websocket]})

      compile!

      (compile! args)

      init-system

      (init-system config)

      Initialize system, dropping the previous state.

      reload!

      (reload!)

      start!

      (start!)

      Start the system.

      stop!

      (stop!)

      Stop the system.

      system

      test!

      (test!)
      \ No newline at end of file diff --git a/site/api/mirabelle.db.queue.html b/site/api/mirabelle.db.queue.html index fb1acce..23d4db0 100644 --- a/site/api/mirabelle.db.queue.html +++ b/site/api/mirabelle.db.queue.html @@ -1,3 +1,3 @@ -mirabelle.db.queue documentation

      mirabelle.db.queue

      IQueue

      protocol

      members

      read-all!

      (read-all! this action)

      read all events from the queue, callling (action events) for each event.

      write!

      (write! this event)

      push an event in the queue

      make

      (make queue)(make queue _)

      Creates a new appender instance. Takes a queue to append to as argument. You can also call datafy on the appender to get associated data.

      \ No newline at end of file +mirabelle.db.queue documentation

      mirabelle.db.queue

      IQueue

      protocol

      members

      read-all!

      (read-all! this action)

      read all events from the queue, callling (action events) for each event.

      write!

      (write! this event)

      push an event in the queue

      make

      (make queue)(make queue _)

      Creates a new appender instance. Takes a queue to append to as argument. You can also call datafy on the appender to get associated data.

      \ No newline at end of file diff --git a/site/api/mirabelle.event.html b/site/api/mirabelle.event.html index 24d17df..d340a1d 100644 --- a/site/api/mirabelle.event.html +++ b/site/api/mirabelle.event.html @@ -1,3 +1,3 @@ -mirabelle.event documentation

      mirabelle.event

      critical?

      (critical? event)

      Verifies if an event is critical

      expired?

      (expired? current-time event)

      Verifies if an event is expired

      most-recent

      (most-recent events)

      Get the most recent event from an event list

      most-recent?

      (most-recent? event1 event2)

      Returns true if event 1 is most recent than event 2. Does not work with events with no time.

      sequential-events

      (sequential-events event)

      tagged-all?

      (tagged-all? tags event)

      Predicate function to check if a collection of tags is present in the tags of event.

      warning?

      (warning? event)

      Verifies if an event is warning

      \ No newline at end of file +mirabelle.event documentation

      mirabelle.event

      critical?

      (critical? event)

      Verifies if an event is critical

      expired?

      (expired? current-time event)

      Verifies if an event is expired

      most-recent

      (most-recent events)

      Get the most recent event from an event list

      most-recent?

      (most-recent? event1 event2)

      Returns true if event 1 is most recent than event 2. Does not work with events with no time.

      sequential-events

      (sequential-events event)

      tagged-all?

      (tagged-all? tags event)

      Predicate function to check if a collection of tags is present in the tags of event.

      warning?

      (warning? event)

      Verifies if an event is warning

      \ No newline at end of file diff --git a/site/api/mirabelle.graphviz.html b/site/api/mirabelle.graphviz.html index 613d506..280ed65 100644 --- a/site/api/mirabelle.graphviz.html +++ b/site/api/mirabelle.graphviz.html @@ -1,3 +1,3 @@ -mirabelle.graphviz documentation

      mirabelle.graphviz

      action->graphviz

      (action->graphviz parent parent-params actions)

      graphviz

      (graphviz streams-directories destination)

      stream->graphviz

      (stream->graphviz config)
      \ No newline at end of file +mirabelle.graphviz documentation

      mirabelle.graphviz

      action->graphviz

      (action->graphviz parent parent-params actions)

      graphviz

      (graphviz streams-directories destination)

      stream->graphviz

      (stream->graphviz config)
      \ No newline at end of file diff --git a/site/api/mirabelle.handler.html b/site/api/mirabelle.handler.html index 1b59106..833a4a0 100644 --- a/site/api/mirabelle.handler.html +++ b/site/api/mirabelle.handler.html @@ -1,3 +1,3 @@ -mirabelle.handler documentation

      mirabelle.handler

      assert-spec-valid

      (assert-spec-valid spec params)

      dispatch-map

      IHandler

      protocol

      members

      add-stream

      (add-stream this params)

      add a new stream

      current-time

      (current-time this params)

      get the current time of the real time engine.

      get-stream

      (get-stream this params)

      Get a stream

      healthz

      (healthz this params)

      Healthz handler

      list-streams

      (list-streams this params)

      list dynamic streams

      metrics

      (metrics this params)

      Return the metrics

      not-found

      (not-found this params)

      Not found handler

      push-event

      (push-event this params)

      Push an event to a stream

      remove-stream

      (remove-stream this params)

      remove a stream

      search-index

      (search-index this params)

      query the index

      path-vars-regex

      \ No newline at end of file +mirabelle.handler documentation

      mirabelle.handler

      assert-spec-valid

      (assert-spec-valid spec params)

      dispatch-map

      IHandler

      protocol

      members

      add-stream

      (add-stream this params)

      add a new stream

      current-time

      (current-time this params)

      get the current time of the real time engine.

      get-stream

      (get-stream this params)

      Get a stream

      healthz

      (healthz this params)

      Healthz handler

      list-streams

      (list-streams this params)

      list dynamic streams

      metrics

      (metrics this params)

      Return the metrics

      not-found

      (not-found this params)

      Not found handler

      push-event

      (push-event this params)

      Push an event to a stream

      remove-stream

      (remove-stream this params)

      remove a stream

      search-index

      (search-index this params)

      query the index

      path-vars-regex

      \ No newline at end of file diff --git a/site/api/mirabelle.http.html b/site/api/mirabelle.http.html index 5708a67..61d234d 100644 --- a/site/api/mirabelle.http.html +++ b/site/api/mirabelle.http.html @@ -1,3 +1,3 @@ -mirabelle.http documentation

      mirabelle.http

      execute!

      (execute! request chain)

      interceptor-chain

      (interceptor-chain api-handler registry)
      \ No newline at end of file +mirabelle.http documentation

      mirabelle.http

      interceptor-chain

      (interceptor-chain {:keys [api-handler registry]})
      \ No newline at end of file diff --git a/site/api/mirabelle.index.html b/site/api/mirabelle.index.html index f349b89..d83cc99 100644 --- a/site/api/mirabelle.index.html +++ b/site/api/mirabelle.index.html @@ -1,3 +1,3 @@ -mirabelle.index documentation

      mirabelle.index

      channel

      (channel stream-name)

      Build the index channel name for ws subscriptions for a given stream.

      IIndex

      protocol

      members

      clear-index

      (clear-index this)

      Resets the index

      current-time

      (current-time this)

      Returns the index current time

      delete

      (delete this labels)

      Deletes an event by labels.

      expire

      (expire this)

      Return a seq of expired states from this index, removing each.

      insert

      (insert this event labels)

      Updates index with event

      lookup

      (lookup this labels)

      Lookup an indexed event from the index

      new-time?

      (new-time? this t)

      Takes a number representing the time as parameter and set the index current time if necessary

      size-index

      (size-index this)

      Returns the index size

      \ No newline at end of file +mirabelle.index documentation

      mirabelle.index

      channel

      (channel stream-name)

      Build the index channel name for ws subscriptions for a given stream.

      IIndex

      protocol

      members

      clear-index

      (clear-index this)

      Resets the index

      current-time

      (current-time this)

      Returns the index current time

      delete

      (delete this labels)

      Deletes an event by labels.

      expire

      (expire this)

      Return a seq of expired states from this index, removing each.

      insert

      (insert this event labels)

      Updates index with event

      lookup

      (lookup this labels)

      Lookup an indexed event from the index

      new-time?

      (new-time? this t)

      Takes a number representing the time as parameter and set the index current time if necessary

      size-index

      (size-index this)

      Returns the index size

      \ No newline at end of file diff --git a/site/api/mirabelle.io.elasticsearch.html b/site/api/mirabelle.io.elasticsearch.html new file mode 100644 index 0000000..b312dc3 --- /dev/null +++ b/site/api/mirabelle.io.elasticsearch.html @@ -0,0 +1,3 @@ + +mirabelle.io.elasticsearch documentation

      mirabelle.io.elasticsearch

      config->http-hosts

      (config->http-hosts config)

      create-client

      (create-client {:keys [service-token api-key], :as config})

      format-event

      (format-event {:keys [default-index default-index-formatter]} event)

      format-events

      (format-events config events)

      http-config-callback

      (http-config-callback {:keys [cacert cert thread-count basic-auth], :as config})

      request-config-callback

      (request-config-callback {:keys [connect-timeout socket-timeout]})
      \ No newline at end of file diff --git a/site/api/mirabelle.io.file.html b/site/api/mirabelle.io.file.html index 8820d20..6d3c76e 100644 --- a/site/api/mirabelle.io.file.html +++ b/site/api/mirabelle.io.file.html @@ -1,3 +1,3 @@ -mirabelle.io.file documentation

      mirabelle.io.file

      \ No newline at end of file +mirabelle.io.file documentation

      mirabelle.io.file

      \ No newline at end of file diff --git a/site/api/mirabelle.io.html b/site/api/mirabelle.io.html index 42ccf17..2fc1e47 100644 --- a/site/api/mirabelle.io.html +++ b/site/api/mirabelle.io.html @@ -1,3 +1,3 @@ -mirabelle.io documentation

      mirabelle.io

      IO

      protocol

      members

      inject!

      (inject! this event)

      Inject an event in this IO component

      \ No newline at end of file +mirabelle.io documentation

      mirabelle.io

      IO

      protocol

      members

      inject!

      (inject! this event)

      Inject an event in this IO component

      \ No newline at end of file diff --git a/site/api/mirabelle.io.influxdb.html b/site/api/mirabelle.io.influxdb.html index 1276b96..34c863e 100644 --- a/site/api/mirabelle.io.influxdb.html +++ b/site/api/mirabelle.io.influxdb.html @@ -1,3 +1,3 @@ -mirabelle.io.influxdb documentation

      mirabelle.io.influxdb

      converts-double

      (converts-double n)

      if n if a ratio, converts it to double. Returns n otherwise.

      default-config

      event->point

      (event->point config event)

      Converts an event to an InfluxDB Point.

      influxdb-client

      (influxdb-client config)

      Build an InfluxDB client from a configuration map.

      influxdb-options

      (influxdb-options config)
      \ No newline at end of file +mirabelle.io.influxdb documentation

      mirabelle.io.influxdb

      converts-double

      (converts-double n)

      if n if a ratio, converts it to double. Returns n otherwise.

      default-config

      event->point

      (event->point config event)

      Converts an event to an InfluxDB Point.

      influxdb-client

      (influxdb-client config)

      Build an InfluxDB client from a configuration map.

      influxdb-options

      (influxdb-options config)
      \ No newline at end of file diff --git a/site/api/mirabelle.io.pagerduty.html b/site/api/mirabelle.io.pagerduty.html index 23d19a2..671e506 100644 --- a/site/api/mirabelle.io.pagerduty.html +++ b/site/api/mirabelle.io.pagerduty.html @@ -1,3 +1,3 @@ -mirabelle.io.pagerduty documentation

      mirabelle.io.pagerduty

      event+keys->str

      (event+keys->str event event-keys separator)

      event-url

      format-event

      (format-event {:keys [source-key summary-keys]} event)

      Formats an event for PagerDuty v2 API

      formatter

      parse-timestamp

      (parse-timestamp event)

      post

      (post request-body url options)

      POST to the PagerDuty events API.

      request-body

      (request-body {:keys [service-key dedup-keys], :as this} event-action event)

      Generate PD v2 API request body. event-action is one of :trigger, :acknowledge, :resolve

      send-event

      (send-event {:keys [http-options], :as component} event-action event)

      Send an event to Pagerduty.

      valid-actions

      \ No newline at end of file +mirabelle.io.pagerduty documentation

      mirabelle.io.pagerduty

      event+keys->str

      (event+keys->str event event-keys separator)

      event-url

      format-event

      (format-event {:keys [source-key summary-keys]} event)

      Formats an event for PagerDuty v2 API

      parse-timestamp

      (parse-timestamp event)

      post

      (post request-body url options)

      POST to the PagerDuty events API.

      request-body

      (request-body {:keys [service-key dedup-keys], :as this} event-action event)

      Generate PD v2 API request body. event-action is one of :trigger, :acknowledge, :resolve

      send-event

      (send-event {:keys [http-options], :as component} event-action event)

      Send an event to Pagerduty.

      valid-actions

      \ No newline at end of file diff --git a/site/api/mirabelle.math.html b/site/api/mirabelle.math.html index 0b1abff..02592f2 100644 --- a/site/api/mirabelle.math.html +++ b/site/api/mirabelle.math.html @@ -1,5 +1,5 @@ -mirabelle.math documentation

      mirabelle.math

      count-events

      (count-events events)

      Count the number of events. The latest event is used as a base to build the event returned by this funcion.

      extremum

      (extremum operation events)

      extremum-n

      (extremum-n nb comparator events)

      Takes a number of events, a comparator and a list of events. Sort the events based on the :metric field and by using the comparator and Return the first nb events.

      max-event

      (max-event events)

      Takes a list of event and returns the event with the biggest metric

      mean

      (mean events)

      Takes a list of events and returns the metrics mean. The latest event is used as a base to build the event returned by this funcion.

      min-event

      (min-event events)

      Takes a list of event and returns the event with the smallest metric

      quotient

      (quotient events)

      Takes a list of events Divide the first event :metrìc field by all subsequent events :metric

      -

      Throws if it divides by zero.

      rate

      (rate events)

      Takes a list of events and compute the rate for them. Use the most recent event as a base for the new event.

      sorted-sample

      (sorted-sample s points)

      Sample a sequence of events at points. Returns events with the :quantile key set to the computed quantile. For instance, (sorted-sample events [0 1]) returns a 2-element seq of the smallest event and the biggest event, by metric. The first has a quantile set to 0 and the second one set to in 1. Useful for extracting histograms and percentiles.

      -

      When s is empty, returns an empty list.

      sorted-sample-extract

      (sorted-sample-extract s points)

      Returns the events in seqable s, sorted and taken at each point p of points, where p ranges from 0 (smallest metric) to 1 (largest metric). 0.5 is the median event, 0.95 is the 95th’ percentile event, and so forth. Ignores events without a metric.

      sum-events

      (sum-events events)

      Sum all events :metric. Use the most recent event as a base for the new event.

      \ No newline at end of file +mirabelle.math documentation

      mirabelle.math

      count-events

      (count-events events)

      Count the number of events. The latest event is used as a base to build the event returned by this funcion.

      extremum

      (extremum operation events)

      extremum-n

      (extremum-n nb comparator events)

      Takes a number of events, a comparator and a list of events. Sort the events based on the :metric field and by using the comparator and Return the first nb events.

      max-event

      (max-event events)

      Takes a list of event and returns the event with the biggest metric

      mean

      (mean events)

      Takes a list of events and returns the metrics mean. The latest event is used as a base to build the event returned by this funcion.

      min-event

      (min-event events)

      Takes a list of event and returns the event with the smallest metric

      quotient

      (quotient events)

      Takes a list of events Divide the first event :metrìc field by all subsequent events :metric

      +

      Throws if it divides by zero.

      rate

      (rate events)

      Takes a list of events and compute the rate for them. Use the most recent event as a base for the new event.

      sorted-sample

      (sorted-sample s points)

      Sample a sequence of events at points. Returns events with the :quantile key set to the computed quantile. For instance, (sorted-sample events [0 1]) returns a 2-element seq of the smallest event and the biggest event, by metric. The first has a quantile set to 0 and the second one set to in 1. Useful for extracting histograms and percentiles.

      +

      When s is empty, returns an empty list.

      sorted-sample-extract

      (sorted-sample-extract s points)

      Returns the events in seqable s, sorted and taken at each point p of points, where p ranges from 0 (smallest metric) to 1 (largest metric). 0.5 is the median event, 0.95 is the 95th’ percentile event, and so forth. Ignores events without a metric.

      sum-events

      (sum-events events)

      Sum all events :metric. Use the most recent event as a base for the new event.

      \ No newline at end of file diff --git a/site/api/mirabelle.path.html b/site/api/mirabelle.path.html index 935c637..11a1392 100644 --- a/site/api/mirabelle.path.html +++ b/site/api/mirabelle.path.html @@ -1,3 +1,3 @@ -mirabelle.path documentation

      mirabelle.path

      new-path

      (new-path base-path & args)

      Creates a path.

      \ No newline at end of file +mirabelle.path documentation

      mirabelle.path

      new-path

      (new-path base-path & args)

      Creates a path.

      \ No newline at end of file diff --git a/site/api/mirabelle.pool.html b/site/api/mirabelle.pool.html index 157df9c..f80539f 100644 --- a/site/api/mirabelle.pool.html +++ b/site/api/mirabelle.pool.html @@ -1,9 +1,9 @@ -mirabelle.pool documentation

      mirabelle.pool

      dynamic-thread-pool-executor

      (dynamic-thread-pool-executor registry executor-name {:keys [core-pool-size max-pool-size keep-alive-time queue-size], :or {core-pool-size 1, max-pool-size 8, keep-alive-time 5000, queue-size 10000}})

      a ThreadPoolExecutor with core and maximum threadpool sizes, and a LinkedBlockingQueue of a given size. Options:

      +mirabelle.pool documentation

      mirabelle.pool

      dynamic-thread-pool-executor

      (dynamic-thread-pool-executor registry executor-name {:keys [core-pool-size max-pool-size keep-alive-time queue-size], :or {core-pool-size 1, max-pool-size 8, keep-alive-time 5000, queue-size 10000}})

      a ThreadPoolExecutor with core and maximum threadpool sizes, and a LinkedBlockingQueue of a given size. Options:

      • :core-pool-size Default 1
      • :max-pool-size Default 8
      • :keep-alive-time Default 5000 (milliseconds)
      • :queue-size Default 10000
      • -

      fixed-thread-pool-executor

      (fixed-thread-pool-executor size)

      schedule!

      (schedule! f {:keys [initial-delay-ms interval-ms]})

      shutdown

      (shutdown executor)

      Graceful shutdown of an executor

      thread-pool-executor-metrics

      (thread-pool-executor-metrics registry executor executor-name)

      Register metrics for a threadPoolExecutor

      \ No newline at end of file +

      fixed-thread-pool-executor

      (fixed-thread-pool-executor size)

      schedule!

      (schedule! f {:keys [initial-delay-ms interval-ms]})

      shutdown

      (shutdown executor)

      Graceful shutdown of an executor

      thread-pool-executor-metrics

      (thread-pool-executor-metrics registry executor executor-name)

      Register metrics for a threadPoolExecutor

      \ No newline at end of file diff --git a/site/api/mirabelle.pubsub.html b/site/api/mirabelle.pubsub.html index dae2d89..9e23853 100644 --- a/site/api/mirabelle.pubsub.html +++ b/site/api/mirabelle.pubsub.html @@ -1,3 +1,3 @@ -mirabelle.pubsub documentation

      mirabelle.pubsub

      IPubSub

      protocol

      members

      add

      (add this channel handler)

      publish!

      (publish! this channel event)

      rm

      (rm this channel id)
      \ No newline at end of file +mirabelle.pubsub documentation

      mirabelle.pubsub

      IPubSub

      protocol

      members

      add

      (add this channel handler)

      publish!

      (publish! this channel event)

      rm

      (rm this channel id)
      \ No newline at end of file diff --git a/site/api/mirabelle.spec.html b/site/api/mirabelle.spec.html index 84ce444..3a9329d 100644 --- a/site/api/mirabelle.spec.html +++ b/site/api/mirabelle.spec.html @@ -1,3 +1,3 @@ -mirabelle.spec documentation

      mirabelle.spec

      not-null

      (not-null v)

      valid?

      (valid? spec value)
      \ No newline at end of file +mirabelle.spec documentation

      mirabelle.spec

      not-null

      (not-null v)

      valid-action?

      (valid-action? spec value)

      valid?

      (valid? spec value)
      \ No newline at end of file diff --git a/site/api/mirabelle.stream.html b/site/api/mirabelle.stream.html index c8b9d9a..700f52a 100644 --- a/site/api/mirabelle.stream.html +++ b/site/api/mirabelle.stream.html @@ -1,4 +1,4 @@ -mirabelle.stream documentation

      mirabelle.stream

      compile!

      (compile! context stream)

      compile-io!

      (compile-io! registry io-name io-config custom-io)

      Config an IO configuration. {:type :file :config {:path …}}.

      -

      Adds the :component key to the IO

      compile-stream!

      (compile-stream! context stream)

      Compile a stream to functions and associate to it its entrypoint.

      config-keys

      (config-keys config)

      Returns, from a configuration, the keys as a set

      IStreamHandler

      protocol

      members

      add-dynamic-stream

      (add-dynamic-stream this stream-name stream-configuration)

      Add a new stream

      context

      (context this source-stream)

      Return the streams context

      get-dynamic-stream

      (get-dynamic-stream this stream-name)

      Get a dynamic stream

      list-dynamic-streams

      (list-dynamic-streams this)

      List dynamic streams

      push!

      (push! this event streams)

      Inject an event into a list of streams

      reload

      (reload this)

      Add the new configuration

      remove-dynamic-stream

      (remove-dynamic-stream this stream-name)

      Remove a stream by name

      new-config

      (new-config old-config new-config)

      read-edn-dirs

      (read-edn-dirs dirs-path)

      returns the edn content from a list of directories. All files in the directories are read.

      stream!

      (stream! stream event)
      \ No newline at end of file +mirabelle.stream documentation

      mirabelle.stream

      compile!

      (compile! context stream)

      compile-io!

      (compile-io! registry io-name io-config custom-io)

      Config an IO configuration. {:type :file :config {:path …}}.

      +

      Adds the :component key to the IO

      compile-stream!

      (compile-stream! context stream)

      Compile a stream to functions and associate to it its entrypoint.

      config-keys

      (config-keys config)

      Returns, from a configuration, the keys as a set

      IStreamHandler

      protocol

      members

      add-dynamic-stream

      (add-dynamic-stream this stream-name stream-configuration)

      Add a new stream

      context

      (context this source-stream)

      Return the streams context

      get-dynamic-stream

      (get-dynamic-stream this stream-name)

      Get a dynamic stream

      list-dynamic-streams

      (list-dynamic-streams this)

      List dynamic streams

      push!

      (push! this event streams)

      Inject an event into a list of streams

      reload

      (reload this)

      Add the new configuration

      remove-dynamic-stream

      (remove-dynamic-stream this stream-name)

      Remove a stream by name

      new-config

      (new-config old-config new-config)

      read-edn-dirs

      (read-edn-dirs dirs-path)

      returns the edn content from a list of directories. All files in the directories are read.

      stream!

      (stream! stream event)
      \ No newline at end of file diff --git a/site/api/mirabelle.test.html b/site/api/mirabelle.test.html index fbd698b..f11a664 100644 --- a/site/api/mirabelle.test.html +++ b/site/api/mirabelle.test.html @@ -1,3 +1,3 @@ -mirabelle.test documentation

      mirabelle.test

      launch-tests

      (launch-tests {:keys [stream test]})

      test-result->message

      (test-result->message result)

      Takes results from tests, build an human readable message

      \ No newline at end of file +mirabelle.test documentation

      mirabelle.test

      launch-tests

      (launch-tests {:keys [stream test]})

      test-result->message

      (test-result->message result)

      Takes results from tests, build an human readable message

      \ No newline at end of file diff --git a/site/api/mirabelle.time.html b/site/api/mirabelle.time.html index c9d7212..54c6c69 100644 --- a/site/api/mirabelle.time.html +++ b/site/api/mirabelle.time.html @@ -1,3 +1,3 @@ -mirabelle.time documentation

      mirabelle.time

      default-ttl

      now

      (now)

      Returns the current time in second

      \ No newline at end of file +mirabelle.time documentation

      mirabelle.time

      default-ttl

      now

      (now)

      Returns the current time in second

      \ No newline at end of file diff --git a/site/api/mirabelle.transport.html b/site/api/mirabelle.transport.html index ab10bdc..9afa742 100644 --- a/site/api/mirabelle.transport.html +++ b/site/api/mirabelle.transport.html @@ -1,8 +1,8 @@ -mirabelle.transport documentation

      mirabelle.transport

      channel-group

      (channel-group n)

      Make a channel group with a given name.

      channel-initializer

      macro

      (channel-initializer & names-and-exprs)

      Constructs an instance of a Netty ChannelInitializer from a list of names and expressions which return handlers. Handlers with :shared metadata on their names are bound once and re-used in every invocation of getPipeline(), other handlers will be evaluated each time.

      +mirabelle.transport documentation

      mirabelle.transport

      channel-group

      (channel-group n)

      Make a channel group with a given name.

      channel-initializer

      macro

      (channel-initializer & names-and-exprs)

      Constructs an instance of a Netty ChannelInitializer from a list of names and expressions which return handlers. Handlers with :shared metadata on their names are bound once and re-used in every invocation of getPipeline(), other handlers will be evaluated each time.

      (channel-pipeline-factory
                  frame-decoder    (make-an-int32-frame-decoder)
         ^:shared protobuf-decoder (ProtobufDecoder. (Proto$Msg/getDefaultInstance))
         ^:shared msg-decoder      msg-decoder)
      -

      datagram->byte-buf-decoder

      (datagram->byte-buf-decoder)

      A decoder that turns DatagramPackets into ByteBufs.

      decode-msg

      (decode-msg msg)

      Decode a protobuf to a message. Decodes the protocol buffer representation of Msg and applies post-load-event to all events.

      derefable

      (derefable f)

      A simple wrapper for a netty future which on deref just calls (syncUninterruptibly f), and returns the future’s result.

      event-executor

      (event-executor nb-core)

      Creates a new netty execution handler for processing events. Defaults to 1 thread per core.

      handle

      (handle handler-fn msg)

      Handles a msg with the given handler.

      ioutil-lock

      There’s a bug in JDK 6, 7, and 8 which can cause a deadlock initializing sse-server and netty concurrently; we serialize them with this lock. https://github.com/riemann/riemann/issues/617

      msg-decoder

      (msg-decoder)

      Netty decoder for Msg protobuf objects -> maps

      msg-encoder

      (msg-encoder)

      Netty encoder for maps -> Msg protobuf objects

      post-load-event

      (post-load-event e)

      After events are loaded, we assign default times if none exist.

      protobuf-decoder

      (protobuf-decoder)

      Decodes protobufs to Msg objects

      protobuf-encoder

      (protobuf-encoder)

      Encodes protobufs to Msg objects

      retain

      (retain x)

      Retain a ReferenceCounted object, if x is such an object. Otherwise, noop. Returns x.

      shutdown-event-executor-group

      (shutdown-event-executor-group g)

      Gracefully shut down an event executor group. Returns a derefable future.

      \ No newline at end of file +

      datagram->byte-buf-decoder

      (datagram->byte-buf-decoder)

      A decoder that turns DatagramPackets into ByteBufs.

      decode-msg

      (decode-msg msg)

      Decode a protobuf to a message. Decodes the protocol buffer representation of Msg and applies post-load-event to all events.

      derefable

      (derefable f)

      A simple wrapper for a netty future which on deref just calls (syncUninterruptibly f), and returns the future’s result.

      event-executor

      (event-executor nb-core)

      Creates a new netty execution handler for processing events. Defaults to 1 thread per core.

      handle

      (handle handler-fn msg)

      Handles a msg with the given handler.

      ioutil-lock

      There’s a bug in JDK 6, 7, and 8 which can cause a deadlock initializing sse-server and netty concurrently; we serialize them with this lock. https://github.com/riemann/riemann/issues/617

      msg-decoder

      (msg-decoder)

      Netty decoder for Msg protobuf objects -> maps

      msg-encoder

      (msg-encoder)

      Netty encoder for maps -> Msg protobuf objects

      post-load-event

      (post-load-event e)

      After events are loaded, we assign default times if none exist.

      protobuf-decoder

      (protobuf-decoder)

      Decodes protobufs to Msg objects

      protobuf-encoder

      (protobuf-encoder)

      Encodes protobufs to Msg objects

      retain

      (retain x)

      Retain a ReferenceCounted object, if x is such an object. Otherwise, noop. Returns x.

      shutdown-event-executor-group

      (shutdown-event-executor-group g)

      Gracefully shut down an event executor group. Returns a derefable future.

      \ No newline at end of file diff --git a/site/api/mirabelle.transport.tcp.html b/site/api/mirabelle.transport.tcp.html index 9123a99..ed98d78 100644 --- a/site/api/mirabelle.transport.tcp.html +++ b/site/api/mirabelle.transport.tcp.html @@ -1,4 +1,4 @@ -mirabelle.transport.tcp documentation

      mirabelle.transport.tcp

      build-initializer

      (build-initializer stream-handler tcp-timer shared-event-executor channel-group ssl-context)

      A channel pipeline initializer for a TCP server.

      epoll-netty-implementation

      (epoll-netty-implementation)

      gen-tcp-handler

      (gen-tcp-handler stream-handler registry channel-group handler)

      Wraps Netty boilerplate for common TCP server handlers. Given a reference to a core, a stats package, a channel group, and a handler fn, returns a ChannelInboundHandlerAdapter which calls (handler core stats channel-handler-context message) for each received message.

      -

      Automatically handles channel closure, and handles exceptions thrown by the handler by logging an error and closing the channel.

      int32-frame-decoder

      (int32-frame-decoder)

      int32-frame-encoder

      (int32-frame-encoder)

      kqueue-netty-implementation

      (kqueue-netty-implementation)

      netty-implementation

      nio-netty-implementation

      (nio-netty-implementation)

      ssl-handler

      (ssl-handler context)

      Given an SSLContext, creates a new SSLEngine and a corresponding Netty SslHandler wrapping it.

      tcp-handler

      (tcp-handler stream-handler tcp-timer ctx message)

      Given a core, a channel, and a message, applies the message to core and writes a response back on this channel.

      \ No newline at end of file +mirabelle.transport.tcp documentation

      mirabelle.transport.tcp

      build-initializer

      (build-initializer stream-handler tcp-timer shared-event-executor channel-group ssl-context)

      A channel pipeline initializer for a TCP server.

      epoll-netty-implementation

      (epoll-netty-implementation)

      gen-tcp-handler

      (gen-tcp-handler stream-handler registry channel-group handler)

      Wraps Netty boilerplate for common TCP server handlers. Given a reference to a core, a stats package, a channel group, and a handler fn, returns a ChannelInboundHandlerAdapter which calls (handler core stats channel-handler-context message) for each received message.

      +

      Automatically handles channel closure, and handles exceptions thrown by the handler by logging an error and closing the channel.

      get-netty-implementation

      (get-netty-implementation native?)

      int32-frame-decoder

      (int32-frame-decoder)

      int32-frame-encoder

      (int32-frame-encoder)

      kqueue-netty-implementation

      (kqueue-netty-implementation)

      nio-netty-implementation

      (nio-netty-implementation)

      ssl-handler

      (ssl-handler context)

      Given an SSLContext, creates a new SSLEngine and a corresponding Netty SslHandler wrapping it.

      tcp-handler

      (tcp-handler stream-handler tcp-timer ctx message)

      Given a core, a channel, and a message, applies the message to core and writes a response back on this channel.

      \ No newline at end of file diff --git a/site/api/mirabelle.transport.websocket.html b/site/api/mirabelle.transport.websocket.html index 24ed1d4..1b239f3 100644 --- a/site/api/mirabelle.transport.websocket.html +++ b/site/api/mirabelle.transport.websocket.html @@ -1,3 +1,3 @@ -mirabelle.transport.websocket documentation

      mirabelle.transport.websocket

      handler

      (handler pubsub registry)

      http-query-map

      (http-query-map string)

      Converts a URL query string into a map.

      query-true?

      (query-true? query)

      Helper to support the Riemann default true query.

      request->pred

      (request->pred query-params)

      Returns the predicate for the channel events based on the request query params

      routes

      ws-handler

      (ws-handler pubsub actions ch pred channel)
      \ No newline at end of file +mirabelle.transport.websocket documentation

      mirabelle.transport.websocket

      handler

      (handler pubsub registry)

      http-query-map

      (http-query-map string)

      Converts a URL query string into a map.

      query-true?

      (query-true? query)

      Helper to support the Riemann default true query.

      request->pred

      (request->pred query-params)

      Returns the predicate for the channel events based on the request query params

      routes

      ws-handler

      (ws-handler pubsub actions ch pred channel)
      \ No newline at end of file diff --git a/site/api/user.html b/site/api/user.html index 3a9408e..1daae98 100644 --- a/site/api/user.html +++ b/site/api/user.html @@ -1,3 +1,3 @@ -user documentation

      user

      reload!

      (reload!)

      restart!

      (restart!)

      start!

      (start!)

      stop!

      (stop!)
      \ No newline at end of file +user documentation

      user

      reload!

      (reload!)

      restart!

      (restart!)

      start!

      (start!)

      stop!

      (stop!)
      \ No newline at end of file