fix(kuma-dp) separate tcp access logs with a new line #566
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
The main usecase of using TCP access logs is to use Logstash to send logs to Elasticsearch.
With current demo setup which is
and
logstash config
We noticed that on K8S, Logstash has trouble parsing some logs (like 5-10% if you generate them quickly)
I found some issues like this elastic/logstash#11072 suggesting that switching codec from
json
tojson_lines
may solve the problem.After switching the codec and modify the format to a single line like this:
and adding sending the
\n
after every log, the issue is gone.I'm still not sure what was the real issue with
json
codec. I could not reproduce it on localhost. I checked with Wireshark that the TCP packet of problematic log was send in a one frame.Shouldn't \n in format field work?
YAML interprets this with 2 character at the end
\
andn
, not with single new line character. It can be done withand without hardcoding extra
\n
in kuma-dp, but it's a little bit awkward.If hardcoding
\n
is a problem, we could introduce an option to enable it explicitly likebut I think we can do it if someone actually requests that this is a problem.