* Add corrosion admin client function to get RTT to other machines in the cluster
* Add `uc machine rtt` showing all pair-wise RTT stats from corrosion
* Add long description to machine rtt command
* Include machine peer RTTs in InspectMachine instead of adding new gRPC API for it
* Add nil check on InspectMachine's Rtt field to protect from a potential edge case
* Generate docs for machine rtt command
* Handle m.Message being nil when a node is down or unavailble
* Update cli-docs
* Use tui Table instead of tabwriter
* Change reported RTT to the median rather than mean. Still calculate include stddev, as it might be a useful indication of network jitter.
* Show RTT to peers in `wg show` output
* Update cli docs
* Add server side of journal logs
This add the server side and grpc methods to get a journal logs from a
machine. It repurposes ServiceLogEntry for these logs to keep the
changes somewhat to a minimum. And it lets us re-use the merging of the
various logs. In the protobufs ContainerLog has been renamed to just Log
and LogEntry, as these are now also used for journal logs.
It does api.LogOptions in more places to reduce the various logOpts that
were used.
It does not yet plumb it through to the uc client, that needs a follow
up pr. Following logs is also not yet implemented.
Signed-off-by: Miek Gieben <miek@miek.nl>
* Fix test too
Signed-off-by: Miek Gieben <miek@miek.nl>
* remove entire comment
Signed-off-by: Miek Gieben <miek@miek.nl>
* Implement the follow option, untested mind you
Signed-off-by: Miek Gieben <miek@miek.nl>
* update debug line
Signed-off-by: Miek Gieben <miek@miek.nl>
* internal/jounal: First batch of PR comments
Signed-off-by: Miek Gieben <miek@miek.nl>
* internal/journal: code review comments
Signed-off-by: Miek Gieben <miek@miek.nl>
* Manually apply suggestion
Signed-off-by: Miek Gieben <miek@miek.nl>
* apply comment manually
Signed-off-by: Miek Gieben <miek@miek.nl>
* internal/journal: add unit test
Signed-off-by: Miek Gieben <miek@miek.nl>
* Use testify
Signed-off-by: Miek Gieben <miek@miek.nl>
* -amFix scanner.Err checking
Signed-off-by: Miek Gieben <miek@miek.nl>
* Implement code review comments
Signed-off-by: Miek Gieben <miek@miek.nl>
---------
Signed-off-by: Miek Gieben <miek@miek.nl>
This runs:
```
go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix ./...
```
over the codebase, as this is using go 1.26, it can also use the new
new() functionallity so AsPtr and boolPtr is are needed anymore.
Signed-off-by: Miek Gieben <miek@miek.nl>
* feat: Add `uc wg show` command to inspect a machine's uncloud wireguard network (draft / work in progress)
* Compile proto files with `make proto-mise`
* Fix lint errors
* Output peers in tabwriter table
* Lookup machine name for wireguard peer public key
* Add --machine flag to `uc wg show` to proxy call to specific machine
* Small refactor to move wg show logic out into a separate function
* chore: fix landing logo shadow
* feat: implement service logs command with colored output and strict ordering
* revert Makefile
* fix after rebase
* move logs command under services with root shortcut
* simplify server options for streaming logs and CLI flags
* refactor ContainerLogs grpc server
* update --tail flag
* minor docker.proto
* refactor client ServiceLogs and ContainerLogs
* move ProxyMachinesContext from api to client pkg
* minor refactor proto Stream
* add api/logs
* implement LogMerger
* fix LogMerger to correctly use semaphore
* increate inflish entries to 100 per stream
* send heartbeats
* refactor ContainerLogs to synchronise Send of entries and heartbeats to the steram
* minor logmerege
* remove ContainerName form ServiceLogEntryMetadata
* refactor ContainerLogs into docker.Service
* detect stalled container logs streams
* update logmerger tests
* fix comment in test
* refactor LogMerger with options
* uc logs: format one or multiple services
* make LogMerger emit heartbeats, emit entries <= watermark, rewrite tests
* update uc logs with new LogMerger
* go mod tidy
* fix after merge
---------
Co-authored-by: Evgenii Orlov <evgenii.orlov@semrush.com>