From 0be22c98c6691562aa16bfbe4159807b3918ca11 Mon Sep 17 00:00:00 2001 From: Asim Aslam Date: Thu, 30 Jan 2020 23:24:46 +0000 Subject: [PATCH] add tracing --- config/cmd/cmd.go | 1 - debug/service/client.go | 9 +- debug/service/proto/debug.pb.go | 46 +++++----- debug/service/proto/debug.pb.micro.go | 126 +++++++++++++------------- debug/service/proto/debug.proto | 2 +- 5 files changed, 97 insertions(+), 87 deletions(-) diff --git a/config/cmd/cmd.go b/config/cmd/cmd.go index c576df2d..6bbaacd4 100644 --- a/config/cmd/cmd.go +++ b/config/cmd/cmd.go @@ -217,7 +217,6 @@ var ( Name: "tracer", EnvVars: []string{"MICRO_TRACER"}, Usage: "Tracer for distributed tracing, e.g. memory, jaeger", - Value: "memory", }, &cli.StringFlag{ Name: "tracer_address", diff --git a/debug/service/client.go b/debug/service/client.go index 192101f3..6b6affd1 100644 --- a/debug/service/client.go +++ b/debug/service/client.go @@ -6,7 +6,6 @@ import ( "time" "github.com/micro/go-micro/v2/client" - "github.com/micro/go-micro/v2/debug/log" pb "github.com/micro/go-micro/v2/debug/service/proto" ) @@ -16,6 +15,14 @@ type debugClient struct { Client pb.DebugService } +func (d *debugClient) Trace() ([]*pb.Span, error) { + rsp, err := d.Client.Trace(context.Background(), &pb.TraceRequest{}) + if err != nil { + return nil, err + } + return rsp.Spans, nil +} + // Logs queries the services logs and returns a channel to read the logs from func (d *debugClient) Log(since time.Time, count int, stream bool) (log.Stream, error) { req := &pb.LogRequest{} diff --git a/debug/service/proto/debug.pb.go b/debug/service/proto/debug.pb.go index 6e513462..a2378b30 100644 --- a/debug/service/proto/debug.pb.go +++ b/debug/service/proto/debug.pb.go @@ -564,40 +564,40 @@ func init() { } var fileDescriptor_dea322649cde1ef2 = []byte{ - // 554 bytes of a gzipped FileDescriptorProto + // 553 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xcd, 0x6e, 0xd4, 0x30, 0x10, 0xde, 0x24, 0x9b, 0xdd, 0xcd, 0xb4, 0x09, 0xc8, 0xfc, 0x28, 0x0a, 0x08, 0x2a, 0x9f, 0x16, 0x01, 0x5e, 0x28, 0x17, 0x04, 0x57, 0x90, 0x38, 0x94, 0x8b, 0xcb, 0x0b, 0xb8, 0x89, 0x95, 0x06, 0x9a, 0x38, 0xd8, 0x4e, 0xa5, 0x7d, 0x24, 0x6e, 0xbc, 0x0c, 0x6f, 0xc3, 0x01, 0xf9, 0x27, 0xdb, - 0x44, 0x08, 0xf5, 0xc0, 0xcd, 0xdf, 0xe7, 0x99, 0x2f, 0x33, 0x9f, 0x67, 0x02, 0xa4, 0x6d, 0x4a, + 0x44, 0x08, 0xf5, 0xc0, 0xcd, 0xdf, 0xe7, 0xf1, 0x97, 0x99, 0x6f, 0x66, 0x02, 0xa4, 0x6d, 0x4a, 0x29, 0x76, 0xb5, 0x78, 0xe9, 0x0e, 0x15, 0xbf, 0x18, 0xea, 0x9d, 0xe2, 0xf2, 0xba, 0x29, 0xf9, 0xae, 0x97, 0x42, 0x7b, 0x8e, 0xd8, 0x33, 0x7e, 0x06, 0xe9, 0x27, 0xce, 0xae, 0xf4, 0x25, 0xe5, 0xdf, 0x07, 0xae, 0x34, 0xca, 0x61, 0xed, 0xa3, 0xf3, 0xe0, 0x24, 0xd8, 0x26, 0x74, 0x84, 0x78, 0x0b, 0xd9, 0x18, 0xaa, 0x7a, 0xd1, 0x29, 0x8e, 0x1e, 0xc2, 0x4a, 0x69, 0xa6, 0x07, 0xe5, 0x43, 0x3d, 0xc2, 0x5b, 0x38, 0x3e, 0xd7, 0x4c, 0xab, 0xdb, 0x35, 0x7f, 0x05, 0x90, 0xfa, 0x50, 0xaf, 0xf9, 0x18, 0x12, 0xdd, 0xb4, 0x5c, 0x69, 0xd6, 0xf6, 0x36, 0x7a, 0x49, 0x6f, 0x08, 0xab, 0xa4, - 0x99, 0xd4, 0xbc, 0xca, 0x43, 0x7b, 0x37, 0x42, 0x53, 0xcb, 0xd0, 0x9b, 0xc0, 0x3c, 0xb2, 0x17, + 0x99, 0xd4, 0xbc, 0xca, 0x43, 0x7b, 0x37, 0x42, 0x93, 0xcb, 0xd0, 0x9b, 0xc0, 0x3c, 0xb2, 0x17, 0x1e, 0x19, 0xbe, 0xe5, 0xad, 0x90, 0xfb, 0x7c, 0xe9, 0x78, 0x87, 0x8c, 0x92, 0xbe, 0x94, 0x9c, 0x55, 0x2a, 0x8f, 0x9d, 0x92, 0x87, 0x28, 0x83, 0xb0, 0x2e, 0xf3, 0x95, 0x25, 0xc3, 0xba, 0x44, - 0x05, 0x6c, 0xa4, 0x6b, 0x44, 0xe5, 0x6b, 0xcb, 0x1e, 0xb0, 0x51, 0xe7, 0x52, 0x0a, 0xa9, 0xf2, - 0x8d, 0x53, 0x77, 0x08, 0x7f, 0x05, 0x38, 0x13, 0xf5, 0xad, 0xfd, 0x3b, 0x07, 0x25, 0x67, 0xad, - 0x6d, 0x67, 0x43, 0x3d, 0x42, 0xf7, 0x21, 0x2e, 0xc5, 0xd0, 0x69, 0xdb, 0x4c, 0x44, 0x1d, 0x30, - 0xac, 0x6a, 0xba, 0x92, 0xdb, 0x56, 0x22, 0xea, 0x00, 0xfe, 0x19, 0xc0, 0x8a, 0xf2, 0x52, 0xc8, + 0x05, 0x6c, 0xa4, 0x2b, 0x44, 0xe5, 0x6b, 0xcb, 0x1e, 0xb0, 0x51, 0xe7, 0x52, 0x0a, 0xa9, 0xf2, + 0x8d, 0x53, 0x77, 0x08, 0x7f, 0x05, 0x38, 0x13, 0xf5, 0xad, 0xf5, 0x3b, 0x07, 0x25, 0x67, 0xad, + 0x2d, 0x67, 0x43, 0x3d, 0x42, 0xf7, 0x21, 0x2e, 0xc5, 0xd0, 0x69, 0x5b, 0x4c, 0x44, 0x1d, 0x30, + 0xac, 0x6a, 0xba, 0x92, 0xdb, 0x52, 0x22, 0xea, 0x00, 0xfe, 0x19, 0xc0, 0x8a, 0xf2, 0x52, 0xc8, 0xea, 0x6f, 0xf3, 0xa2, 0xa9, 0x79, 0xaf, 0x61, 0xd3, 0x72, 0xcd, 0x2a, 0xa6, 0x59, 0x1e, 0x9e, - 0x44, 0xdb, 0xa3, 0xd3, 0x07, 0xc4, 0x25, 0x92, 0xcf, 0x9e, 0xff, 0xd8, 0x69, 0xb9, 0xa7, 0x87, - 0x30, 0x53, 0x79, 0xcb, 0x95, 0x62, 0xb5, 0xb3, 0x35, 0xa1, 0x23, 0x2c, 0xde, 0x43, 0x3a, 0x4b, - 0x42, 0x77, 0x21, 0xfa, 0xc6, 0xf7, 0xbe, 0x41, 0x73, 0x34, 0xe5, 0x5e, 0xb3, 0xab, 0x81, 0xdb, - 0xde, 0x12, 0xea, 0xc0, 0xbb, 0xf0, 0x6d, 0x80, 0x9f, 0xc0, 0xf1, 0x17, 0xc9, 0x4a, 0x3e, 0x1a, - 0x94, 0x41, 0xd8, 0x54, 0x3e, 0x35, 0x6c, 0x2a, 0xfc, 0x02, 0x52, 0x7f, 0xef, 0xa7, 0xe2, 0x11, - 0xc4, 0xaa, 0x67, 0x9d, 0x19, 0x34, 0x53, 0x77, 0x4c, 0xce, 0x7b, 0xd6, 0x51, 0xc7, 0xe1, 0xdf, - 0x01, 0x2c, 0x0d, 0x36, 0x1f, 0xd4, 0x26, 0xcd, 0x2b, 0x39, 0xe0, 0xc5, 0xc3, 0x51, 0xdc, 0x78, - 0xde, 0x33, 0xc9, 0xbd, 0xb9, 0x09, 0xf5, 0x08, 0x21, 0x58, 0x76, 0xac, 0x75, 0xe6, 0x26, 0xd4, - 0x9e, 0xa7, 0xf3, 0x16, 0xcf, 0xe7, 0xad, 0x80, 0x4d, 0x35, 0x48, 0xa6, 0x1b, 0xd1, 0xf9, 0x59, - 0x39, 0x60, 0xb4, 0x9b, 0x18, 0xbd, 0xb6, 0x05, 0xdf, 0xb3, 0x05, 0xff, 0xcb, 0xe6, 0xff, 0x32, - 0xf3, 0xf4, 0x47, 0x00, 0xf1, 0x07, 0xb3, 0xd2, 0xe8, 0x39, 0xac, 0xdc, 0x86, 0xa2, 0x8c, 0xcc, - 0xb6, 0xba, 0xb8, 0x43, 0xe6, 0xab, 0x8b, 0x17, 0x68, 0x0b, 0xb1, 0xdd, 0x3c, 0x94, 0x92, 0xe9, - 0xb2, 0x16, 0x19, 0x99, 0x2d, 0x24, 0x5e, 0xa0, 0xa7, 0x10, 0x9d, 0x89, 0x1a, 0x1d, 0x91, 0x9b, - 0x91, 0x2e, 0xd6, 0x7e, 0x72, 0xf0, 0xe2, 0x55, 0x60, 0xa4, 0xec, 0x73, 0xa1, 0x94, 0x4c, 0x9f, - 0xb5, 0xc8, 0xc8, 0xec, 0x15, 0xf1, 0xe2, 0x62, 0x65, 0xff, 0x3a, 0x6f, 0xfe, 0x04, 0x00, 0x00, - 0xff, 0xff, 0x02, 0xa2, 0x4d, 0xc9, 0xa7, 0x04, 0x00, 0x00, + 0x44, 0xdb, 0xa3, 0xd3, 0x07, 0xc4, 0x3d, 0x24, 0x9f, 0x3d, 0xff, 0xb1, 0xd3, 0x72, 0x4f, 0x0f, + 0x61, 0x26, 0xf3, 0x96, 0x2b, 0xc5, 0x6a, 0x67, 0x6b, 0x42, 0x47, 0x58, 0xbc, 0x87, 0x74, 0xf6, + 0x08, 0xdd, 0x85, 0xe8, 0x1b, 0xdf, 0xfb, 0x02, 0xcd, 0xd1, 0xa4, 0x7b, 0xcd, 0xae, 0x06, 0x6e, + 0x6b, 0x4b, 0xa8, 0x03, 0xef, 0xc2, 0xb7, 0x01, 0x7e, 0x02, 0xc7, 0x5f, 0x24, 0x2b, 0xf9, 0x68, + 0x50, 0x06, 0x61, 0x53, 0xf9, 0xa7, 0x61, 0x53, 0xe1, 0x17, 0x90, 0xfa, 0x7b, 0x3f, 0x15, 0x8f, + 0x20, 0x56, 0x3d, 0xeb, 0xcc, 0xa0, 0x99, 0xbc, 0x63, 0x72, 0xde, 0xb3, 0x8e, 0x3a, 0x0e, 0xff, + 0x0e, 0x60, 0x69, 0xb0, 0xf9, 0xa0, 0x36, 0xcf, 0xbc, 0x92, 0x03, 0x5e, 0x3c, 0x1c, 0xc5, 0x8d, + 0xe7, 0x3d, 0x93, 0xdc, 0x9b, 0x9b, 0x50, 0x8f, 0x10, 0x82, 0x65, 0xc7, 0x5a, 0x67, 0x6e, 0x42, + 0xed, 0x79, 0x3a, 0x6f, 0xf1, 0x7c, 0xde, 0x0a, 0xd8, 0x54, 0x83, 0x64, 0xba, 0x11, 0x9d, 0x9f, + 0x95, 0x03, 0x46, 0xbb, 0x89, 0xd1, 0x6b, 0x9b, 0xf0, 0x3d, 0x9b, 0xf0, 0xbf, 0x6c, 0xfe, 0x2f, + 0x33, 0x4f, 0x7f, 0x04, 0x10, 0x7f, 0x30, 0x2b, 0x8d, 0x9e, 0x42, 0x74, 0x26, 0x6a, 0x74, 0x44, + 0x6e, 0x66, 0xaf, 0x58, 0xfb, 0x16, 0xe3, 0xc5, 0xab, 0x00, 0x3d, 0x87, 0x95, 0x5b, 0x61, 0x94, + 0x91, 0xd9, 0xda, 0x17, 0x77, 0xc8, 0x7c, 0xb7, 0xf1, 0x02, 0x6d, 0x21, 0xb6, 0xab, 0x89, 0x52, + 0x32, 0xdd, 0xe6, 0x22, 0x23, 0xb3, 0x8d, 0x75, 0x91, 0xb6, 0x5d, 0x28, 0x25, 0xd3, 0xb6, 0x16, + 0x19, 0x99, 0x75, 0x11, 0x2f, 0x2e, 0x56, 0xf6, 0xaf, 0xf3, 0xe6, 0x4f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xc7, 0x3f, 0xbe, 0xe3, 0xa7, 0x04, 0x00, 0x00, } diff --git a/debug/service/proto/debug.pb.micro.go b/debug/service/proto/debug.pb.micro.go index a5f773e1..0692209c 100644 --- a/debug/service/proto/debug.pb.micro.go +++ b/debug/service/proto/debug.pb.micro.go @@ -34,9 +34,9 @@ var _ server.Option // Client API for Debug service type DebugService interface { + Log(ctx context.Context, in *LogRequest, opts ...client.CallOption) (Debug_LogService, error) Health(ctx context.Context, in *HealthRequest, opts ...client.CallOption) (*HealthResponse, error) Stats(ctx context.Context, in *StatsRequest, opts ...client.CallOption) (*StatsResponse, error) - Log(ctx context.Context, in *LogRequest, opts ...client.CallOption) (Debug_LogService, error) Trace(ctx context.Context, in *TraceRequest, opts ...client.CallOption) (*TraceResponse, error) } @@ -46,18 +46,61 @@ type debugService struct { } func NewDebugService(name string, c client.Client) DebugService { - if c == nil { - c = client.NewClient() - } - if len(name) == 0 { - name = "debug" - } return &debugService{ c: c, name: name, } } +func (c *debugService) Log(ctx context.Context, in *LogRequest, opts ...client.CallOption) (Debug_LogService, error) { + req := c.c.NewRequest(c.name, "Debug.Log", &LogRequest{}) + stream, err := c.c.Stream(ctx, req, opts...) + if err != nil { + return nil, err + } + if err := stream.Send(in); err != nil { + return nil, err + } + return &debugServiceLog{stream}, nil +} + +type Debug_LogService interface { + Context() context.Context + SendMsg(interface{}) error + RecvMsg(interface{}) error + Close() error + Recv() (*Record, error) +} + +type debugServiceLog struct { + stream client.Stream +} + +func (x *debugServiceLog) Close() error { + return x.stream.Close() +} + +func (x *debugServiceLog) Context() context.Context { + return x.stream.Context() +} + +func (x *debugServiceLog) SendMsg(m interface{}) error { + return x.stream.Send(m) +} + +func (x *debugServiceLog) RecvMsg(m interface{}) error { + return x.stream.Recv(m) +} + +func (x *debugServiceLog) Recv() (*Record, error) { + m := new(Record) + err := x.stream.Recv(m) + if err != nil { + return nil, err + } + return m, nil +} + func (c *debugService) Health(ctx context.Context, in *HealthRequest, opts ...client.CallOption) (*HealthResponse, error) { req := c.c.NewRequest(c.name, "Debug.Health", in) out := new(HealthResponse) @@ -78,50 +121,6 @@ func (c *debugService) Stats(ctx context.Context, in *StatsRequest, opts ...clie return out, nil } -func (c *debugService) Log(ctx context.Context, in *LogRequest, opts ...client.CallOption) (Debug_LogService, error) { - req := c.c.NewRequest(c.name, "Debug.Log", &LogRequest{}) - stream, err := c.c.Stream(ctx, req, opts...) - if err != nil { - return nil, err - } - if err := stream.Send(in); err != nil { - return nil, err - } - return &debugServiceLog{stream}, nil -} - -type Debug_LogService interface { - SendMsg(interface{}) error - RecvMsg(interface{}) error - Close() error - Recv() (*Record, error) -} - -type debugServiceLog struct { - stream client.Stream -} - -func (x *debugServiceLog) Close() error { - return x.stream.Close() -} - -func (x *debugServiceLog) SendMsg(m interface{}) error { - return x.stream.Send(m) -} - -func (x *debugServiceLog) RecvMsg(m interface{}) error { - return x.stream.Recv(m) -} - -func (x *debugServiceLog) Recv() (*Record, error) { - m := new(Record) - err := x.stream.Recv(m) - if err != nil { - return nil, err - } - return m, nil -} - func (c *debugService) Trace(ctx context.Context, in *TraceRequest, opts ...client.CallOption) (*TraceResponse, error) { req := c.c.NewRequest(c.name, "Debug.Trace", in) out := new(TraceResponse) @@ -135,17 +134,17 @@ func (c *debugService) Trace(ctx context.Context, in *TraceRequest, opts ...clie // Server API for Debug service type DebugHandler interface { + Log(context.Context, *LogRequest, Debug_LogStream) error Health(context.Context, *HealthRequest, *HealthResponse) error Stats(context.Context, *StatsRequest, *StatsResponse) error - Log(context.Context, *LogRequest, Debug_LogStream) error Trace(context.Context, *TraceRequest, *TraceResponse) error } func RegisterDebugHandler(s server.Server, hdlr DebugHandler, opts ...server.HandlerOption) error { type debug interface { + Log(ctx context.Context, stream server.Stream) error Health(ctx context.Context, in *HealthRequest, out *HealthResponse) error Stats(ctx context.Context, in *StatsRequest, out *StatsResponse) error - Log(ctx context.Context, stream server.Stream) error Trace(ctx context.Context, in *TraceRequest, out *TraceResponse) error } type Debug struct { @@ -159,14 +158,6 @@ type debugHandler struct { DebugHandler } -func (h *debugHandler) Health(ctx context.Context, in *HealthRequest, out *HealthResponse) error { - return h.DebugHandler.Health(ctx, in, out) -} - -func (h *debugHandler) Stats(ctx context.Context, in *StatsRequest, out *StatsResponse) error { - return h.DebugHandler.Stats(ctx, in, out) -} - func (h *debugHandler) Log(ctx context.Context, stream server.Stream) error { m := new(LogRequest) if err := stream.Recv(m); err != nil { @@ -176,6 +167,7 @@ func (h *debugHandler) Log(ctx context.Context, stream server.Stream) error { } type Debug_LogStream interface { + Context() context.Context SendMsg(interface{}) error RecvMsg(interface{}) error Close() error @@ -190,6 +182,10 @@ func (x *debugLogStream) Close() error { return x.stream.Close() } +func (x *debugLogStream) Context() context.Context { + return x.stream.Context() +} + func (x *debugLogStream) SendMsg(m interface{}) error { return x.stream.Send(m) } @@ -202,6 +198,14 @@ func (x *debugLogStream) Send(m *Record) error { return x.stream.Send(m) } +func (h *debugHandler) Health(ctx context.Context, in *HealthRequest, out *HealthResponse) error { + return h.DebugHandler.Health(ctx, in, out) +} + +func (h *debugHandler) Stats(ctx context.Context, in *StatsRequest, out *StatsResponse) error { + return h.DebugHandler.Stats(ctx, in, out) +} + func (h *debugHandler) Trace(ctx context.Context, in *TraceRequest, out *TraceResponse) error { return h.DebugHandler.Trace(ctx, in, out) } diff --git a/debug/service/proto/debug.proto b/debug/service/proto/debug.proto index 140b2d91..81eb44b8 100644 --- a/debug/service/proto/debug.proto +++ b/debug/service/proto/debug.proto @@ -1,9 +1,9 @@ syntax = "proto3"; service Debug { + rpc Log(LogRequest) returns (stream Record) {}; rpc Health(HealthRequest) returns (HealthResponse) {}; rpc Stats(StatsRequest) returns (StatsResponse) {}; - rpc Log(LogRequest) returns (stream Record) {}; rpc Trace(TraceRequest) returns (TraceResponse) {}; }