Umbrtonic
Gem for transferring Active Support Instrumentation events to the InfluxDB database via UDP without boilerplate code.
Installation
Add this line to your application's Gemfile:
gem 'umbrtonic'
And then execute:
$ bundle
Or install it yourself as:
$ gem install umbrtonic
Configuration
Under the hood Umbrtonic uses Qonfig gem.
By default, gem sends data to 127.0.0.1:8089. You are able to change this easily:
Umbrtonic.configure do |conf|
conf.influxdb.host = "another.machine"
conf.influxdb.port = 4444
end
Using a custom prefix
Optionally you are able to set a prefix:
Umbrtonic.configure do |conf|
conf.prefix = "my_app"
end
For example, when you subscribe to actions,
points to InfluxDB will be sent as my_app_actions.
Alternatively, it is possible to configure with file:
production:
prefix: custom
influxdb:
host: 127.0.0.1
port: 8094
# etc
and then load configuration:
Umbrtonic.config.load_from_yaml(
Rails.root / "config" / "umbrtonic.yml",
expose: Rails.env
)
Usage
Umbrtonic.bind("process_action.action_controller") do |inf, event, payload|
inf.values(
count: 1,
duration: event.duration,
db_runtime: event.payload[:db_runtime],
)
inf.(
controller: payload[:controller],
action: payload[:action],
)
end
Gem provides instance of InfluxDB data builder and information about the event and payload for quick access:
Umbrtonic.bind("process_action.action_controller") do |inf, event, payload|
event.name # => "process_action.action_controller"
event.duration # => 10 (in milliseconds)
event.payload # => event-specific payload
payload # => event-specific payload, alias for event.payload
end
See more information about Active Support Notifications here
You are able to set custom name for event:
Umbrtonic.bind("process_action.action_controller", measurement: "actions") do |inf, event, payload|
# your bindings
end
In this example events will be sent as actions.
There is complete list of Ruby on Rails hooks
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/umbrellio/umbrtonic.