Class: Mnemonic

Inherits:
Object
  • Object
show all
Includes:
MonitorMixin
Defined in:
lib/mnemonic.rb,
lib/mnemonic/sink.rb,
lib/mnemonic/util.rb,
lib/mnemonic/config.rb,
lib/mnemonic/util/os.rb,
lib/mnemonic/version.rb,
lib/mnemonic/sink/csv.rb,
lib/mnemonic/sink/json.rb,
lib/mnemonic/metric/rss.rb,
lib/mnemonic/metric/base.rb,
lib/mnemonic/metric/time.rb,
lib/mnemonic/sink/pretty.rb,
lib/mnemonic/logger_proxy.rb,
lib/mnemonic/metric/rss/ps.rb,
lib/mnemonic/metric/gc_stat.rb,
lib/mnemonic/util/page_size.rb,
lib/mnemonic/metric/hash_metric.rb,
lib/mnemonic/metric/rss/proc_fs.rb,
lib/mnemonic/metric/objects_size.rb,
lib/mnemonic/metric/time_seconds.rb,
lib/mnemonic/metric/objects_count.rb,
lib/mnemonic/metric/instances_size.rb,
lib/mnemonic/metric/instances_count.rb,
lib/mnemonic/metric/time_milliseconds.rb

Defined Under Namespace

Modules: Metric, Sink, Util Classes: Config, LoggerProxy

Constant Summary collapse

VERSION =
"0.1.1"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize {|config| ... } ⇒ Mnemonic

Returns a new instance of Mnemonic.

Yields:

  • (config)


16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/mnemonic.rb', line 16

def initialize
  super
  config = Mnemonic::Config.new
  yield config

  @root_metrics = config.metrics.map do |metric|
    metric.klass.new(*metric.args)
  end

  @metrics = @root_metrics.flat_map do |metric|
    metric.to_enum(:each_submetric).to_a
  end

  @root_metrics.each(&:start!)
  @metric_names = @metrics.map(&:name)
  @sinks = Set.new
  @enabled = true
end

Instance Attribute Details

#enabledObject (readonly)

Returns the value of attribute enabled.



14
15
16
# File 'lib/mnemonic.rb', line 14

def enabled
  @enabled
end

#metric_namesObject (readonly)

Returns the value of attribute metric_names.



14
15
16
# File 'lib/mnemonic.rb', line 14

def metric_names
  @metric_names
end

#metricsObject (readonly)

Returns the value of attribute metrics.



14
15
16
# File 'lib/mnemonic.rb', line 14

def metrics
  @metrics
end

#root_metricsObject (readonly)

Returns the value of attribute root_metrics.



14
15
16
# File 'lib/mnemonic.rb', line 14

def root_metrics
  @root_metrics
end

Instance Method Details

#attach(sink_class, *args, &block) ⇒ Object



63
64
65
66
67
68
69
# File 'lib/mnemonic.rb', line 63

def attach(sink_class, *args, &block)
  synchronize do
    sink_class.new(self, *args, &block).tap do |sink|
      @sinks << sink
    end
  end
end

#attach_csv(*args) ⇒ Object



51
52
53
# File 'lib/mnemonic.rb', line 51

def attach_csv(*args)
  attach(Sink::CSV, *args)
end

#attach_json(*args) ⇒ Object



55
56
57
# File 'lib/mnemonic.rb', line 55

def attach_json(*args)
  attach(Sink::JSON, *args)
end

#attach_pretty(*args) ⇒ Object



59
60
61
# File 'lib/mnemonic.rb', line 59

def attach_pretty(*args)
  attach(Sink::Pretty, *args)
end

#detach(sink) ⇒ Object



71
72
73
74
75
76
# File 'lib/mnemonic.rb', line 71

def detach(sink)
  synchronize do
    sink.close
    @sinks.delete sink
  end
end

#detach_allObject



78
79
80
81
82
83
# File 'lib/mnemonic.rb', line 78

def detach_all
  synchronize do
    @sinks.each(&:close)
    @sinks.clear
  end
end

#disable!Object



43
44
45
# File 'lib/mnemonic.rb', line 43

def disable!
  @enabled = false
end

#enable!Object



47
48
49
# File 'lib/mnemonic.rb', line 47

def enable!
  @enabled = true
end

#trigger!(extra = nil) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/mnemonic.rb', line 35

def trigger!(extra = nil)
  return unless enabled
  synchronize do
    @root_metrics.each(&:refresh!)
    @sinks.each { |s| s.drop!(extra) }
  end
end