@@ -52,18 +52,18 @@ func GenerateConfig(cfg config.FluentBitCollectorConfig, tfCfg config.TelemetryF
5252 multilineParsersFile := filepath .Join (cfg .ConfigDir , "multiline-parsers.conf" )
5353
5454 b .WriteString ("[SERVICE]\n " )
55- b . WriteString ( fmt .Sprintf ( " flush %d\n " , flush ) )
55+ fmt .Fprintf ( & b , " flush %d\n " , flush )
5656 b .WriteString (" daemon off\n " )
57- b . WriteString ( fmt .Sprintf ( " log_level %s\n " , logLevel ) )
58- b . WriteString ( fmt .Sprintf ( " parsers_file %s\n " , parsersFile ) )
59- b . WriteString ( fmt .Sprintf ( " plugins_file %s\n " , multilineParsersFile ) )
57+ fmt .Fprintf ( & b , " log_level %s\n " , logLevel )
58+ fmt .Fprintf ( & b , " parsers_file %s\n " , parsersFile )
59+ fmt .Fprintf ( & b , " plugins_file %s\n " , multilineParsersFile )
6060
6161 if cfg .StorageEnabled {
6262 storagePath := cfg .StoragePath
6363 if storagePath == "" {
6464 storagePath = filepath .Join (cfg .ConfigDir , "storage" )
6565 }
66- b . WriteString ( fmt .Sprintf ( " storage.path %s\n " , storagePath ) )
66+ fmt .Fprintf ( & b , " storage.path %s\n " , storagePath )
6767 b .WriteString (" storage.sync normal\n " )
6868 b .WriteString (" storage.checksum off\n " )
6969 b .WriteString (" storage.backlog.mem_limit 5M\n " )
@@ -74,13 +74,13 @@ func GenerateConfig(cfg config.FluentBitCollectorConfig, tfCfg config.TelemetryF
7474 if port <= 0 {
7575 port = 2020
7676 }
77- b .WriteString (fmt . Sprintf ( " health_check on\n " ) )
78- b .WriteString (fmt . Sprintf ( " hc_errors_count 5\n " ) )
79- b .WriteString (fmt . Sprintf ( " hc_retry_failure_count 5\n " ) )
80- b .WriteString (fmt . Sprintf ( " hc_period 5\n " ) )
81- b .WriteString (fmt . Sprintf ( " http_server on\n " ) )
82- b .WriteString (fmt . Sprintf ( " http_listen 0.0.0.0\n " ) )
83- b . WriteString ( fmt .Sprintf ( " http_port %d\n " , port ) )
77+ b .WriteString (" health_check on\n " )
78+ b .WriteString (" hc_errors_count 5\n " )
79+ b .WriteString (" hc_retry_failure_count 5\n " )
80+ b .WriteString (" hc_period 5\n " )
81+ b .WriteString (" http_server on\n " )
82+ b .WriteString (" http_listen 0.0.0.0\n " )
83+ fmt .Fprintf ( & b , " http_port %d\n " , port )
8484 }
8585 b .WriteString ("\n " )
8686
@@ -89,27 +89,27 @@ func GenerateConfig(cfg config.FluentBitCollectorConfig, tfCfg config.TelemetryF
8989 for i , path := range cfg .Tail .Paths {
9090 b .WriteString ("[INPUT]\n " )
9191 b .WriteString (" name tail\n " )
92- b . WriteString ( fmt .Sprintf ( " tag file.%d.*\n " , i ) )
93- b . WriteString ( fmt .Sprintf ( " path %s\n " , path ) )
92+ fmt .Fprintf ( & b , " tag file.%d.*\n " , i )
93+ fmt .Fprintf ( & b , " path %s\n " , path )
9494 if len (cfg .Tail .ExcludePaths ) > 0 {
95- b . WriteString ( fmt .Sprintf ( " exclude_path %s\n " , strings .Join (cfg .Tail .ExcludePaths , "," ) ))
95+ fmt .Fprintf ( & b , " exclude_path %s\n " , strings .Join (cfg .Tail .ExcludePaths , "," ))
9696 }
9797 if cfg .Tail .MultilineParser != "" {
98- b . WriteString ( fmt .Sprintf ( " multiline.parser %s\n " , cfg .Tail .MultilineParser ) )
98+ fmt .Fprintf ( & b , " multiline.parser %s\n " , cfg .Tail .MultilineParser )
9999 }
100100 if cfg .Tail .DBPath != "" {
101- b . WriteString ( fmt .Sprintf ( " db %s\n " , cfg .Tail .DBPath ) )
101+ fmt .Fprintf ( & b , " db %s\n " , cfg .Tail .DBPath )
102102 } else {
103- b . WriteString ( fmt .Sprintf ( " db %s\n " , filepath .Join (cfg .ConfigDir , fmt .Sprintf ("tail-%d.db" , i ) )))
103+ fmt .Fprintf ( & b , " db %s\n " , filepath .Join (cfg .ConfigDir , fmt .Sprintf ("tail-%d.db" , i )))
104104 }
105105 if cfg .Tail .ReadFromHead {
106106 b .WriteString (" read_from_head on\n " )
107107 }
108108 if cfg .Tail .RefreshInterval > 0 {
109- b . WriteString ( fmt .Sprintf ( " refresh_interval %d\n " , cfg .Tail .RefreshInterval ) )
109+ fmt .Fprintf ( & b , " refresh_interval %d\n " , cfg .Tail .RefreshInterval )
110110 }
111111 if cfg .Tail .RotateWait > 0 {
112- b . WriteString ( fmt .Sprintf ( " rotate_wait %d\n " , cfg .Tail .RotateWait ) )
112+ fmt .Fprintf ( & b , " rotate_wait %d\n " , cfg .Tail .RotateWait )
113113 }
114114 if cfg .StorageEnabled {
115115 b .WriteString (" storage.type filesystem\n " )
@@ -124,7 +124,7 @@ func GenerateConfig(cfg config.FluentBitCollectorConfig, tfCfg config.TelemetryF
124124 b .WriteString (" name systemd\n " )
125125 b .WriteString (" tag journald.*\n " )
126126 for _ , unit := range cfg .Systemd .Units {
127- b . WriteString ( fmt .Sprintf ( " systemd_filter _SYSTEMD_UNIT=%s.service\n " , unit ) )
127+ fmt .Fprintf ( & b , " systemd_filter _SYSTEMD_UNIT=%s.service\n " , unit )
128128 }
129129 if cfg .Systemd .StripUnderscores {
130130 b .WriteString (" strip_underscores on\n " )
@@ -144,9 +144,9 @@ func GenerateConfig(cfg config.FluentBitCollectorConfig, tfCfg config.TelemetryF
144144 b .WriteString ("[INPUT]\n " )
145145 b .WriteString (" name tail\n " )
146146 b .WriteString (" tag kube.*\n " )
147- b . WriteString ( fmt .Sprintf ( " path %s\n " , logPath ) )
147+ fmt .Fprintf ( & b , " path %s\n " , logPath )
148148 b .WriteString (" multiline.parser cri\n " )
149- b . WriteString ( fmt .Sprintf ( " db %s\n " , filepath .Join (cfg .ConfigDir , "kube-containers.db" ) ))
149+ fmt .Fprintf ( & b , " db %s\n " , filepath .Join (cfg .ConfigDir , "kube-containers.db" ))
150150 b .WriteString (" mem_buf_limit 5MB\n " )
151151 b .WriteString (" skip_long_lines on\n " )
152152 if cfg .StorageEnabled {
@@ -179,7 +179,7 @@ func GenerateConfig(cfg config.FluentBitCollectorConfig, tfCfg config.TelemetryF
179179 for _ , input := range cfg .CustomInputs {
180180 b .WriteString ("[INPUT]\n " )
181181 for k , v := range input .Properties {
182- b . WriteString ( fmt .Sprintf ( " %-18s%s\n " , k , v ) )
182+ fmt .Fprintf ( & b , " %-18s%s\n " , k , v )
183183 }
184184 b .WriteString ("\n " )
185185 }
@@ -188,7 +188,7 @@ func GenerateConfig(cfg config.FluentBitCollectorConfig, tfCfg config.TelemetryF
188188 for _ , filter := range cfg .CustomFilters {
189189 b .WriteString ("[FILTER]\n " )
190190 for k , v := range filter .Properties {
191- b . WriteString ( fmt .Sprintf ( " %-18s%s\n " , k , v ) )
191+ fmt .Fprintf ( & b , " %-18s%s\n " , k , v )
192192 }
193193 b .WriteString ("\n " )
194194 }
@@ -202,8 +202,8 @@ func GenerateConfig(cfg config.FluentBitCollectorConfig, tfCfg config.TelemetryF
202202 b .WriteString ("[OUTPUT]\n " )
203203 b .WriteString (" name opentelemetry\n " )
204204 b .WriteString (" match *\n " )
205- b . WriteString ( fmt .Sprintf ( " host %s\n " , host ) )
206- b . WriteString ( fmt .Sprintf ( " port %s\n " , port ) )
205+ fmt .Fprintf ( & b , " host %s\n " , host )
206+ fmt .Fprintf ( & b , " port %s\n " , port )
207207 b .WriteString (" logs_uri /v1/logs\n " )
208208
209209 if tls {
@@ -218,10 +218,10 @@ func GenerateConfig(cfg config.FluentBitCollectorConfig, tfCfg config.TelemetryF
218218 }
219219
220220 if tfCfg .APIKeyID != "" {
221- b . WriteString ( fmt .Sprintf ( " header X-TelemetryFlow-Key-ID %s\n " , tfCfg .APIKeyID ) )
221+ fmt .Fprintf ( & b , " header X-TelemetryFlow-Key-ID %s\n " , tfCfg .APIKeyID )
222222 }
223223 if tfCfg .APIKeySecret != "" {
224- b . WriteString ( fmt .Sprintf ( " header X-TelemetryFlow-Key-Secret %s\n " , tfCfg .APIKeySecret ) )
224+ fmt .Fprintf ( & b , " header X-TelemetryFlow-Key-Secret %s\n " , tfCfg .APIKeySecret )
225225 }
226226
227227 b .WriteString (" logs_body_key $message\n " )
@@ -270,7 +270,7 @@ func parseEndpoint(endpoint string) (host, port string, tls bool, err error) {
270270 return "localhost" , "4318" , false , nil
271271 }
272272
273- // If no scheme, assume gRPC (which uses https for TLS)
273+ // If no scheme, assume plain TCP
274274 if ! strings .Contains (endpoint , "://" ) {
275275 h , p , splitErr := net .SplitHostPort (endpoint )
276276 if splitErr != nil {
0 commit comments