Binlog - gRPC binarylog viewer

binlog

Viewer for https://github.com/grpc/grpc/blob/master/doc/binary-logging.md

Demo:

{"name":"foo"} <- {"message":"Hello foo from "}">
$ ./binlog --proto ~/tmp/gorpc/helloworld/helloworld.proto stats /tmp/grpcgo_binarylog_1037680716.txt
2022/01/26 17:22:23 last entry truncated, ignoring
Method								[≥0s]	[≥0.05s][≥0.1s]	[≥0.2s]	[≥0.5s]	[≥1s]	[≥10s]	[≥100s]	[errors]
/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo	21	0	0	0	0	0	0	0
/helloworld.Greeter/SayHello					20	0	0	0	0	0	0	0
$ ./binlog --proto ~/tmp/gorpc/helloworld/helloworld.proto view /tmp/grpcgo_binarylog_1037680716.txt | head
2022/01/26 17:22:29 last entry truncated, ignoring
When				Elapsed	Method
2022/01/26 12:03:01.895903	1.072ms	/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo
2022/01/26 12:03:01.897807	41µs	/helloworld.Greeter/SayHello
2022/01/26 12:03:02.032776	43µs	/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo
2022/01/26 12:03:02.033513	41µs	/helloworld.Greeter/SayHello
2022/01/26 12:03:02.167865	27µs	/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo
2022/01/26 12:03:02.168554	33µs	/helloworld.Greeter/SayHello
2022/01/26 12:03:02.299392	25µs	/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo
2022/01/26 12:03:02.300090	26µs	/helloworld.Greeter/SayHello
2022/01/26 12:03:02.434406	29µs	/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo
$ ./binlog --proto ~/tmp/gorpc/helloworld/helloworld.proto view /tmp/grpcgo_binarylog_1037680716.txt --expand | head
2022/01/26 17:22:34 last entry truncated, ignoring
When				Elapsed	Method
2022/01/26 12:03:01.895903	1.072ms	/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo
->					cannot find method descriptor for "/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo"
<-					cannot find method descriptor for "/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo"

