Class: PromMultiProc::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/prom_multi_proc/base.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(socket:, metrics:, batch_size: nil, batch_timeout: nil, logger: nil, validate: false, prefix: "") ⇒ Base

Returns a new instance of Base.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/prom_multi_proc/base.rb', line 10

def initialize(socket:, metrics:, batch_size: nil, batch_timeout: nil, logger: nil, validate: false, prefix: "")
  @prefix = if prefix.empty? || prefix.end_with?("_")
    prefix
  else
    "#{prefix}_"
  end
  @logger = logger || ::Logger.new(STDOUT)

  unless File.socket?(socket)
    @logger.warn("Socket does not exist: #{socket}")
  end

  @metric_objects = Concurrent::Map.new
  @writer = Writer.new(socket: socket, batch_size: batch_size, batch_timeout: batch_timeout, validate: validate)
  @multi_lock = Mutex.new

  specs = get_specs(metrics)
  process_specs!(specs)
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



8
9
10
# File 'lib/prom_multi_proc/base.rb', line 8

def logger
  @logger
end

#prefixObject (readonly)

Returns the value of attribute prefix.



8
9
10
# File 'lib/prom_multi_proc/base.rb', line 8

def prefix
  @prefix
end

#writerObject (readonly)

Returns the value of attribute writer.



8
9
10
# File 'lib/prom_multi_proc/base.rb', line 8

def writer
  @writer
end

Instance Method Details

#metric(name) ⇒ Object



30
31
32
# File 'lib/prom_multi_proc/base.rb', line 30

def metric(name)
  @metric_objects[name]
end

#metric?(name) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/prom_multi_proc/base.rb', line 34

def metric?(name)
  @metric_objects.key?(name)
end

#metricsObject



38
39
40
# File 'lib/prom_multi_proc/base.rb', line 38

def metrics
  @metric_objects.keys
end

#multiObject



42
43
44
45
46
47
48
49
50
# File 'lib/prom_multi_proc/base.rb', line 42

def multi
  return unless block_given?
  result = @multi_lock.synchronize do
    proxy = Proxy.new(self)
    yield(proxy)
    proxy
  end
  @writer.write_multi(result.multis)
end