Module: Barnes

Defined in:
lib/barnes.rb,
lib/barnes/panel.rb,
lib/barnes/consts.rb,
lib/barnes/railtie.rb,
lib/barnes/version.rb,
lib/barnes/periodic.rb,
lib/barnes/reporter.rb,
lib/barnes/resource_usage.rb,
lib/barnes/instruments/ruby_gc.rb,
lib/barnes/instruments/stopwatch.rb,
lib/barnes/instruments/puma_instrument.rb,
lib/barnes/instruments/puma_stats_value.rb,
lib/barnes/instruments/object_space_counter.rb

Overview

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Defined Under Namespace

Modules: Instruments Classes: Panel, Periodic, Railtie, Reporter, ResourceUsage

Constant Summary collapse

DEFAULT_INTERVAL =
10
DEFAULT_PANELS =
[].freeze
VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.start(interval: DEFAULT_INTERVAL, panels: DEFAULT_PANELS) ⇒ Object

Starts the metrics reporting client.

Collects Ruby runtime metrics (GC stats, ObjectSpace counts, Puma pool stats) and POSTs them to HEROKU_METRICS_URL.

Arguments:

- interval: How often, in seconds, to instrument and report.
- panels: The instrumentation "panels" in use. See `resource_usage.rb` for
  an example panel, which is the default if none are provided.


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/barnes.rb', line 38

def self.start(interval: DEFAULT_INTERVAL, panels: DEFAULT_PANELS)
  return if ENV["DYNO"]&.start_with?("run.")

  url = ENV["HEROKU_METRICS_URL"]
  return unless url

  reporter = Barnes::Reporter.new(url: url)

  panels = panels.dup
  if panels.empty?
    panels << Barnes::ResourceUsage.new
  end

  Periodic.new(
    reporter: reporter,
    interval: interval,
    panels:   panels,
    debug:    ENV['BARNES_DEBUG']
  )
end