fluent-plugin-record-modifier icon indicating copy to clipboard operation
fluent-plugin-record-modifier copied to clipboard

Docker caching using instance variable

Open scalp42 opened this issue 4 years ago • 0 comments

Hi @repeatedly,

Thanks for the plugin!

I have a Syslog input and I'd like to add extra fields from Docker API:

In the current form, it won't be optimized as the call Docker calls will be make on each line.

Do you have idea on how to cache these call for at least some period of time?

Here's the current form:

<filter syslog.docker.containers.**>
  @type record_modifier
  prepare_value require 'docker'
  <record>
    docker_version ${Docker.version['Version'] rescue nil}
  </record>
  <record>
    docker_image ${sha_image = Docker::Container.get(record['ident']).info['Image']; Docker::Image.get(sha_image).info['RepoTags'].first.split(':').first}
  </record>
  <record>
    docker_tag ${sha_image = Docker::Container.get(record['ident']).info['Image']; Docker::Image.get(sha_image).info['RepoTags'].first.split(':').last}
  </record>
  <record>
    docker_restart_count ${Docker::Container.get(record['ident']).info['RestartCount']}
  </record>
  <record>
    docker_started_at ${Time.parse(Docker::Container.get(record['ident']).info['State']['StartedAt']).to_s}
  </record>
  <record>
    docker_finished_at ${Time.parse(Docker::Container.get(record['ident']).info['State']['FinishedAt']).to_s}
  </record>
  <record>
    docker_container ${Docker::Container.get(record['ident']).info['Name'][1..-1]}
  </record>
  <record>
    nomad_alloc_name ${Docker::Container.get(record['ident']).info['Config']['Env'].select { |e| e.include?('NOMAD_ALLOC_NAME') }.first.split('=').last rescue nil}
  </record>
  remove_keys extradata,msgid,container_id,pid
</filter>

Any help would be much appreciated 🙇

scalp42 avatar Aug 04 '19 05:08 scalp42