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
add AVRO/Flume logger driver #26215
add AVRO/Flume logger driver #26215
Conversation
@vdemeester, @cpuguy83 @LK4D4 Issue for external logging plugin #18604 |
1d28d1a
to
b5fb372
Compare
@thaJeztah can you help pe to validate |
86a375c
to
ab16a64
Compare
update to goavro with tcp pool Signed-off-by: Sébastien GLON <glon.sebastien@free.fr>
ab16a64
to
b69d612
Compare
End of work; |
ping @cpuguy83 @tiborvass WDYT? |
What is the next step. How can i plan to use them on production? |
Thanks for being patient @sebglon. I brought this PR up in our maintainers meeting / review session. We are still looking for ways to make logging drivers "pluggable" so that we don't have to include all the dependencies in the main docker binary (which we will have to maintain). Since I was not familiar with "Flume", and not sure how popular it is as a choice, I asked around, and was told that Flume also has an option to integrate with syslog; would that be an option? In addition, I've understood that Flume is popular for Hadoop users, but Kafka is getting more and more the choice for those users. /cc @nathanleclaire @justincormack @stevvooe wdyt? |
Thanks for the PR @sebglon . As Sebastiaan noted, why not use something like the approach here: http://blog.thilinamb.com/2014/06/how-to-pump-syslog-data-into-flume.html with Docker's |
Kafka can use avro message to send or consule log I think i can make an evolution to send on kafka data. But now this is not supported by docker |
Avro is a message protocol that can be use to exchange formated data with consumer. In a few time i can test to send on kafka without another dependencies |
Fluentd, Flume, Kafka can consume Avro message My code has not dependency for flume or another consumer but only implement Avro message and protocol. This can be a good solution to limit Custom logger and dependencies to use Avro |
|
||
|
||
# Avro lig for logger | ||
clone git github.com/sebglon/goavro FEAT-IPC |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be good to have this merged upstream if we decide to accept this PR
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, what exactly is in this fork?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While I don't see anything wrong with adding a new log driver, I'd like to better understand the make up of the avro-flume ecosystem. Is this approach enough or are we going to add new protocols? Is the structure of this driver flexible enough to add these changes in the future or does this hit a single company's use case? The other issue I see is that the Also, into the future, who would maintain this integration? How can we ensure this tracks the upstream implementations to be sufficiently useful and relevant? |
Avro protocol is a big protocol that can be used to send formated and serialized data in many consumer. I think this is a good choice to externalise logging without custom product library. Avro start exchange by sending an handshake to validate exchange format. But for me docker can define this format and all consumer can deserialisze this and transformt then to their need. Actualy my client work with Flume but many client company use another Log consumer that accept avro. |
We discussed this in the maintainers meeting, and after further discussion, we don't think we're comfortable with adding this driver. There's a first PoC of having external plugins for logging drivers #28403. which would be a great option to implement this, once ready Thanks for contributing! |
Log plugin support is now merged and should be part of 17.05. Closing this. Any new log drivers should be implemented as a plugin at this point. If anyone wants to discuss this feel free to ping me on Slack, or come see me @ DockerCon! |
- What I did
Adding ne logger plugin for Flume Avro protocol
- How I did it
#23978
Send log container message on Apache flume with Avro protocol
add new library sebglon/goavro and snappy library
- How to verify it
Run docker with new flume-avro logger
dockerd --log-driver=flume-avro --log-opt avro-host=<IP of flume> --log-opt avro-port=<flume port>
Run container
docker run --rm hello-world
And show log message on your flume
Example AvroFlumeEvent:
- Description for the changelog
New logger driver for Apache Flume