From f41366dd822c95a0da7b27517e9252894fb4da05 Mon Sep 17 00:00:00 2001 From: Jeff Cantrill Date: Tue, 12 Jul 2022 15:07:16 -0400 Subject: [PATCH] fix #346. Fix dump_stats and allow configuration to disable --- .../plugin/filter_kubernetes_metadata.rb | 6 ++++++ .../plugin/kubernetes_metadata_stats.rb | 16 ++++++++++++++++ .../plugin/test_filter_kubernetes_metadata.rb | 19 +++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/lib/fluent/plugin/filter_kubernetes_metadata.rb b/lib/fluent/plugin/filter_kubernetes_metadata.rb index dd2d1dc..ba11c72 100644 --- a/lib/fluent/plugin/filter_kubernetes_metadata.rb +++ b/lib/fluent/plugin/filter_kubernetes_metadata.rb @@ -170,7 +170,12 @@ def configure(conf) require 'kubeclient' require 'lru_redux' + @stats = KubernetesMetadata::Stats.new + if @stats_interval <= 0 + @stats = KubernetesMetadata::NoOpStats.new + self.define_singleton_method(:dump_stats) {} + end if @cache_ttl < 0 log.info 'Setting the cache TTL to :none because it was <= 0' @@ -347,6 +352,7 @@ def filter(tag, time, record) time, batch_miss_cache, record['docker']['container_id'])) metadata = k_metadata end + dump_stats metadata ? record.merge(metadata) : record end diff --git a/lib/fluent/plugin/kubernetes_metadata_stats.rb b/lib/fluent/plugin/kubernetes_metadata_stats.rb index 4dd69aa..254e8bd 100644 --- a/lib/fluent/plugin/kubernetes_metadata_stats.rb +++ b/lib/fluent/plugin/kubernetes_metadata_stats.rb @@ -43,4 +43,20 @@ def to_s end.join(', ') end end + class NoOpStats + def initialize + end + + def bump(key) + end + + def set(key, value) + end + + def [](key) + end + + def to_s + end + end end diff --git a/test/plugin/test_filter_kubernetes_metadata.rb b/test/plugin/test_filter_kubernetes_metadata.rb index 7b59902..18f1b77 100644 --- a/test/plugin/test_filter_kubernetes_metadata.rb +++ b/test/plugin/test_filter_kubernetes_metadata.rb @@ -41,6 +41,24 @@ def create_driver(conf = '') assert_equal(1000, d.instance.cache_size) end + sub_test_case 'stats_interval' do + + test 'enables stats when greater than zero' do + d = create_driver('stats_interval 1') + assert_equal(1, d.instance.stats_interval) + d.instance.dump_stats + assert_false(d.instance.instance_variable_get("@curr_time").nil?) + end + + test 'disables stats when <= zero' do + d = create_driver('stats_interval 0') + assert_equal(0, d.instance.stats_interval) + d.instance.dump_stats + assert_nil(d.instance.instance_variable_get("@curr_time")) + end + + end + test 'check test_api_adapter' do d = create_driver('test_api_adapter KubernetesMetadata::TestApiAdapter') assert_equal('KubernetesMetadata::TestApiAdapter', d.instance.test_api_adapter) @@ -620,6 +638,7 @@ def emit_with_tag(tag, msg = {}, config = ' kubernetes_url https://localhost:8443 watch false cache_size 1 + stats_interval 0 ') d.run do d.feed(VAR_LOG_CONTAINER_TAG, msgpack_stream)