Class: Statsby::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/statsby/client.rb

Overview

Use a Statsby::Client to send metrics to a StatsD server

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(metrics_writer: UDPMetricsWriter.new, tags: {}, tags_enabled: true) ⇒ Client

Returns a new instance of Client.



8
9
10
11
12
13
14
15
16
# File 'lib/statsby/client.rb', line 8

def initialize(
  metrics_writer: UDPMetricsWriter.new,
  tags: {},
  tags_enabled: true
)
  self.metrics_writer = metrics_writer
  self.tags = Statsby::TagSet.from_hash(tags)
  self.tags_enabled = tags_enabled
end

Instance Attribute Details

#metrics_writerObject

Returns the value of attribute metrics_writer.



6
7
8
# File 'lib/statsby/client.rb', line 6

def metrics_writer
  @metrics_writer
end

#tagsObject

Returns the value of attribute tags.



6
7
8
# File 'lib/statsby/client.rb', line 6

def tags
  @tags
end

#tags_enabledObject

Returns the value of attribute tags_enabled.



6
7
8
# File 'lib/statsby/client.rb', line 6

def tags_enabled
  @tags_enabled
end

Instance Method Details

#counter(metric_name, value, local_tags = {}) ⇒ Object



22
23
24
# File 'lib/statsby/client.rb', line 22

def counter(metric_name, value, local_tags = {})
  send_message(format_message(metric_name, value, 'c', local_tags))
end

#format_message(metric_name, value, type, message_tags = {}) ⇒ Object



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

def format_message(metric_name, value, type, message_tags = {})
  "#{metric_name}#{format_tags(message_tags)}:#{value}|#{type}"
end

#format_tags(message_tags = {}) ⇒ Object



38
39
40
41
# File 'lib/statsby/client.rb', line 38

def format_tags(message_tags = {})
  combined_tags = tags.merge(message_tags)
  ",#{combined_tags}" if tags_enabled && !combined_tags.empty?
end

#gauge(metric_name, value, local_tags = {}) ⇒ Object



26
27
28
# File 'lib/statsby/client.rb', line 26

def gauge(metric_name, value, local_tags = {})
  send_message(format_message(metric_name, value, 'g', local_tags))
end

#send_message(message) ⇒ Object



18
19
20
# File 'lib/statsby/client.rb', line 18

def send_message(message)
  metrics_writer.write(message)
end

#set(metric_name, value, local_tags = {}) ⇒ Object



34
35
36
# File 'lib/statsby/client.rb', line 34

def set(metric_name, value, local_tags = {})
  send_message(format_message(metric_name, value, 's', local_tags))
end

#subcontext(tags = {}) ⇒ Object



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

def subcontext(tags = {})
  Statsby::Context.new(self, tags)
end

#timing(metric_name, value, local_tags = {}) ⇒ Object



30
31
32
# File 'lib/statsby/client.rb', line 30

def timing(metric_name, value, local_tags = {})
  send_message(format_message(metric_name, value, 'ms', local_tags))
end