Sha256: 5dd6baffc93b62b4ad43caa38c8e7f8b3a970f48d40eaf2b884c9f1d105bcab5
Contents?: true
Size: 1.19 KB
Versions: 1
Compression:
Stored size: 1.19 KB
Contents
# encoding: utf-8 require "logstash/codecs/base" require "logstash/codecs/line" require 'json' class LogStash::Codecs::Prometheus < LogStash::Codecs::Base config_name "prometheus" public def register @lines = LogStash::Codecs::Line.new end public def decode(data) @lines.decode(data) do |event| unless event.get("message").start_with?("#") metric_name, metric_value = event.get("message").split(" ") unless metric_name.match(/^.+{.+}$/) yield LogStash::Event.new(metric_name => metric_value.to_f) else outside, inside = metric_name.match(/^(.+){(.+)}$/).captures vars = inside.split(",") vars.each do |var| key, value = var.split("=") custom_metric_name = [outside,key,value.gsub!(/^\"|\"?$/, "")].join('_') yield LogStash::Event.new(custom_metric_name => metric_value.to_f) end end end end end public def encode(event) h = {} event.to_hash.each do |metric_name,metric_value| h[metric_name] = metric_value end unless h.empty? @on_event.call(event, h.to_json) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
logstash-codec-prometheus-0.1.0 | lib/logstash/codecs/prometheus.rb |