class LogStash::Codecs::Graphite
This codec will encode and decode Graphite
formated lines.
Constants
- DEFAULT_METRICS_FORMAT
- EXCLUDE_ALWAYS
- METRIC_PLACEHOLDER
Public Class Methods
new(params={})
click to toggle source
Calls superclass method
LogStash::Codecs::Base::new
# File lib/logstash/codecs/graphite.rb, line 57 def initialize(params={}) super(params) @lines = LogStash::Codecs::Line.new end
Public Instance Methods
decode(data) { |event(name => to_f, "timestamp" => at.gmtime)| ... }
click to toggle source
# File lib/logstash/codecs/graphite.rb, line 63 def decode(data) @lines.decode(data) do |event| name, value, time = event["message"].split(" ") yield LogStash::Event.new(name => value.to_f, "@timestamp" => Time.at(time.to_i).gmtime) end # @lines.decode end
encode(event)
click to toggle source
# File lib/logstash/codecs/graphite.rb, line 80 def encode(event) # Graphite message format: metric value timestamp\n messages = [] timestamp = event.sprintf("%{+%s}") if @fields_are_metrics @logger.debug("got metrics event", :metrics => event.to_hash) event.to_hash.each do |metric,value| next if EXCLUDE_ALWAYS.include?(metric) next unless @include_metrics.empty? || @include_metrics.any? { |regexp| metric.match(regexp) } next if @exclude_metrics.any? {|regexp| metric.match(regexp)} messages << "#{construct_metric_name(metric)} #{event.sprintf(value.to_s).to_f} #{timestamp}" end # data.to_hash.each else @metrics.each do |metric, value| @logger.debug("processing", :metric => metric, :value => value) metric = event.sprintf(metric) next unless @include_metrics.any? {|regexp| metric.match(regexp)} next if @exclude_metrics.any? {|regexp| metric.match(regexp)} messages << "#{construct_metric_name(event.sprintf(metric))} #{event.sprintf(value).to_f} #{timestamp}" end # @metrics.each end # if @fields_are_metrics if messages.empty? @logger.debug("Message is empty, not emiting anything.", :messages => messages) else message = messages.join("\n") + "\n" @logger.debug("Emiting carbon messages", :messages => messages) @on_event.call(message) end # if messages.empty? end
Private Instance Methods
construct_metric_name(metric)
click to toggle source
# File lib/logstash/codecs/graphite.rb, line 71 def construct_metric_name(metric) if @metrics_format return @metrics_format.gsub(METRIC_PLACEHOLDER, metric) end return metric end