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
-
.start(interval: DEFAULT_INTERVAL, panels: DEFAULT_PANELS) ⇒ Object
Starts the metrics reporting client.
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 |