module Telemetry::Metrics::Parser::LineProtocol
Public Class Methods
get_measurement(line)
click to toggle source
# File lib/telemetry/metrics/parser/line_protocol.rb, line 26 def get_measurement(line) measurement = line.split(',').first return nil if measurement.include? '=' measurement end
hash_to_line(hash)
click to toggle source
# File lib/telemetry/metrics/parser/line_protocol.rb, line 54 def hash_to_line(hash) hash.map { |k, v| "#{k}=#{v}" }.join(',').strip.delete_suffix(',') end
parse(line, use_shellwords: true)
click to toggle source
# File lib/telemetry/metrics/parser/line_protocol.rb, line 10 def parse(line, use_shellwords: true) if use_shellwords raw_tags, raw_fields, timestamp = Shellwords.split(line.strip) else raw_tags, raw_fields, timestamp = line.strip.split end { measurement: get_measurement(line), tags: split_string_to_hash(raw_tags), fields: split_string_to_hash(raw_fields), timestamp: convert_to_number(timestamp) } end
split_string_to_hash(raw_string)
click to toggle source
# File lib/telemetry/metrics/parser/line_protocol.rb, line 34 def split_string_to_hash(raw_string) results = {} return results if raw_string.nil? raw_string.split(',').each do |string| next unless string.include? '=' k, v = string.split('=') results[k.to_sym] = convert_to_number(v) end results end
to_line_protocol(measurement:, fields:, tags: {}, timestamp: DateTime.now.strftime('%Q'))
click to toggle source
# File lib/telemetry/metrics/parser/line_protocol.rb, line 49 def to_line_protocol(measurement:, fields:, tags: {}, timestamp: DateTime.now.strftime('%Q')) "#{measurement},#{hash_to_line(tags)} #{hash_to_line(fields)} #{timestamp}" end
Private Instance Methods
get_measurement(line)
click to toggle source
# File lib/telemetry/metrics/parser/line_protocol.rb, line 26 def get_measurement(line) measurement = line.split(',').first return nil if measurement.include? '=' measurement end
hash_to_line(hash)
click to toggle source
# File lib/telemetry/metrics/parser/line_protocol.rb, line 54 def hash_to_line(hash) hash.map { |k, v| "#{k}=#{v}" }.join(',').strip.delete_suffix(',') end
parse(line, use_shellwords: true)
click to toggle source
# File lib/telemetry/metrics/parser/line_protocol.rb, line 10 def parse(line, use_shellwords: true) if use_shellwords raw_tags, raw_fields, timestamp = Shellwords.split(line.strip) else raw_tags, raw_fields, timestamp = line.strip.split end { measurement: get_measurement(line), tags: split_string_to_hash(raw_tags), fields: split_string_to_hash(raw_fields), timestamp: convert_to_number(timestamp) } end
split_string_to_hash(raw_string)
click to toggle source
# File lib/telemetry/metrics/parser/line_protocol.rb, line 34 def split_string_to_hash(raw_string) results = {} return results if raw_string.nil? raw_string.split(',').each do |string| next unless string.include? '=' k, v = string.split('=') results[k.to_sym] = convert_to_number(v) end results end
to_line_protocol(measurement:, fields:, tags: {}, timestamp: DateTime.now.strftime('%Q'))
click to toggle source
# File lib/telemetry/metrics/parser/line_protocol.rb, line 49 def to_line_protocol(measurement:, fields:, tags: {}, timestamp: DateTime.now.strftime('%Q')) "#{measurement},#{hash_to_line(tags)} #{hash_to_line(fields)} #{timestamp}" end