Sha256: a8284fe4dee58b05679c981068e478b2efca84c234c5ac3460f2f03b7bb921a6
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
module CC module Analyzer class StatsdContainerListener < ContainerListener def initialize(statsd) @statsd = statsd end def started(engine, _details) increment(engine, "started") end def finished(engine, _details, result) timing(engine, "time", result.duration) increment(engine, "finished") if result.timed_out? timing(engine, "time", result.duration) increment(engine, "result.error") increment(engine, "result.error.timeout") elsif result.maximum_output_exceeded? increment(engine, "result.error") increment(engine, "result.error.output_exceeded") elsif result.exit_status.nonzero? increment(engine, "result.error") else increment(engine, "result.success") end end private attr_reader :statsd def increment(engine, metric_name) tags = engine_tags(engine) metrics(engine, metric_name).each { |metric| statsd.increment(metric, tags:) } end def timing(engine, metric_name, millis) tags = engine_tags(engine) metrics(engine, metric_name).each { |metric| statsd.timing(metric, millis, tags:) } end def metrics(engine, metric_name) [ "engines.#{metric_name}", "engines.names.#{engine.name}.#{metric_name}", ].tap do |metrics| metrics << "engines.names.#{engine.name}.#{engine.channel}.#{metric_name}" if engine_channel_present?(engine) end end def engine_tags(engine) ["engine:#{engine.name}"].tap do |tags| tags << "channel:#{engine.channel}" if engine_channel_present?(engine) end end def engine_channel_present?(engine) engine.respond_to?(:channel) && engine.channel end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
codeclimate-0.87.2 | lib/cc/analyzer/statsd_container_listener.rb |