Class: Fluent::Plugin::CalyptiaMonitoringBufferExtInput

Inherits:
MonitorAgentInput
  • Object
show all
Defined in:
lib/fluent/plugin/calyptia_monitoring_buffer_ext.rb

Constant Summary collapse

CALYPTIA_PLUGIN_BUFFER_METRIC_INFO =
{
  'buffer_total_queued_size' => ->() {
    throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer)
    @buffer.total_queued_size_metrics.cmetrics.to_msgpack
  },
  'buffer_stage_length' => ->() {
    throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer)
    @buffer.stage_length_metrics.cmetrics.to_msgpack
  },
  'buffer_stage_byte_size' => ->() {
    throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer)
    @buffer.stage_size_metrics.cmetrics.to_msgpack
  },
  'buffer_queue_length' => ->() {
    throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer)
    @buffer.queue_length_metrics.cmetrics.to_msgpack
  },
  'buffer_queue_byte_size' => ->() {
    throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer)
    @buffer.queue_size_metrics.cmetrics.to_msgpack
  },
  'available_buffer_space_ratios' => ->() {
    throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer)
    @buffer.available_buffer_space_ratios_metrics.cmetrics.to_msgpack
  },
  'newest_timekey' => ->() {
    throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer)
    @buffer.newest_timekey_metrics.cmetrics.to_msgpack
  },
  'oldest_timekey' => ->() {
    throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer)
    @buffer.oldest_timekey_metrics.cmetrics.to_msgpack
  },
}

Instance Method Summary collapse

Instance Method Details

#get_monitor_info(pe, opts = {}) ⇒ Object



55
56
57
58
59
60
61
# File 'lib/fluent/plugin/calyptia_monitoring_buffer_ext.rb', line 55

def get_monitor_info(pe, opts = {})
  obj = {}

  obj['metrics'] = get_plugin_metric(pe)

  obj
end

#get_plugin_metric(pe) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/fluent/plugin/calyptia_monitoring_buffer_ext.rb', line 63

def get_plugin_metric(pe)
  # Nop for non output plugin
  return {} if plugin_category(pe) != "output"

  metrics = {}

  if pe.respond_to?(:statistics)
    # Force to update buffers' metrics values
    pe.statistics
  end

  CALYPTIA_PLUGIN_BUFFER_METRIC_INFO.each_pair { |key, code|
    begin
      v = pe.instance_exec(&code)
      unless v.nil?
        metrics[key] = v
      end
    rescue
    end
  }

  metrics
end