From 1db9e7a8c7743d1794d85d1e35c292daa78d5c6e Mon Sep 17 00:00:00 2001 From: Tsubasa Nomura Date: Fri, 4 Jun 2021 14:58:24 +0000 Subject: [PATCH] Mem_Buf_limit is configurable via ConfigMap --- .../installer/scripts/td-agent-bit-conf-customizer.rb | 6 ++++++ build/linux/installer/conf/td-agent-bit.conf | 2 +- .../linux/installer/scripts/tomlparser-agent-config.rb | 10 ++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/build/common/installer/scripts/td-agent-bit-conf-customizer.rb b/build/common/installer/scripts/td-agent-bit-conf-customizer.rb index ea1536866..82c6c1d17 100644 --- a/build/common/installer/scripts/td-agent-bit-conf-customizer.rb +++ b/build/common/installer/scripts/td-agent-bit-conf-customizer.rb @@ -6,6 +6,7 @@ @default_service_interval = "1" @default_buffer_chunk_size = "1" @default_buffer_max_size = "1" +@default_mem_buf_limit = "10" def is_number?(value) true if Integer(value) rescue false @@ -19,6 +20,7 @@ def substituteFluentBitPlaceHolders interval = ENV["FBIT_SERVICE_FLUSH_INTERVAL"] bufferChunkSize = ENV["FBIT_TAIL_BUFFER_CHUNK_SIZE"] bufferMaxSize = ENV["FBIT_TAIL_BUFFER_MAX_SIZE"] + memBufLimit = ENV["FBIT_TAIL_MEM_BUF_LIMIT"] serviceInterval = (!interval.nil? && is_number?(interval) && interval.to_i > 0 ) ? interval : @default_service_interval serviceIntervalSetting = "Flush " + serviceInterval @@ -32,8 +34,12 @@ def substituteFluentBitPlaceHolders tailBufferMaxSize = tailBufferChunkSize end + tailMemBufLimit = (!memBufLimit.nil? && is_number?(memBufLimit) && memBufLimit.to_i > 10) ? memBufLimit : @default_mem_buf_limit + tailMemBufLimitSetting = "Mem_Buf_Limit " + tailMemBufLimit + "m" + text = File.read(@td_agent_bit_conf_path) new_contents = text.gsub("${SERVICE_FLUSH_INTERVAL}", serviceIntervalSetting) + new_contents = new_contents.gsub("${TAIL_MEM_BUF_LIMIT}", tailMemBufLimitSetting) if !tailBufferChunkSize.nil? new_contents = new_contents.gsub("${TAIL_BUFFER_CHUNK_SIZE}", "Buffer_Chunk_Size " + tailBufferChunkSize + "m") else diff --git a/build/linux/installer/conf/td-agent-bit.conf b/build/linux/installer/conf/td-agent-bit.conf index 045aefcaf..beba6a3ca 100644 --- a/build/linux/installer/conf/td-agent-bit.conf +++ b/build/linux/installer/conf/td-agent-bit.conf @@ -19,7 +19,7 @@ DB /var/log/omsagent-fblogs.db DB.Sync Off Parser docker - Mem_Buf_Limit 10m + ${TAIL_MEM_BUF_LIMIT} ${TAIL_BUFFER_CHUNK_SIZE} ${TAIL_BUFFER_MAX_SIZE} Rotate_Wait 20 diff --git a/build/linux/installer/scripts/tomlparser-agent-config.rb b/build/linux/installer/scripts/tomlparser-agent-config.rb index e587909e5..4daaf6a0c 100644 --- a/build/linux/installer/scripts/tomlparser-agent-config.rb +++ b/build/linux/installer/scripts/tomlparser-agent-config.rb @@ -59,6 +59,7 @@ @fbitFlushIntervalSecs = 0 @fbitTailBufferChunkSizeMBs = 0 @fbitTailBufferMaxSizeMBs = 0 +@fbitTailMemBufLimitMBs = 0 def is_number?(value) @@ -168,6 +169,12 @@ def populateSettingValuesFromConfigMap(parsedConfig) @fbitTailBufferMaxSizeMBs = @fbitTailBufferChunkSizeMBs puts "config::warn: since tail_buf_maxsize_megabytes not provided hence using tail_buf_maxsize_megabytes=#{@fbitTailBufferMaxSizeMBs} which is same as the value of tail_buf_chunksize_megabytes" end + + fbitTailMemBufLimitMBs = fbit_config[:tail_mem_buf_limit_megabytes] + if !fbitTailMemBufLimitMBs.nil? && is_number?(fbitTailMemBufLimitMBs) && fbitTailMemBufLimitMBs.to_i > 0 + @fbitTailMemBufLimitMBs = fbitTailMemBufLimitMBs.to_i + puts "Using config map value: tail_mem_buf_limit_megabytes = #{@fbitTailMemBufLimitMBs}" + end end end rescue => errorStr @@ -212,6 +219,9 @@ def populateSettingValuesFromConfigMap(parsedConfig) if @fbitTailBufferMaxSizeMBs > 0 file.write("export FBIT_TAIL_BUFFER_MAX_SIZE=#{@fbitTailBufferMaxSizeMBs}\n") end + if @fbitTailMemBufLimitMBs > 0 + file.write("export FBIT_TAIL_MEM_BUF_LIMIT=#{@fbitTailMemBufLimitMBs}\n") + end # Close file after writing all environment variables file.close else