class LogStash::Codecs::Prometheus
Public Instance Methods
decode(data) { |event| ... }
click to toggle source
# File lib/logstash/codecs/prometheus.rb, line 18 def decode(data) events = [] @lines.decode(data) do |event| unless event.get("message").start_with?("#") metric_name, metric_value = event.get("message").split(" ") unless metric_name.match(/^.+{.+}$/) events << {metric_name => metric_value.to_f} else outside, inside = metric_name.match(/^(.+){(.+)}$/).captures vars = inside.split(",") labels = {} keys = [] vars.each do |var| key, value = var.split("=") keys << key.downcase labels[key.downcase] = value.gsub!(/^\"|\"?$/, "") end custom_metric_name = keys.unshift(outside.downcase).join('_') events << {custom_metric_name => {outside.downcase => metric_value.to_f, "labels" => labels}} end end end unless events.empty? if @multi_event events.each do |event| yield LogStash::Event.new(event) end else hash = {} events.each do |event| event.to_h.each do |metric_name, metric_value| hash[metric_name] = metric_value end end yield LogStash::Event.new(hash) end end end
encode(event)
click to toggle source
# File lib/logstash/codecs/prometheus.rb, line 58 def encode(event) @on_event.call(event, event.to_json) end
register()
click to toggle source
# File lib/logstash/codecs/prometheus.rb, line 13 def register @lines = LogStash::Codecs::Line.new end