Build Status

Install

gem install riemann-babbler

Use

$ riemann-babbler --help
Riemann-babbler is tool for monitoring with riemann.

Usage:
       riemann-babbler [options]
where [options] are:
                                       --config, -c <s>:   Config file (default: /etc/riemann-babbler/config.yml)
                                         --host, -h <s>:   Riemann server (default: 127.0.0.1)
                                         --port, -p <i>:   Riemann server default port (default: 5555)
                                      --backlog, -b <i>:   Riemann server backlog for events (default: 100)
                                      --timeout, -t <i>:   Riemann timeout (default: 5)
                                  --fqdn, --no-fqdn, -f:   Use fqdn for event hostname (default: true)
                                          --ttl, -l <i>:   TTL for events (default: 60)
                                     --interval, -i <i>:   Seconds between updates (default: 60)
                                    --log-level, -o <s>:   Level log (default: DEBUG)
                            --plugins-directory, -d <s>:   Directory for plugins (default: /usr/share/riemann-babbler/plugins)
                                        --tcp, --no-tcp:   Use TCP transport instead of UDP (improves reliability, slight overhead. (Default: true)
  --minimize-event-count, --no-minimize-event-count, -m:   Minimize count of sent messages (default: true)
                          --responder-bind-http, -r <s>:   Bind to http responder (default: 0.0.0.0:55755)
                           --responder-bind-udp, -e <s>:   Bind to udp responder (default: 0.0.0.0:55955)
                                          --version, -v:   Print version and exit
                                                 --help:   Show this message

Config

Babbler load main config and merge custom plugins

riemann:
  host: riemann.host 
  port: 5555 
  tags: 
    - prod
    - web
Config yml for custom plugin
plugins:
  awesome_plugin:
    service: some critical service
    interval: 1 # (in sec)
    states:
        warning: 80
        critical: 90
    url: "http://127.0.0.1:11311/status"

Custom Plugin

Example 1

class Riemann::Babbler::Plugin::AwesomePlugin < Riemann::Babbler::Plugin

  def init
    plugin.set_default(:service, 'awesome plugin' )
    plugin.set_default(:interval, 1 )
    plugin.set_default(:url, 'http://127.0.0.1:11311/status')
  end

  def collect
    state = rest_get plugin.url == "OK" ? 'ok' : 'critical' # rest_get - helper
    {
      :service => plugin.service,
      :state => state
    }
  end
end

Example 2

class Riemann::Babbler::Plugin::AwesomePlugin < Riemann::Babbler::Plugin

  def init
    plugin.set_default(:service, 'awesome plugin' )
    plugin.set_default(:interval, 1 )
    plugin.states.set_default(:warning, 5)
    plugin.states.set_default(:critical, 20)
    plugin.set_default(:cmd1, 'cat /file/status | grep somevalue')
    plugin.set_default(:cmd2, 'cat /file/status | grep somevalue2')
  end

  def run_plugin # run plugin if
    File.exists? '/file/status'
  end

  def collect # may return Array
    status = []
    status << {
        :service => plugin.service + " cmd1",
        :metric => shell plugin.cmd2 # shell - helper
        }
    status <<  {
        :service => plugin.service + " cmd2",
        :metric => shell plugin.cmd2, # shell - helper
        :as_diff => true # report as differential: current - last
      }
    status
  end
end