2022/01/26 12:03:01.897807	41µs	/helloworld.Greeter/SayHello
->					{"name":"foo"}
<-					{"message":"Hello foo from "}
Owner
Comments
  • Add a

    Add a "replay" command

    I'd like to be able to take one or more requests and send them (replay) to a gRPC server.

    Examples

    Replay one specific call:

    $ binlog replay <my.binlog --call-id 123 --target localhost:1234
    

    Replay all calls:

    $ binlog replay <my.binlog --target localhost:1234
    

    Replay all calls and send them to the peer addresses recorded in the binary log:

    $ binlog replay <my.binlog
    

    The input file is a binary log file, that includes both request messages and response messages. The replay command should ignore the response messages (if present) in the input file, and only send out request messages to the target gRPC service.

  • chore(deps): update actions/checkout digest to ac59398

    chore(deps): update actions/checkout digest to ac59398

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/checkout | action | digest | 755da8c -> ac59398 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update goreleaser/goreleaser-action action to v4

    chore(deps): update goreleaser/goreleaser-action action to v4

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | goreleaser/goreleaser-action | action | major | v3 -> v4 |


    Release Notes

    goreleaser/goreleaser-action

    v4

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update actions/setup-go digest to 6edd440

    chore(deps): update actions/setup-go digest to 6edd440

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/setup-go | action | digest | d0a58c1 -> 6edd440 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update actions/checkout digest to 755da8c

    chore(deps): update actions/checkout digest to 755da8c

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/checkout | action | digest | 7dd9e2a -> 755da8c |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update actions/checkout digest to 7dd9e2a

    chore(deps): update actions/checkout digest to 7dd9e2a

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/checkout | action | digest | 2541b12 -> 7dd9e2a |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update actions/setup-go digest to d0a58c1

    chore(deps): update actions/setup-go digest to d0a58c1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/setup-go | action | digest | c4a742c -> d0a58c1 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module google.golang.org/grpc to v1.51.0

    fix(deps): update module google.golang.org/grpc to v1.51.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | google.golang.org/grpc | require | minor | v1.50.1 -> v1.51.0 |


    Release Notes

    grpc/grpc-go

    v1.51.0: Release 1.51.0

    Compare Source

    Behavior Changes

    • xds: NACK EDS resources with duplicate addresses in accordance with a recent spec change (#​5715)
    • grpc: restrict status codes that can be generated by the control plane (gRFC A54) (#​5653)

    New Features

    • client: set grpc-accept-encoding header with all registered compressors (#​5541)
    • xds/weightedtarget: return a more meaningful error when all child policies are in TRANSIENT_FAILURE (#​5711)
    • gcp/observability: add "started rpcs" metric (#​5768)
    • xds: de-experimentalize the google-c2p-resolver (#​5707)
    • balancer: add experimental Producer types and methods (#​5669)
    • orca: provide a way for LB policies to receive OOB load reports (#​5669)

    Bug Fixes

    • go.mod: upgrade x/text dependency to address CVE 2022-32149 (#​5769)
    • client: fix race that could lead to an incorrect connection state if it was closed immediately after the server's HTTP/2 preface was received (#​5714)
    • xds: ensure sum of the weights of all EDS localities at the same priority level does not exceed uint32 max (#​5703)
    • client: fix binary logging bug which logs a server header on a trailers-only response (#​5763)
    • balancer/priority: fix a bug where unreleased references to removed child policies (and associated state) was causing a memory leak (#​5682)
    • xds/google-c2p: validate URI schema for no authorities (#​5756)

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/alecthomas/kong to v0.7.1

    fix(deps): update module github.com/alecthomas/kong to v0.7.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/alecthomas/kong | require | patch | v0.7.0 -> v0.7.1 |


    Release Notes

    alecthomas/kong

    v0.7.1

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/alecthomas/kong to v0.7.0

    fix(deps): update module github.com/alecthomas/kong to v0.7.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/alecthomas/kong | require | minor | v0.6.1 -> v0.7.0 |


    Release Notes

    alecthomas/kong

    v0.7.0

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update actions/setup-go digest to c4a742c

    chore(deps): update actions/setup-go digest to c4a742c

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/setup-go | action | digest | 268d8c0 -> c4a742c |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update github.com/mkmik/tail digest to 7644d5e

    fix(deps): update github.com/mkmik/tail digest to 7644d5e

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/mkmik/tail | require | digest | 0521872 -> 7644d5e |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/jhump/protoreflect to v1.14.0

    fix(deps): update module github.com/jhump/protoreflect to v1.14.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/jhump/protoreflect | require | minor | v1.13.0 -> v1.14.0 |


    Release Notes

    jhump/protoreflect

    v1.14.0

    Compare Source

    "github.com/jhump/protoreflect/dynamic"

    Changes/fixes:

    • If converting or merging a generated message into a *dynamic.Message, if the generated message contained dynamic extensions (extension fields not known to the Protobuf runtime's global registry), they would be lost during the conversion. This has been fixed.
    "github.com/jhump/protoreflect/grpcreflect"

    Additions:

    • Adds a new grpcreflect.NewClientAuto method, which returns a client that will automatically use either the v1 version of server reflection or v1alpha, depending on what the server supports.
    • Adds a new grpcreflect.NewClientAlpha method which is meant to replace grpcreflect.NewClient. It always uses the v1alpha version of server reflection (and its predecessor, grpcreflect.NewClient, is now deprecated since it is unclearly named).

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

Related tags
Toy TLS certificate viewer

veilig Toy tls certificate viewer that I built because openssl s_client confuses me Source available at: https://github.com/noqqe/veilig/ Please repor

Aug 25, 2022
Self-hosted reverse-proxy for F1 web viewer.
Self-hosted reverse-proxy for F1 web viewer.

F1WebViewer-SelfHosted Self-hosted reverse-proxy for F1 web viewer and includes a web server at port 13331. You can also run this proxy on a server if

Dec 21, 2022
A suite of gRPC debugging tools. Like Fiddler/Charles but for gRPC.

grpc-tools A suite of tools for gRPC debugging and development. Like Fiddler/Charles but for gRPC! The main tool is grpc-dump which transparently inte

Dec 22, 2022
grpc-http1: A gRPC via HTTP/1 Enabling Library for Go

grpc-http1: A gRPC via HTTP/1 Enabling Library for Go This library enables using all the functionality of a gRPC server even if it is exposed behind a

Dec 17, 2022
Server and client implementation of the grpc go libraries to perform unary, client streaming, server streaming and full duplex RPCs from gRPC go introduction

Description This is an implementation of a gRPC client and server that provides route guidance from gRPC Basics: Go tutorial. It demonstrates how to u

Nov 24, 2021
Go based grpc - grpc gateway micro service example

go-grpc-gateway-server This repository provides an example for go based microservice. Go micro services developed based on gRPC protobuf's and also us

Dec 8, 2021
Simple grpc web and grpc transcoding with Envoy
Simple grpc web and grpc transcoding with Envoy

gRPC Web and gRPC Transcoding with Envoy This is a simple stand-alone set of con

Dec 25, 2021
Go-grpc - This is grpc server for golang.

go-grpc This is grpc server for golang. protocのインストール brew install protoc Golang用のプラグインのインストール go install google.golang.org/protobuf/cmd/protoc-gen-go

Jan 2, 2022
GRPC - Creating a gRPC service from scratch

#Go gRPC services course Creating a gRPC service from scratch Command line colle

Jan 2, 2022
Totem - A Go library that can turn a single gRPC stream into bidirectional unary gRPC servers

Totem is a Go library that can turn a single gRPC stream into bidirectional unar

Jan 6, 2023
Grpc-gateway-map-null - gRPC Gateway test using nullable values in map

Demonstrate gRPC gateway behavior with nullable values in maps Using grpc-gatewa

Jan 6, 2022
Todo-app-grpc - Go/GRPC codebase containing RealWorld examples (CRUD, auth, advanced patterns, etc)

Go/GRPC codebase containing RealWorld examples (CRUD, auth, advanced patterns, e

Oct 12, 2022
GRPC - A client-server mockup, using gRPC to expose functionality.

gRPC This is a mockup application that I built to help me visualise and understand the basic concepts of gRPC. In this exchange, the client can use a

Jan 4, 2022
Raft-grpc-demo - Some example code for how to use Hashicorp's Raft implementation with gRPC

raft-grpc-example This is some example code for how to use Hashicorp's Raft impl

Jan 4, 2022
Benthos-input-grpc - gRPC custom benthos input

gRPC custom benthos input Create a custom benthos input that receives messages f

Sep 26, 2022
Go-grpc-template - A small template for quickly bootstrapping a, developer platform independent gRPC golang application
Go-grpc-template - A small template for quickly bootstrapping a, developer platform independent gRPC golang application

go-grpc-template A small template for quickly bootstrapping a developer platform

Jan 20, 2022
Grpc-train - Train booking demo using gRPC

gRPC Demo: Train Booking Service Description Usage Contributing Development Tool

Feb 6, 2022
This repo contains a sample app exposing a gRPC health endpoint to demo Kubernetes gRPC probes.

This repo contains a sample app exposing a health endpoint by implementing grpc_health_v1. Usecase is to demo the gRPC readiness and liveness probes introduced in Kubernetes 1.23.

Feb 9, 2022
Go-grpc-tutorial - Simple gRPC server/client using go

Simple gRPC server/client using go Run server go run usermgmt_server/usermgmt_

Feb 14, 2022