Gem for transferring Active Support Instrumentation events to the InfluxDB database via UDP without boilerplate code.
Add this line to your application's Gemfile:
gem 'umbrtonic'And then execute:
$ bundle
Or install it yourself as:
$ gem install umbrtonic
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
endOptionally you are able to set a prefix:
Umbrtonic.configure do |conf|
conf.prefix = "my_app"
endFor 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
# etcand then load configuration:
Umbrtonic.config.load_from_yaml(
Rails.root / "config" / "umbrtonic.yml",
expose: Rails.env
)Umbrtonic.bind("process_action.action_controller") do |inf, event, payload|
inf.values(
count: 1,
duration: event.duration,
db_runtime: event.payload[:db_runtime],
)
inf.tags(
controller: payload[:controller],
action: payload[:action],
)
endGem 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
endSee 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
endIn this example events will be sent as actions.
There is complete list of Ruby on Rails hooks
Bug reports and pull requests are welcome on GitHub at https://github.com/umbrellio/umbrtonic.