Sha256: f9e3145f517469a6d794ce7bef7d2b724f5ce52a3a4ce71f8980703ce0281367

Contents?: true

Size: 1.36 KB

Versions: 21

Compression:

Stored size: 1.36 KB

Contents

require 'elasticsearch'
require 'date'
require 'uri'

class RedisStat
class ElasticsearchSink
  attr_reader :hosts, :info, :index, :client

  DEFAULT_INDEX = 'redis-stat'

  def self.parse_url elasticsearch
    unless elasticsearch.match(%r[^https?://])
      elasticsearch = "http://#{elasticsearch}"
    end

    uri      = URI.parse elasticsearch
    path     = uri.path
    index    = path == '' ? DEFAULT_INDEX : path.split('/').last
    uri.path = ''

    [uri.to_s, index]
  end

  def initialize hosts, elasticsearch
    url, @index  = elasticsearch
    @hosts       = hosts
    @client      = Elasticsearch::Client.new :url => url
  end

  def output info
    @hosts.each do |host|
      entries = Hash[info.map { |k, v|
        if v.has_key?(host) && raw = v[host].last
          [k, raw]
        end
      }.compact]
      next if entries.empty?

      time = entries[:at]
      entry = {
        :index => index,
        :type  => "redis",
        :body  => entries.merge({
          :@timestamp => format_time(time),
          :host       => host,
          :at         => time.to_f
        }),
      }

      client.index entry
    end
  end

private
  if RUBY_VERSION.start_with? '1.8.'
    def format_time time
      fmt = time.strftime("%FT%T%z")
      fmt[0..-3] + ':' + fmt[-2..-1]
    end
  else
    def format_time time
      time.strftime("%FT%T%:z")
    end
  end
end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
redis-stat-0.4.14-java lib/redis-stat/elasticsearch.rb
redis-stat-0.4.14 lib/redis-stat/elasticsearch.rb
redis-stat-0.4.13 lib/redis-stat/elasticsearch.rb
redis-stat-0.4.12-java lib/redis-stat/elasticsearch.rb
redis-stat-0.4.12 lib/redis-stat/elasticsearch.rb
redis-stat-0.4.11-java lib/redis-stat/elasticsearch.rb
redis-stat-0.4.11 lib/redis-stat/elasticsearch.rb
redis-stat-0.4.10-java lib/redis-stat/elasticsearch.rb
redis-stat-0.4.10 lib/redis-stat/elasticsearch.rb
redis-stat-0.4.9-java lib/redis-stat/elasticsearch.rb
redis-stat-0.4.9 lib/redis-stat/elasticsearch.rb
redis-stat-0.4.8-java lib/redis-stat/elasticsearch.rb
redis-stat-0.4.8 lib/redis-stat/elasticsearch.rb
redis-stat-0.4.7-java lib/redis-stat/elasticsearch.rb
redis-stat-0.4.7 lib/redis-stat/elasticsearch.rb
redis-stat-0.4.6 lib/redis-stat/elasticsearch.rb
redis-stat-0.4.6-java lib/redis-stat/elasticsearch.rb
redis-stat-0.4.5 lib/redis-stat/elasticsearch.rb
redis-stat-0.4.5-java lib/redis-stat/elasticsearch.rb
redis-stat-0.4.4-java lib/redis-stat/elasticsearch.rb