class ZuoraConnect::AppInstanceBase

def self.write_metric(series: 'Unknown', tags: {}, values: {})

def self.write_metric(series: 'Unknown', tags: {}, values: {})
  begin
    if @@telegraf_host.blank?
      Rails.logger.debug('Need new connection') if ZuoraConnect.configuration.telegraf_debug
      uri = URI.parse(ZuoraConnect.configuration.telegraf_endpoint)
      @@telegraf_host = UDPSocket.new.tap do |socket|
        socket.connect uri.host, uri.port
      end
    end
    @@telegraf_host.write InfluxDB::PointValue.new({series: series, tags: tags, values: values}).dump 
  rescue => ex
    @@telegraf_host = nil
    Rails.logger.tagged("Telegraf") do 
      logger.warn('Failed to write')
      logger.warn(ex.class)
      logger.warn(ex.message)
    end
  end
end