-
Notifications
You must be signed in to change notification settings - Fork 336
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
Access logs through TCP (ex. ELK) #300
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
yskopets
suggested changes
Sep 30, 2019
LogName: fmt.Sprintf("%s;%s", tcp.Tcp.Address, format), | ||
GrpcService: &core.GrpcService{ | ||
TargetSpecifier: &core.GrpcService_GoogleGrpc_{ | ||
GoogleGrpc: &core.GrpcService_GoogleGrpc{ |
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.
I think, usage of GoogleGrpc
is not mandatory in this case (unlike with mTLS).
Although, I don't know what are the downsides to using it
yskopets
reviewed
Oct 1, 2019
… level, support multiple messages per gRPC stream
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces logging through TCP via gRPC service.
There is no native support for TCP logging in Envoy, so it has to be done through gRPC service. This gRPC Service is embedded in Kuma DP. At first, I started this service at random port, then pushed this port through Envoy metadata, read in Control Plane and set the gRPC logging service destination on this port. Then I realized this can be done through UNIX socket and convention, which simplifies the codes.
StreamAccessLogs service defines streaming HTTPAccessLogEntries and TCPAccessLogEntries but with the newest released Envoy version, only the first one is implemented, but it contains data even for L4. Support for TCPAccessLogEntries is merged, so it will be included in the next version of Envoy.
This can be used to log for ELK stack in following way.
It seems that information about TLS is always empty, even with mTLS enabled. I need to investigate it further, maybe it's a bug in Envoy. The source of traffic is known, because we place this at the dataplane outbound interface so we can expose it with custom placeholder
%KUMA_DOWNSTREAM_CLUSTER%
https://github.com/deviantony/docker-elk
before starting configure logstash to receive json logs
codec => json
Add the index
Tests for dp server are missing for now since I wanted to get feedback on this first.