fluent / fluentd

Fluentd: Unified Logging Layer (project under CNCF)
https://www.fluentd.org
Apache License 2.0
12.71k stars 1.33k forks source link

Set log_path in system config #4418

Open jocobwknight opened 4 months ago

jocobwknight commented 4 months ago

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.

daipom commented 4 months ago

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 commented 4 months ago

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