Skip to content

Fluentd: add fluentd-async, fluentd-request-ack, and deprecate fluentd-async-connect #39086

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Feb 11, 2020

Conversation

thaJeztah
Copy link
Member

@thaJeztah thaJeztah commented Apr 16, 2019

Follow up to #39074 (first two commits are from that PR; I'll rebase once that's merged) (rebased)

closes #40332

  • Some minor refactoring; the driver now not only validates if options are supported, but also if their value can be parsed (producing an error earlier, instead of when instantiating a driver)
  • Add fluentd-async option, deprecate fluentd-async-connect. This ia a rename of the old option. The old option remains functional, but when used will log a deprecation warning in fluentd. If both the new, and old option is set, a "conflicting options" error is produced. This change is not versioned, and affects all API versions.
  • Add fluentd-request-ack option. This adds a new fluentd-request-ack logging option for the Fluentd logging driver. If enabled, the server will respond with an acknowledgement. This option improves the reliability of the message transmission. This change is not versioned, and affects all API versions.

@thaJeztah
Copy link
Member Author

Ping @tagomoris @cpuguy83 PTAL

@tagomoris I noticed two more options that are in the driver, but not exposed through the docker API;

  • fluent/fluent-logger-golang@70eca0b (Async send fluent/fluent-logger-golang#56); New configuration directive MaxRetryWait. Looking at that option, it would likely only make sense as a daemon option; not sure if it's worth adding though (as we already have fluentd-retry-wait and that option would only limit/restrict its maximum value
  • Add JSON marshaler fluent/fluent-logger-golang#27 Add JSON marshaler (Add MarshalAsJSON option and marshal as forward protocol adopted JSON). Looks like that option was around already, but also not exposed through the Docker API; is that problem still current? (i.e., are there still cases where msgpack cannot be used?). If that's really addressing a corner-case, perhaps we should not add that option (but open to input).

@codecov
Copy link

codecov bot commented Apr 16, 2019

Codecov Report

❗ No coverage uploaded for pull request base (master@d96f61c). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master   #39086   +/-   ##
=========================================
  Coverage          ?      37%           
=========================================
  Files             ?      612           
  Lines             ?    45390           
  Branches          ?        0           
=========================================
  Hits              ?    16795           
  Misses            ?    26308           
  Partials          ?     2287

Copy link
Contributor

@tagomoris tagomoris left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Basically LGTM. I commented on a point for usability.

}

if cfg[asyncKey] != "" && cfg[asyncConnectKey] != "" {
return config, errors.Errorf("conflicting options: cannot specify both '%s' and '%s", asyncKey, asyncConnectKey)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This error msg doesn't show the pair of keys now conflicting (just shows values of these keys). It should show conflicting keys and these values for users.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's best if it can show that the one is now deprecated and the other is recommended.

@thaJeztah
Copy link
Member Author

ping @kolyshkin @cpuguy83 PTAL

@thaJeztah
Copy link
Member Author

rebased ping @kolyshkin @cpuguy83 @tiborvass PTAL

@thaJeztah thaJeztah force-pushed the add_fluentd_options branch 2 times, most recently from 3e519d0 to 89b98f7 Compare January 2, 2020 11:22
@thaJeztah
Copy link
Member Author

@cpuguy83 updated; PTAL

@thaJeztah thaJeztah force-pushed the add_fluentd_options branch from 89b98f7 to 1166e83 Compare January 2, 2020 11:25
Copy link
Member

@cpuguy83 cpuguy83 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@AkihiroSuda AkihiroSuda merged commit 853e123 into moby:master Feb 11, 2020
@thaJeztah thaJeztah deleted the add_fluentd_options branch February 11, 2020 10:50
@thaJeztah thaJeztah added this to the 20.03.0 milestone Apr 2, 2020
thaJeztah added a commit to thaJeztah/cli that referenced this pull request Apr 10, 2022
This option was deperecated in the upstream fluentd logging driver v1.4.0,
and while we documented it as deprecated in the API changelog, there was
no mention yet in the deprecated docs.

relates to:

- fluent/fluent-logger-golang#56
- moby/moby#39086

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
thaJeztah added a commit to thaJeztah/cli that referenced this pull request Apr 10, 2022
This option was deperecated in the upstream fluentd logging driver v1.4.0,
and while we documented it as deprecated in the API changelog, there was
no mention yet in the deprecated docs.

relates to:

- fluent/fluent-logger-golang#56
- moby/moby#39086

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 95b0c43)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 3, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in docker v20.10 and removed in v28.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt

Functionally, both options are equivalent, see: moby/moby#39086.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in docker v20.10 and removed in v28.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt

Functionally, both options are equivalent, see: moby/moby#39086.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to singholt/amazon-ecs-agent that referenced this pull request Apr 15, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
singholt added a commit to aws/amazon-ecs-agent that referenced this pull request Apr 16, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
xxx0624 pushed a commit to xxx0624/amazon-ecs-agent that referenced this pull request Apr 17, 2025
Docker's fluentd log driver supports passing an "async" option.
The "fluentd-async-connect" option was deprecated in Docker v20.10.0 and completely removed in v28.0.0.
Reference: https://docs.docker.com/engine/deprecated/#fluentd-async-connect-log-opt
Functionally, both options are equivalent, see: moby/moby#39086.

Since Docker's refactor of the fluentd async option was not versioned and affects all API versions,
we need to determine the appropriate option using the Docker Server version, in order to be backwards compatible.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants