mirror of
https://github.com/anyproto/anytype-heart.git
synced 2025-06-08 05:47:07 +09:00
GO-1733 Improve readme
This commit is contained in:
parent
0eef68097a
commit
9a263e8f33
9 changed files with 210 additions and 387 deletions
89
docs/Debug.md
Normal file
89
docs/Debug.md
Normal file
|
@ -0,0 +1,89 @@
|
|||
# Debug
|
||||
## Run local gRPC server to debug
|
||||
⚠️ Make sure to update/install protobuf compiler from [this repo](https://github.com/anyproto/protobuf) using `make setup-protoc`
|
||||
|
||||
Commands:
|
||||
- `make run-server` - builds proto files for grpc server, builds the binary and runs it
|
||||
- `make build-server` - builds proto files for grpc server and builds the binary into `dist/server`
|
||||
|
||||
If you want to change the default port(9999):
|
||||
|
||||
`ANYTYPE_GRPC_ADDR=127.0.0.1:8888 make run-debug`
|
||||
|
||||
----
|
||||
## Useful tools for debug
|
||||
|
||||
### Debug server
|
||||
Use env var ANYDEBUG=address to enable debugging HTTP server. For example: `ANYDEBUG=:6061` will start debug server on port 6061
|
||||
|
||||
You can find all endpoints in `/debug` page. For example: http://localhost:6061/debug
|
||||
|
||||
### gRPC logging
|
||||
In order to log mw gRPC requests/responses use `ANYTYPE_GRPC_LOG` env var:
|
||||
- `ANYTYPE_LOG_LEVEL="grpc=DEBUG" ANYTYPE_GRPC_LOG=1` - log only method names
|
||||
- `ANYTYPE_LOG_LEVEL="grpc=DEBUG" ANYTYPE_GRPC_LOG=2` - log method names + payloads for commands
|
||||
- `ANYTYPE_LOG_LEVEL="grpc=DEBUG" ANYTYPE_GRPC_LOG=2` - log method names + payloads for commands&events
|
||||
|
||||
### gRPC tracing
|
||||
1. Run jaeger UI on the local machine:
|
||||
```docker run --rm -d -p6832:6832/udp -p6831:6831/udp -p16686:16686 -p5778:5778 -p5775:5775/udp jaegertracing/all-in-one:latest```
|
||||
2. Run mw with `ANYTYPE_GRPC_TRACE` env var:
|
||||
- `ANYTYPE_GRPC_TRACE=1` - log only method names/times
|
||||
- `ANYTYPE_GRPC_TRACE=2` - log method names + payloads for commands
|
||||
- `ANYTYPE_GRPC_TRACE=2` - log method names + payloads for commands&events
|
||||
3. Open Jaeger UI at http://localhost:16686
|
||||
|
||||
### Debug tree
|
||||
1. You can use `cmd/debugtree.go` to perform different operations with tree exported in zip archive (`rpc DebugTree`)
|
||||
2. The usage looks like this `go run debugtree.go -j -t -f [path to zip archive]` where `-t` tells the cmd to generate tree graph view and `-j` - to generate json representation of the tree (i.e. data in each individual block)
|
||||
3. You can use flag `-r` to build the tree from its root, that way you will see all the changes in the tree, and not only those from the common snapshot
|
||||
3. For more info please check the command usage in `debugtree.go`
|
||||
|
||||
### gRPC clients
|
||||
|
||||
#### GUI
|
||||
|
||||
https://github.com/uw-labs/bloomrpc
|
||||
|
||||
HowTo: Set the import path to the middleware root, then select commands.proto file
|
||||
|
||||
#### CLI
|
||||
|
||||
https://github.com/fullstorydev/grpcurl
|
||||
|
||||
You should specify import-path to the root of anytype-heart repository and gRPC port of running application
|
||||
|
||||
Command examples:
|
||||
|
||||
- List available methods
|
||||
```
|
||||
grpcurl -import-path ../anytype-heart/ -proto pb/protos/service/service.proto localhost:31007 describe
|
||||
```
|
||||
|
||||
- Describe method signature
|
||||
```
|
||||
grpcurl -import-path ../anytype-heart/ -proto pb/protos/service/service.proto localhost:31007 describe anytype.ClientCommands.ObjectCreate
|
||||
```
|
||||
|
||||
- Describe structure of specified protobuf message
|
||||
```
|
||||
grpcurl -import-path ../anytype-heart/ -proto pb/protos/service/service.proto localhost:31007 describe .anytype.Rpc.Object.Create.Request
|
||||
```
|
||||
|
||||
- Call method with specified plain-text payload
|
||||
```
|
||||
grpcurl -import-path ../anytype-heart/ -proto pb/protos/service/service.proto -plaintext -d '{"details": {"name": "hello there", "type": "ot-page"}}' localhost:31007 anytype.ClientCommands.ObjectCreate
|
||||
```
|
||||
|
||||
- Call method using unix pipe
|
||||
```
|
||||
echo '{"details": {"name": "hello there", "type": "ot-page"}}' | grpcurl -import-path ../anytype-heart/ -proto pb/protos/service/service.proto -plaintext -d @ localhost:31007 anytype.ClientCommands.ObjectCreate
|
||||
```
|
||||
|
||||
## Running with prometheus and grafana
|
||||
- `cd metrics/docker` – cd into folder with docker-compose file
|
||||
- `docker-compose up` - run the prometheus/grafana
|
||||
- use `ANYTYPE_PROM=0.0.0.0:9094` when running middleware to enable metrics collection. Client commands metrics available only in gRPC mode
|
||||
- open http://127.0.0.1:3000 to view collected metrics in Grafana. You can find several dashboards there:
|
||||
- **MW** internal middleware metrics such as changes, added and created threads histograms
|
||||
- **MW commands server** metrics for clients commands. Works only in grpc-server mode
|
Loading…
Add table
Add a link
Reference in a new issue