Project

better_fx

0.0
No commit activity in last 3 years
No release in over 3 years
A convenient gem for developers to interact with SignalFx with a trivial amount of effort
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 3.5
~> 3.2
~> 0.31
~> 0.10

Runtime

>= 1.0.2, ~> 1.0
 Project Readme

BetterFx

Making it easier for you to quickly interact with SignalFx in an idiomatic fashion.

As of v 1.x of the signalfx gem Ruby 2.2 became the minimum supported Ruby version. As such you'll need to be using a compatible Ruby.

Usage

Usually you just want to indicate that something occurred

require "better_fx"
bfx = BetterFx::Client.new
# This will send the value 1 to the SignalFx counter metric named "beans" 
#with the current unix timestamp and vanilla metadata dimensions
bfx.increment_counter :beans

Or you might want to report the value of a measurement you've taken

require "better_fx"
bfx = BetterFx::Client.new
# This will send the value 11 to the SignalFx gauge metric named
#  "soccer_ball_air_pressure" with the current unix timestamp and vanilla
#  metadata dimensions
bfx.gauge :soccer_ball_air_pressure, value: 11

OO functionality

Usually you'll be reporting the same measurement over and over and the gauge syntax is a bit too functional

In the following example we have an imaginary worker that is invoked like so:

TelemetricWorker.new.run

It's implementation is ...

class TelemetricWorker
  include BetterFx::Measurement
  attr_accessor :filename
  
  measurement :file_size do |worker|
    File.size worker.filename
  end
  
  def step_gets_file
    # get file from s3
  end
  
  def step_does_other_thing
    # use your imagination
  end
  
  def run
    step_gets_file
    measure :file_size
    step_does_other_thing
  end
end

This way everytime #run is executed the file_size measurement is sent to SignalFx. Note this functionality is currently available for measurements (gauges) only.

Configuration

To use BetterFx with the least amount of code, just set the environment variable SIGNALFX_API_TOKEN equal to your token.

If you want to configure it imperatively then

require "better_fx"
BetterFx.configure do |c|
    # The SignalFx api token you want to use when transmitting to SignalFx
    c.signalfx_api_token = "ABCD12345"
    # The list of environments for which you want to allow transmission of data to 
    # SignalFx (if the current environment is not in this list then transmissions are
    # skipped).
    # Defaults to `[:production, :prod, "production", "prod"]`
    c.supported_environments = [:local, :prod]
    # The current environment
    # Defaults to `ENV["APP_ENV"] || :production`
    c.current_environment = :local
end