OML4R: Native OML Implementation in Ruby

This is a simple client library for OML which does not use liboml2 and its filters, but connects directly to the server using the text protocol omsp. User can use this library to create ruby applications which can send measurement to the OML collection server. A simple example on how to use this library is attached at the end of this file. Another example can be found in the file oml4r-example.rb .

Installation

OML4R is available from RubyGems oml4r-rubygem.

$ gem install oml4r

Usage

Definition of a Measurement Point

class MyMP < OML4R::MPBase
  name :mymp

  param :mystring
  param :myint, :type => :int32
  param :mydouble, :type => :double
end

Initialisation, Injection and Tear-down

OML4R::init(ARGV,
    :appName => 'oml4rSimpleExample',
    :domain => 'foo',
    :nodeID => 'n1',
)
MyMP.inject("hello", 13, 37.1)
OML4R::close()

Multiple Channels

It is sometimes desirable to send different measurement points to different collectors. OML4R supports this with the 'channel' abstraction.

class A_MP < OML4R::MPBase
  name :a
  channel :default

  param :a_val, :type => :int32
end

class B_MP < OML4R::MPBase
  name :b
  channel :archive
  channel :default

  param :b_val, :type => :int32
end

OML4R::init(ARGV,
  :appName => 'doubleAgent',
  :domain => 'foo'
)
OML4R::create_channel(:archive, 'file:/tmp/archive.log')

Setting the command line flag '--oml-collect' will define a ':default' channel. Any additional channels need to be declared with 'OML4R::create_channel' which takes two arguments, the name of the channel and the destination for the measurement stream. The above example defines an 'archive' channel which is being collected in the local '/tmp/archive.log' file.

Please note that by declaring a specific channel, every MP needs at least one channel declaration.

Real example

See examples files oml4r-simple-example.rb and oml4r-wlanconfig.rb.

License

Please see LICENSE.txt