bipbip 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb3d5c73ae182538b9124ccc2566a2fb804e3e68
4
- data.tar.gz: 54b73d42901422967d03df4312fea8cfcd7cbfef
3
+ metadata.gz: fe7f32a299c9d06b71d8599033430b810b91e365
4
+ data.tar.gz: 65275e6d51c12f947433bffd47d8b0fa915f9b2a
5
5
  SHA512:
6
- metadata.gz: cf4f339ec65ee85308adfe30fff5be549974d45ff509671745703fd3ca9fd2777ea730e39de6f94f9593b9eca6d3f1daafeca2c914c5d222e68ed9cc7ed9b2fb
7
- data.tar.gz: ae58a1394f344b64992cd2c5ef51ca9c3aaa5724a8cd70f83b2c38dfcade088d26e5e6b2b65b413ca221e534ffb5257015fe8d2237eb72a43935456c8f0dfa7c
6
+ metadata.gz: 81fcc4bbced95d1a6fa34739fec24e94a790937be7b3ac9c111dd82963003580e931d67b113dc757df9cbd6c54b9fafb9b89dbc00c6a9ce2c7ac739985660ee2
7
+ data.tar.gz: 381a7c4e18a31068c755fd64f43430d34dd647fca4682f2fb29f088e5e533a981fcb9d0c1dc5541f065d6641143e5e43eb3f001444fa79ff212355520906fd3c
data/README.md CHANGED
@@ -106,6 +106,10 @@ services:
106
106
  regexp: segfault
107
107
  ```
108
108
 
109
+ Optional configuration common to all plugins:
110
+ - `frequency`: Override global frequency per plugin
111
+ - `metric_group`: Use metric group name different from plugin name. Useful when using the same plugin twice.
112
+
109
113
  Include configuration
110
114
  ---------------------
111
115
  In your configuration you can specify a directory to include service configurations from:
@@ -121,8 +125,6 @@ hostname: localhost
121
125
  port: 11211
122
126
  ```
123
127
 
124
- You can also set an override frequency per service in the main config or in these included configs.
125
-
126
128
  Plugins
127
129
  -------
128
130
  #### fastcgi-php-fpm
@@ -56,16 +56,17 @@ module Bipbip
56
56
  services = config['services'].to_a
57
57
  if config['include']
58
58
  include_path = File.expand_path(config['include'].to_s, File.dirname(config_file))
59
-
59
+
60
60
  files = Dir[include_path + '/**/*.yaml', include_path + '/**/*.yml']
61
61
  services += files.map { |file| YAML.load(File.open(file)) }
62
- end
63
-
62
+ end
63
+
64
64
  @plugins = services.map do |service|
65
- service_name = service['plugin'].to_s
66
- frequency = service['frequency'].nil? ? config['frequency'] : service['frequency'].to_i
67
- service_config = service.reject { |key, value| ['plugin','frequency'].include?(key) }
68
- Bipbip::Plugin.factory(service_name, service_config, frequency)
65
+ plugin_name = service['plugin']
66
+ metric_group = service['metric_group']
67
+ frequency = service['frequency'].nil? ? config['frequency'] : service['frequency']
68
+ plugin_config = service.reject { |key, value| ['plugin', 'frequency', 'metric_group'].include?(key) }
69
+ Bipbip::Plugin.factory(plugin_name, plugin_config, frequency, metric_group)
69
70
  end
70
71
 
71
72
  storages = config['storages'].to_a
@@ -5,16 +5,18 @@ module Bipbip
5
5
 
6
6
  attr_accessor :name
7
7
  attr_accessor :config
8
+ attr_accessor :metric_group
8
9
 
9
- def self.factory(name, config, frequency)
10
+ def self.factory(name, config, frequency, metric_group = nil)
10
11
  require "bipbip/plugin/#{Bipbip::Helper.name_to_filename(name)}"
11
- Plugin::const_get(Bipbip::Helper.name_to_classname(name)).new(name, config, frequency)
12
+ Plugin::const_get(Bipbip::Helper.name_to_classname(name)).new(name, config, frequency, metric_group)
12
13
  end
13
14
 
14
- def initialize(name, config, frequency)
15
+ def initialize(name, config, frequency, metric_group = nil)
15
16
  @name = name.to_s
