Stats sending for Adhearsion
Ruby
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.gitignore
.rspec
.travis.yml
CHANGELOG.md
Gemfile
Guardfile
LICENSE.txt
README.md
Rakefile
adhearsion-stats.gemspec

README.md

Adhearsion Stats Build StatusCode ClimateCoverage Status

This is an Adhearsion plugin for sending metrics to a statsd server.

It uses the statsd gem.

Usage Example

class WellTrackedCallController < Adhearsion::CallController

  before_call :start_stats
  after_call  :end_stats

  def run
    answer
    ...
    hangup
  end

private

  def start_stats
    @call_started = Time.now.to_f
    AdhearsionStats.increment "calls.started"
    AdhearsionStats.gauge "calls.in_progress", "+1"
  end

  def end_stats
    AdhearsionStats.gauge "calls.in_progress", "-1"

    #Track call duration in ms
    call_duration = Time.now.to_f - @call_started
    AdhearsionStats.timing "calls.length", (call_duration * 1000).to_i
  end
end

Optional Logging

If you set the log_metrics option to true, it will generate a log file called adhearsion-stats.log next to the adhearsion.log showing every call send to statsd:

...
2014-01-14 01:08:53 PM: increment(foo)
2014-01-14 01:08:53 PM: timing(bar,100)
...

Stat Types

Counters (#increment and #decrement)

Either increments or decrements a simple counter. Mostly used for checking rate of things happening. By default will go up or down one, but you can also pass a value to increment a set amount:

AdhearsionStats.increment "foo", 10

Timers (#timing and #time)

Besides timing, can also be used for percents:

6.times do
  AdhearsionStats.timing "foo", 100
end

4.times do
  AdhearsionStats.timing "foo", 0
end

# Sixty percent of the time, it works every time!

A block method is also available if you want to time an action:

AdhearsionStats.time "time_spent_in_menu" do
  menu menu_message do
    ...
  end
end

Gauges (#gauge)

Used to track running counts of something - these aren't reset each flush period.

AdhearsionStats.gauge "foo", +4 #This now goes up 4 and stays up 4 until the next time the gauge is sent something

Links

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with Rakefile, version, or history.
    • If you want to have your own version, that is fine but bump version in a commit by itself so I can ignore when I pull
  • Send me a pull request. Bonus points for topic branches.

Credits

Original author: JustinAiken

Developed for Mojo Lingo.

Copyright

Copyright (c) 2013 Adhearsion Foundation Inc. MIT license (see LICENSE for details).