module Monus::Backend::InfluxDB
Public Instance Methods
prepare()
click to toggle source
# File lib/monus/backends/influxdb.rb, line 2 def prepare @host = Monus.options.dig(:influxdb_options, :host) || 'localhost' @measurement = Monus.options.dig(:influxdb_options, :measurement) unless @measurement raise Monus::ConfigurationError, 'when using InfluxDB backend you should provide `influxdb_options/measurement` configuration with measurement (table) name' end @mode = Monus.options.dig(:influxdb_options, :mode) case @mode when :udp @udp_port = Monus.options.dig(:influxdb_options, :udp_port) unless @udp_port raise Monus::ConfigurationError, 'when using UDP mode you should provide `influxdb_options/udp_port` configuration with corresponding port number' end when :http @http_port = Monus.options.dig(:influxdb_options, :http_port) unless @http_port raise Monus::ConfigurationError, 'when using HTTP mode you should provide `influxdb_options/http_port` configuration with corresponding port number' end @database = Monus.options.dig(:influxdb_options, :database) unless @database raise Monus::ConfigurationError, 'when using HTTP mode you should provide `influxdb_options/database` configuration with database name' end @http_connection = Monus.engine.make_http_connection @host, @http_port @uri = "/write?db=#{@database}" else raise Monus::ConfigurationError, 'when using InfluxDB backend you should provide `influxdb_options/mode` configuration with `:udp` or `:http` value' end @global_tags = Monus.options.dig(:influxdb_options, :global_tags)&.map { |key, value| ",#{key}=#{value}" }&.join end
write(fields, tags = nil)
click to toggle source
# File lib/monus/backends/influxdb.rb, line 38 def write(fields, tags = nil) fields = fields.map { |key, value| "#{key}=#{value.inspect}" }.join(',') tags = tags&.map { |key, value| ",#{key}=#{value}" }&.join message = "#{@measurement}#{@global_tags}#{tags} #{fields}" case @mode when :udp Monus.engine.send_udp_datagram message, @host, @udp_port when :http Monus.engine.send_http_request @uri, method: :post, body: message, connection: @http_connection end end