Class: Collectd::Values
- Inherits:
-
Object
- Object
- Collectd::Values
- Defined in:
- lib/collectd/interface.rb
Overview
Value-holder, baseclass for servers
Instance Attribute Summary collapse
-
#interval ⇒ Object
readonly
Returns the value of attribute interval.
Instance Method Summary collapse
- #inc_counter(plugin_type, values) ⇒ Object
-
#initialize(interval) ⇒ Values
constructor
A new instance of Values.
- #make_pkt ⇒ Object
- #set_counter(plugin_type, values) ⇒ Object
- #set_gauge(plugin_type, values) ⇒ Object
Constructor Details
#initialize(interval) ⇒ Values
Returns a new instance of Values.
135 136 137 138 139 |
# File 'lib/collectd/interface.rb', line 135 def initialize(interval) @interval = interval @counters = {} @gauges = {} end |
Instance Attribute Details
#interval ⇒ Object (readonly)
Returns the value of attribute interval.
134 135 136 |
# File 'lib/collectd/interface.rb', line 134 def interval @interval end |
Instance Method Details
#inc_counter(plugin_type, values) ⇒ Object
143 144 145 146 147 148 149 |
# File 'lib/collectd/interface.rb', line 143 def inc_counter(plugin_type, values) old_values = @counters[plugin_type] || [] values.map! { |value| value + (old_values.shift || 0) } @counters[plugin_type] = values end |
#make_pkt ⇒ Object
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/collectd/interface.rb', line 162 def make_pkt plugin_type_values = {} @counters.each do |plugin_types,values| plugin, plugin_instance, type, type_instance = plugin_types plugin_type_values[plugin] ||= {} plugin_type_values[plugin][plugin_instance] ||= {} plugin_type_values[plugin][plugin_instance][type] ||= {} plugin_type_values[plugin][plugin_instance][type][type_instance] = Packet::Values.new(values.map { |value| Packet::Values::Counter.new(value) }) end @gauges.each do |plugin_types,values| plugin, plugin_instance, type, type_instance = plugin_types plugin_type_values[plugin] ||= {} plugin_type_values[plugin][plugin_instance] ||= {} plugin_type_values[plugin][plugin_instance][type] ||= {} count = values.shift || next values.map! { |value| value.to_f / count } plugin_type_values[plugin][plugin_instance][type][type_instance] = Packet::Values.new(values.map { |value| Packet::Values::Gauge.new(value) }) end pkt = [Packet::Host.new(Collectd.hostname), Packet::Time.new(Time.now.to_i), Packet::Interval.new(10)] plugin_type_values.each do |plugin,plugin_instances| pkt << Packet::Plugin.new(plugin) plugin_instances.each do |plugin_instance,types| pkt << Packet::PluginInstance.new(plugin_instance) types.each do |type,type_instances| pkt << Packet::Type.new(type) type_instances.each do |type_instance,values| pkt << Packet::TypeInstance.new(type_instance) pkt << values end end end end # Reset only gauges. Counters are persistent for incrementing. @gauges = {} # And return serialized packet of parts pkt.to_s end |
#set_counter(plugin_type, values) ⇒ Object
140 141 142 |
# File 'lib/collectd/interface.rb', line 140 def set_counter(plugin_type, values) @counters[plugin_type] = values end |
#set_gauge(plugin_type, values) ⇒ Object
150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/collectd/interface.rb', line 150 def set_gauge(plugin_type, values) # Use count & sums for average if @gauges.has_key?(plugin_type) old_values = @gauges[plugin_type] count = old_values.shift || 0 values.map! { |value| value + (old_values.shift || value) } @gauges[plugin_type] = [count + 1] + values else @gauges[plugin_type] = [1] + values end end |