Class: Fluent::Plugin::DockerMetadataElasticFilter
- Inherits:
-
Filter
- Object
- Filter
- Fluent::Plugin::DockerMetadataElasticFilter
- Defined in:
- lib/fluent/plugin/filter_docker_metadata_elastic.rb
Class Method Summary collapse
Instance Method Summary collapse
- #configure(conf) ⇒ Object
- #filter_stream(tag, es) ⇒ Object
-
#initialize ⇒ DockerMetadataElasticFilter
constructor
A new instance of DockerMetadataElasticFilter.
Constructor Details
#initialize ⇒ DockerMetadataElasticFilter
Returns a new instance of DockerMetadataElasticFilter.
37 38 39 |
# File 'lib/fluent/plugin/filter_docker_metadata_elastic.rb', line 37 def initialize super end |
Class Method Details
.get_metadata(container_id) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/fluent/plugin/filter_docker_metadata_elastic.rb', line 29 def self.(container_id) begin Docker::Container.get(container_id).info rescue Docker::Error::NotFoundError nil end end |
Instance Method Details
#configure(conf) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/fluent/plugin/filter_docker_metadata_elastic.rb', line 41 def configure(conf) super require 'docker' require 'json' require 'lru_redux' Docker.url = @docker_url @cache = LruRedux::ThreadSafeCache.new(@cache_size) @container_id_regexp_compiled = Regexp.compile(@container_id_regexp) end |
#filter_stream(tag, es) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/fluent/plugin/filter_docker_metadata_elastic.rb', line 54 def filter_stream(tag, es) new_es = es container_id = tag.match(@container_id_regexp_compiled) if container_id && container_id[0] container_id = container_id[0] = @cache.getset(container_id){DockerMetadataElasticFilter.(container_id)} if new_es = Fluent::MultiEventStream.new es.each {|time, record| record['docker'] = { 'id' => ['id'], 'name' => ['Name'][1..-1], 'container_hostname' => ['Config']['Hostname'], 'image' => ['Config']['Image'], 'image_id' => ['Image'], 'labels' => ['Config']['Labels'].map {|k,v| Hash[k.gsub('.','_'),v]}.inject({}, :merge), 'state' => ['State'], 'restart_count' => ['RestartCount'] } new_es.add(time, record) } end end return new_es end |