-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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 out_kafka output #94
Comments
Added to the to-do list. thanks |
Kafka output is very useful feature since in our case every log coming through kafka and then reroute to it's stateful service like elasticsearch / hadoop / other real time streaming. @edsiper do you may have eta when you will be able to start working on it? |
@panda87 between Q2/Q3 |
Is there ongoing work with this? There is a https://github.com/samsung-cnct/fluent-bit-kafka-output-plugin but it needs more work, configurability in particular. If a native impl is on its way I could try to contribute there instead. |
@solsson not implemented yet, as said, between Q2/Q3. |
Yes I read so and interpreted it as 2017-06-30T23:59:59 :) So I figured there's some source somewhere. But I will give the go impl a chance. |
FYI: On GIT Master I've pushed a new Kafka REST output plugin. The plugin is still under development but functional, any feedback is welcome. You can find a configuration example here |
Thanks @edsiper |
Interesting. I'll give it a try once there's a new build of |
Thanks @edsiper |
but unsuccessfuly. No trace of connections to kafka. See fluent/fluent-bit#94
I quickly tested this as a branch from https://github.com/fluent/fluent-bit-kubernetes-daemonset/, with Yolean/kubernetes-kafka#45,
No trace of connections to kafka rest. I don't have time to dig into this now. Maybe it has to do with the upgrade from 0.11 to 0.12. Edit: The plugin works just fine. I had two errors that obscured each other, and because no logs were read I got no error message in the container's stdout. Diff documented as Yolean/fluent-bit-kubernetes-logging#1. |
I get a lot of logs in Kafka from the fluent-bit container itself saying
correctly logged (in the Kafka sense) as
@edsiper Do you think this is an issue with my configuration, or a non-error being logged by the output plugin? |
@solsson the error is that Fluent Bit is not able to connect to rest.kafka.svc.cluster.local TCP port 80 |
FYI: Documentation updated: http://fluentbit.io/documentation/0.12/output/kafka-rest-proxy.html |
What's the status on out_kafka (native)? Alternatively, what's the status on fluent-bit-go wrt 0.12? |
For what it is worth, we would really like to produce directly to kafka instances without the REST proxy. |
Yeah, me too, feels like the extra layer is both a performance and a reliability risk. In the meantime I've been experimenting with filebeat's kafka support, it's on the broker level, though memory footprint looks like 10x that of fluent-bit: Yolean/kubernetes-kafka#88 As a fun experiment I've also experimented with tail -f + kafkacat, which runs on a tenth of filebeat's memory but of course doesn't remember the position and can't add k8s metadata. Didn't have the time to try more fluent-bit-go, and from the history of it I'd have to port such code for new fluent-bit minor releases. |
The reliability is our main concern. If we have an init container that can bootstrap the kafka cluster ip addresses, so the normal kafka producer will adjust as kafka nodes come and go. Looks like the fluent-bit-go is being maintained, and the uncertainty of this ticket is depressing maintenance of fluent-bit-kafka-output-plugin). Thanks for the pointer. |
@solsson Did you notice this fluent/fluentd-kubernetes-daemonset#34? I was thinking of building fluentd 0.14.22 now that it's stable and comparing it's memory and cpu usage to filebeat and fluent-bit. |
@StevenACoffman Actually I didn't try fluentd, as I was so impressed with the scope and footprint of fluent-bit, and there was a kafka output scheduled for "between Q2/Q3" ... and then ofc I also needed to work on how to process those logs once they're in Kafka :) |
Hello everyone, Thanks for sharing your comments and interest. I wanted to let you know that the plugin is already in the development phase, so I will keep you posted about it :) |
Great news! I would love to see this feature. |
@edsiper just checking in. For our planning, does it still seem likely to add the retry_logic in the near time? |
@StevenACoffman actually I am working on that at the moment. |
New version has been pushed:
Please test and send me some feedback (retry logic in place) |
any feedback on the last version provided ? |
Sorry I haven't had a chance to set up a public repo to reliably and reproducibly test it. I will try to do that today |
@edsiper Is there any way to pass debug flags to librdkafka? With kafkacat it's very useful to add I was having some issues that were internal to kafka and it was difficult to sort out whether it was the retry logic or kafka's config that was problematic. Overall impression is that it is pretty solid, but I haven't fully explored different retry limit scenarios. |
@solsson would you please re-submit the PR on 0.13-dev branch https://github.com/fluent/fluent-bit-kubernetes-logging/tree/0.13-dev ? Note: I am pushing a new image and docs for Fluent Bit 0.13-dev on Kubernetes, the old kafka image will not be updated, please check for more details here: https://github.com/fluent/fluent-bit-kubernetes-logging/tree/0.13-dev |
@edsiper I really want to know when release v0.13 ? |
@wukq I would like to have it released on January 31 (I am focusing on that), but as you know everything will depends on general feedback and improvements required. For now I will keep updating the 0.13-dev image, if more people test it, we will be more confident about the current status |
@edsiper done in fluent/fluent-bit-kubernetes-logging#16 Fantastic work with the new version. I've enabled the Prometheus exporter in our QA and |
FYI: the 0.13-dev image have been updated to 0.6: https://github.com/fluent/fluent-bit-kubernetes-logging/tree/0.13-dev (fixed) note: this one fix a crash found in the Prometheus exporter. |
FYI: 0.13-dev image has been updated to 0.7: https://github.com/fluent/fluent-bit-kubernetes-logging/tree/0.13-dev changes on this version are related to fixes in memory handling, new configuration option for out_kafka to adjust rdkafka internals and in_tail fixes. |
IMO out_kafka is feature complete now. |
I agree. The newest improvements (notably the new configuration option for out_kafka to adjust rdkafka internals) to be able to limit kafka buffer make it a complete feature now. It has been pretty solid in my testing over the last 24 hours, but I'm going to try putting a few million messages through it, and see how it handles. |
@solsson @StevenACoffman should I set these settings by default in the plugin ? what do you think ?:
note: of course they can be overridden by config any time |
I can see people adjusting them but Those look pretty good as defaults to me. |
I'm unsure. For users of the kubernets manifests it's quite transparent that defaults are from https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md and you see suggested overrides in plain text. Without the sample manifests I'd say you definitely want |
thanks for the feedback. I will document that in the plugin docs. |
btw, are we ok to close this one ? |
Signed-off-by: Takahiro YAMASHITA <nokute78@gmail.com>
Could be based on https://github.com/edenhill/librdkafka, payload should be JSON or MessagePack.
The text was updated successfully, but these errors were encountered: