Class: Fluent::PrometheusMonitorInput
- Inherits:
-
Input
- Object
- Input
- Fluent::PrometheusMonitorInput
- Defined in:
- lib/fluent/plugin/in_prometheus_monitor.rb
Defined Under Namespace
Classes: TimerWatcher
Instance Attribute Summary collapse
-
#registry ⇒ Object
readonly
Returns the value of attribute registry.
Instance Method Summary collapse
- #configure(conf) ⇒ Object
-
#initialize ⇒ PrometheusMonitorInput
constructor
A new instance of PrometheusMonitorInput.
- #labels(plugin_info) ⇒ Object
- #run ⇒ Object
- #shutdown ⇒ Object
- #start ⇒ Object
- #update_monitor_info ⇒ Object
Constructor Details
#initialize ⇒ PrometheusMonitorInput
Returns a new instance of PrometheusMonitorInput.
13 14 15 16 |
# File 'lib/fluent/plugin/in_prometheus_monitor.rb', line 13 def initialize super @registry = ::Prometheus::Client.registry end |
Instance Attribute Details
#registry ⇒ Object (readonly)
Returns the value of attribute registry.
11 12 13 |
# File 'lib/fluent/plugin/in_prometheus_monitor.rb', line 11 def registry @registry end |
Instance Method Details
#configure(conf) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/fluent/plugin/in_prometheus_monitor.rb', line 18 def configure(conf) super hostname = Socket.gethostname = Fluent::Prometheus.(log) placeholders = .prepare_placeholders( Time.now, {'hostname' => hostname}, []) @base_labels = Fluent::Prometheus.parse_labels_elements(conf) @base_labels.each do |key, value| @base_labels[key] = .(value, placeholders) end @monitor_agent = Fluent::MonitorAgentInput.new buffer_queue_length = @registry.gauge( :fluentd_status_buffer_queue_length, 'Current buffer queue length.') buffer_total_queued_size = @registry.gauge( :fluentd_status_buffer_total_bytes, 'Current total size of queued buffers.') retry_counts = @registry.gauge( :fluentd_status_retry_count, 'Current retry counts.') @monitor_info = { 'buffer_queue_length' => buffer_queue_length, 'buffer_total_queued_size' => buffer_total_queued_size, 'retry_count' => retry_counts, } end |
#labels(plugin_info) ⇒ Object
93 94 95 96 97 98 99 |
# File 'lib/fluent/plugin/in_prometheus_monitor.rb', line 93 def labels(plugin_info) @base_labels.merge( plugin_id: plugin_info["plugin_id"], plugin_category: plugin_info["plugin_category"], type: plugin_info["type"], ) end |
#run ⇒ Object
76 77 78 79 80 81 |
# File 'lib/fluent/plugin/in_prometheus_monitor.rb', line 76 def run @loop.run rescue log.error "unexpected error", :error=>$!.to_s log.error_backtrace end |
#shutdown ⇒ Object
70 71 72 73 74 |
# File 'lib/fluent/plugin/in_prometheus_monitor.rb', line 70 def shutdown @loop.watchers.each {|w| w.detach } @loop.stop @thread.join end |
#start ⇒ Object
63 64 65 66 67 68 |
# File 'lib/fluent/plugin/in_prometheus_monitor.rb', line 63 def start @loop = Coolio::Loop.new @timer = TimerWatcher.new(@interval, true, log, &method(:update_monitor_info)) @loop.attach(@timer) @thread = Thread.new(&method(:run)) end |
#update_monitor_info ⇒ Object
83 84 85 86 87 88 89 90 91 |
# File 'lib/fluent/plugin/in_prometheus_monitor.rb', line 83 def update_monitor_info @monitor_agent.plugins_info_all.each do |info| @monitor_info.each do |name, metric| if info[name] metric.set(labels(info), info[name]) end end end end |