class Fluent::DockerFormatOutput
Public Instance Methods
configure(conf)
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_docker_format.rb, line 10 def configure(conf) super @id_to_docker_cfg = {} end
emit(tag, es, chain)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 15 def emit(tag, es, chain) es.each do |time,record| Engine.emit(interpolate_tag(tag), time, format_record(tag, record)) end chain.next end
Private Instance Methods
format_record(tag, record)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 82 def format_record(tag, record) id = interpolate(tag, @container_id) record['container_id'] = id record['container_name'] = get_container_name(id) || "<unknown>" record['image_name'] = get_image_name(id) || "<unknown>" record end
get_container_name(id)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 52 def get_container_name(id) @id_to_docker_cfg[id] = get_docker_cfg_from_id(id) unless @id_to_docker_cfg.has_key? id if @id_to_docker_cfg[id] == nil container_name = nil else container_name = @id_to_docker_cfg[id]['Name'][1..-1] end container_name end
get_docker_cfg_from_id(id)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 43 def get_docker_cfg_from_id(id) begin docker_cfg = JSON.parse(File.read("#{@docker_containers_path}/#{id}/config.json")) rescue docker_cfg = nil end docker_cfg end
get_image_name(id)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 62 def get_image_name(id) @id_to_docker_cfg[id] = get_docker_cfg_from_id(id) unless @id_to_docker_cfg.has_key? id if @id_to_docker_cfg[id] == nil image_name = nil else image_name = @id_to_docker_cfg[id]['Config']['Image'].dup end image_name end
interpolate(tag, str)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 25 def interpolate(tag, str) tag_parts = tag.split('.') str.gsub(/\$\{tag_parts\[(\d+)\]\}/) { |m| tag_parts[$1.to_i] } end
interpolate_tag(tag)
click to toggle source
# File lib/fluent/plugin/out_docker_format.rb, line 31 def interpolate_tag(tag) id = interpolate(tag, @container_id) container_name = get_container_name(id) @tag.gsub(/\$\{name\}/, container_name || id) @tag.gsub(/\$\{container_name\}/, container_name || id) image_name = get_image_name(id) image_name.gsub!(/\:.*$/,'') if image_name # strip the docker tag @tag.gsub(/\$\{image_name\}/, image_name || id) end