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

Readme for logs #1102

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions pkg/tools/log/Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## Tips for reading and manipulating logs.

### How to understand logs

1. Every log line starts with timestamp, which is useful when you trying to trace the request in the application chain
2. Most of the log lines contains `[type:NetworkService]` or `[type:NetworkServiceRegistry]` which helps to separate `request` logic from `registration` logic
3. Most of the log lines contains `[id:'some value']` which is helpful when tracing request in application chain
4. It is useful to transform logs using `grep` utility to discard 'noise' logs that is not needed for analyzing(examples will be in section `Useful scripts`)
5. It is helpful to install plugin to IDE which is colorizing logs. (for example ANSI highlighter for Goland)
6. Message `an error during getting metadata from context: metadata is missed in ctx` - id a good criteria for separating ordinary request from refresh request(refresh do not have metadata)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... - is a good ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, done


### Useful scripts

1. Applied to folder containing resulting logs. It removes lines related to Jaeger and remove lines with just spans. Also it changes file extension to be suitable for highlighters
```bash
for filename in *.logs; do
cat "${filename}" | grep -v "Reporting span" | grep -v "Jaeger" > "$(echo "${filename}" | sed "s/\.logs/\.log/g")"
rm "${filename}"
done
```

2. It is useful to grep logs for specific information you want - id, type, loglevel etc. For example:
- get only networkService type
```bash
grep -w grep -w type:networkService some_log_file.log > another_log_file.log

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't it a duplucation?

Suggested change
grep -w grep -w type:networkService some_log_file.log > another_log_file.log
grep -w type:networkService some_log_file.log > another_log_file.log

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, fixed

```
- get logs **without** any NetworkServiceEndpointRegistry type
```bash
grep -w -v type:NetworkServiceEndpointRegistry some_log_file.log > another_log_file.log
```
- get only specific request id (random id in example)
```bash
grep -w id:d7bb2d77-7cd4-44ad-902b-5e392852d93a-final-endpoint some_log_file.log > another_log_file.log
```