16
17
  @config = config.to_hash
17
18
  @frequency = frequency.to_i
19
+ @metric_group = (metric_group || name).to_s
18
20
  end
19
21
 
20
22
  def run(storages)
@@ -29,9 +31,9 @@ module Bipbip
29
31
  time = Time.now
30
32
  data = monitor
31
33
  if data.empty?
32
- raise "#{name} #{metric_identifier}: Empty data"
34
+ raise "#{name} #{source_identifier}: Empty data"
33
35
  end
34
- Bipbip.logger.debug "#{name} #{metric_identifier}: Data: #{data}"
36
+ Bipbip.logger.debug "#{name} #{source_identifier}: Data: #{data}"
35
37
  storages.each do |storage|
36
38
  storage.store_sample(self, time, data)
37
39
  end
@@ -39,7 +41,7 @@ module Bipbip
39
41
  interruptible_sleep (frequency - (Time.now - time))
40
42
  end
41
43
  rescue => e
42
- Bipbip.logger.error "#{name} #{metric_identifier}: Error getting data: #{e.message}"
44
+ Bipbip.logger.error "#{name} #{source_identifier}: Error getting data: #{e.message}"
43
45
  interruptible_sleep retry_delay
44
46
  retry_delay += frequency if retry_delay < frequency * 10
45
47
  retry
@@ -61,7 +63,7 @@ module Bipbip
61
63
  @frequency
62
64
  end
63
65
 
64
- def metric_identifier
66
+ def source_identifier
65
67
  identifier = Bipbip.fqdn
66
68
  unless config.empty?
67
69
  identifier += '::' + config.values.first.to_s
@@ -16,10 +16,10 @@ module Bipbip
16
16
  exit 1
17
17
  end
18
18
 
19
- metric_group = @metric_groups.detect { |m| m.name == plugin.name }
19
+ metric_group = @metric_groups.detect { |m| m.name == plugin.metric_group }
20
20
  if metric_group.nil? || !metric_group.is_a?(CopperEgg::MetricGroup)
21
- Bipbip.logger.info "Creating copperegg metric group `#{plugin.name}`"
22
- metric_group = CopperEgg::MetricGroup.new(:name => plugin.name, :label => plugin.name, :frequency => plugin.frequency)
21
+ Bipbip.logger.info "Creating copperegg metric group `#{plugin.metric_group}`"
22
+ metric_group = CopperEgg::MetricGroup.new(:name => plugin.metric_group, :label => plugin.metric_group, :frequency => plugin.frequency)
23
23
  end
24
24
  metric_group.frequency = plugin.frequency
25
25
  metric_group.metrics = plugin.metrics_schema.map do |sample|
@@ -31,16 +31,16 @@ module Bipbip
31
31
  end
32
32
  metric_group.save
33
33
 
34
- dashboard = @dashboards.detect { |d| d.name == plugin.name }
34
+ dashboard = @dashboards.detect { |d| d.name == plugin.metric_group }
35
35
  if dashboard.nil?
36
- Bipbip.logger.info "Creating copperegg dashboard `#{plugin.name}`"
36
+ Bipbip.logger.info "Creating copperegg dashboard `#{plugin.metric_group}`"
37
37
  metrics = metric_group.metrics || []
38
- CopperEgg::CustomDashboard.create(metric_group, :name => plugin.name, :identifiers => nil, :metrics => metrics)
38
+ CopperEgg::CustomDashboard.create(metric_group, :name => plugin.metric_group, :identifiers => nil, :metrics => metrics)
39
39
  end
40
40
  end
41
41
 
42
42
  def store_sample(plugin, time, data)
43
- CopperEgg::MetricSample.save(plugin.name, plugin.metric_identifier, time.to_i, data)
43
+ CopperEgg::MetricSample.save(plugin.metric_group, plugin.source_identifier, time.to_i, data)
44
44
  end
45
45
 
46
46
  def _load_metric_groups
@@ -1,3 +1,3 @@
1
1
  module Bipbip
2
- VERSION = '0.4.2'
2
+ VERSION = '0.4.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bipbip
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cargo Media
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-10-14 00:00:00.000000000 Z
13
+ date: 2014-10-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: copperegg