fluentd icon indicating copy to clipboard operation
fluentd copied to clipboard

Set log_path in system config

Open jocobwknight opened this issue 11 months ago • 5 comments

Is your feature request related to a problem? Please describe.

I'm setting up AWX to install FluentD on VMs (not in Containers). Ansible's "ansible.builtin.service" doesn't have command line arguments like "-o" because it's using systemctl. So the logs can only be defaulted to /var/log.

Describe the solution you'd like

I'd simply like "log_path" to be an attribute I can set in the section of FluentD's config file. It's an attribute that can be set with command line arguments, but not in the config file.

Describe alternatives you've considered

I could modify the service file to include the "-o" command line argument, or have Ansible modify the code directly like in the system_config.rb file and so on so that attribute becomes available. In either case though it would just be a hacky temporary solution.

Additional context

My /var/log directory is mounted to a low capacity drive because we expected to be able to store all fluent related data in our /opt directory. For now I can set the log rotation very tightly to keep it from filling up, but I think the log path being configurable in the global settings file is a deserving feature that I'm surprised doesn't exist already.

jocobwknight avatar Feb 28 '24 11:02 jocobwknight

I don't know why system_config does not have log_path option... I'm wondering if there was a reason for this, but it seems more convenient to be able to set it up in the config file.

daipom avatar Mar 07 '24 07:03 daipom

I could modify the service file to include the "-o" command line argument,

I think this is the main case now. In Fluent Package, It is supposed to be set in a unit file or as environment variables.

https://github.com/fluent/fluent-package-builder/blob/1bd0d76c2e13a94a8d93c30bb51096e54d77bbf1/fluent-package/templates/etc/systemd/fluentd.service.erb#L32

ExecStart=/opt/<%= package_dir %>/bin/fluentd --log $FLUENT_PACKAGE_LOG_FILE --daemon <%= Shellwords.shellescape("/var/run/#{package_dir}/#{service_name}.pid") %> $FLUENT_PACKAGE_OPTIONS

daipom avatar Mar 07 '24 08:03 daipom

@daipom is this still active or the ENV variable method is your proposed fix?

Athishpranav2003 avatar Aug 09 '24 13:08 Athishpranav2003

@Athishpranav2003 Sorry for my late response. Thanks for considering it!

I don't know why system_config does not have log_path option... I'm wondering if there was a reason for this, but it seems more convenient to be able to set it up in the config file.

The reason would be that Fluentd needs to know the path before parsing the config file. Fluentd outputs some logs before parsing.

It would be convenient if we could specify the path in the config file, but then there would be the problem of how to handle the logs before parsing.

If we can come up with a good solution, we can improve it, but if not, I don't see the need to force it.

daipom avatar Aug 14 '24 10:08 daipom

Oh i see. It makes sense that the parsing logs are also crucial and they seem to create a problem here. I am currently not sure of any sol but maybe there is some way to tackle this. Ideally we can solve this by having a default logging destination and change that+copy the initial logs to the configured directory once its obtained. Idk what issues might occur in this case

Athishpranav2003 avatar Aug 14 '24 10:08 Athishpranav2003