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.
139 140 141 142 143 |
# File 'lib/collectd/interface.rb', line 139 def initialize(interval) @interval = interval @counters = {} @gauges = {} end |
Instance Attribute Details
#interval ⇒ Object (readonly)
Returns the value of attribute interval.
138 139 140 |
# File 'lib/collectd/interface.rb', line 138 def interval @interval end |
Instance Method Details
#inc_counter(plugin_type, values) ⇒ Object
147 148 149 150 151 152 153 |
# File 'lib/collectd/interface.rb', line 147 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
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 205 206 207 208 |
# File 'lib/collectd/interface.rb', line 166 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
144 145 146 |
# File 'lib/collectd/interface.rb', line 144 def set_counter(plugin_type, values) @counters[plugin_type] = values end |
#set_gauge(plugin_type, values) ⇒ Object
154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/collectd/interface.rb', line 154 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 |