Skip to content
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 protocol spec/description #1

Open
urso opened this issue Jun 15, 2016 · 8 comments
Open

Add protocol spec/description #1

urso opened this issue Jun 15, 2016 · 8 comments

Comments

@urso
Copy link

urso commented Jun 15, 2016

Reference: urso/go-lumber-old#4

There is a protocol description for the old Lumberjack protocol at https://github.com/logstash-plugins/logstash-input-beats/blob/v2.0.0/PROTOCOL.md but I'm missing like this for the Beats protocol.

While having a working library for the Lumberjack/Beats protocol is nice and a specification could be "reverse engineered" by looking at the Go code, it would be great if a textual protocol spec of the Lumberjack (v1) and Beats (v2) protocols existed.

@trixpan
Copy link

trixpan commented Jun 29, 2016

+1

This has been requested a while ago:

https://github.com/elastic/libbeat/issues/279

@joschi
Copy link

joschi commented Oct 5, 2016

@urso Any news here?

@xfournet
Copy link

xfournet commented Oct 5, 2016

It is needed to ensure that other implementation are correct, eg https://github.com/apache/camel/tree/master/components/camel-lumberjack

@trixpan
Copy link

trixpan commented Nov 2, 2016

@jordansissel now that 5.0 is out, any chances of getting some traction over this? Amazing opportunity to enlarge the ELK ecosystem and yet this seems to be super low priority?

@jordansissel
Copy link

@trixpan I don't think the beats protocol is "done" yet, so I personally, I don't really want to document what isn't necessarily finalized. I'd prefer not to end up with a situation where the protocol/etc is documented, but we keep up-revisioning things and breaking things for everyone else -- Kafka and AMQP both do this, for example, with incompatible network changes on upgrades, and it's extremely frustrating.

If you really want to write your own client, today, you can start with the old doc which I wrote and referenced frequently when I needed to verify things - https://github.com/elastic/logstash-forwarder/blob/master/PROTOCOL.md.

@joschi
Copy link

joschi commented Nov 2, 2016

@jordansissel I'd argue that the Lumberjack and Beats 1.x protocols are in fact "done".

There are lots of applications out there (*beats 1.x, logstash-forwarder, lumberjack, Logstash) speaking exactly these protocols and not having the wire protocols properly specified hurts 3rd party implementers. 😞

If you really want to write your own client, today, you can start with the old doc which I wrote and referenced frequently when I needed to verify things - https://github.com/elastic/logstash-forwarder/blob/master/PROTOCOL.md.

Unfortunately that spec is missing JSON frames and is using the "wrong" version number, compared with Beats protocol.

@trixpan
Copy link

trixpan commented Nov 3, 2016

@jordansissel I understand your concerns but also agree with @joschi : The protocol is already defined. Fluid or not, it is implemented by reverse engineering across many projects, but while data framing is largely sorted, expected behavior is still not generally agreed, leading to this sort of posts:

https://github.com/elastic/libbeat/issues/279#issuecomment-193373322

@andrewthad
Copy link
Contributor

Three years later, is the lumberjack protocol "done" yet? Or is it still in flux?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants