add timestamp to stats

This commit is contained in:
Asim Aslam 2019-12-04 23:51:07 +00:00
parent 26755f86b1
commit 78647c7027
5 changed files with 63 additions and 49 deletions

View File

@ -38,6 +38,7 @@ func (d *Debug) Stats(ctx context.Context, req *proto.StatsRequest, rsp *proto.S
var mstat runtime.MemStats var mstat runtime.MemStats
runtime.ReadMemStats(&mstat) runtime.ReadMemStats(&mstat)
rsp.Timestamp = uint64(time.Now().Unix())
rsp.Started = uint64(d.started) rsp.Started = uint64(d.started)
rsp.Uptime = uint64(time.Now().Unix() - d.started) rsp.Uptime = uint64(time.Now().Unix() - d.started)
rsp.Memory = mstat.Alloc rsp.Memory = mstat.Alloc

View File

@ -1,5 +1,5 @@
// Code generated by protoc-gen-go. DO NOT EDIT. // Code generated by protoc-gen-go. DO NOT EDIT.
// source: github.com/micro/go-micro/debug/proto/debug.proto // source: micro/go-micro/debug/service/proto/debug.proto
package debug package debug
@ -32,7 +32,7 @@ func (m *HealthRequest) Reset() { *m = HealthRequest{} }
func (m *HealthRequest) String() string { return proto.CompactTextString(m) } func (m *HealthRequest) String() string { return proto.CompactTextString(m) }
func (*HealthRequest) ProtoMessage() {} func (*HealthRequest) ProtoMessage() {}
func (*HealthRequest) Descriptor() ([]byte, []int) { func (*HealthRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_7cb19b1a05a6e0a9, []int{0} return fileDescriptor_dea322649cde1ef2, []int{0}
} }
func (m *HealthRequest) XXX_Unmarshal(b []byte) error { func (m *HealthRequest) XXX_Unmarshal(b []byte) error {
@ -72,7 +72,7 @@ func (m *HealthResponse) Reset() { *m = HealthResponse{} }
func (m *HealthResponse) String() string { return proto.CompactTextString(m) } func (m *HealthResponse) String() string { return proto.CompactTextString(m) }
func (*HealthResponse) ProtoMessage() {} func (*HealthResponse) ProtoMessage() {}
func (*HealthResponse) Descriptor() ([]byte, []int) { func (*HealthResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_7cb19b1a05a6e0a9, []int{1} return fileDescriptor_dea322649cde1ef2, []int{1}
} }
func (m *HealthResponse) XXX_Unmarshal(b []byte) error { func (m *HealthResponse) XXX_Unmarshal(b []byte) error {
@ -112,7 +112,7 @@ func (m *StatsRequest) Reset() { *m = StatsRequest{} }
func (m *StatsRequest) String() string { return proto.CompactTextString(m) } func (m *StatsRequest) String() string { return proto.CompactTextString(m) }
func (*StatsRequest) ProtoMessage() {} func (*StatsRequest) ProtoMessage() {}
func (*StatsRequest) Descriptor() ([]byte, []int) { func (*StatsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_7cb19b1a05a6e0a9, []int{2} return fileDescriptor_dea322649cde1ef2, []int{2}
} }
func (m *StatsRequest) XXX_Unmarshal(b []byte) error { func (m *StatsRequest) XXX_Unmarshal(b []byte) error {
@ -141,16 +141,18 @@ func (m *StatsRequest) GetService() string {
} }
type StatsResponse struct { type StatsResponse struct {
// timestamp of recording
Timestamp uint64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
// unix timestamp // unix timestamp
Started uint64 `protobuf:"varint,1,opt,name=started,proto3" json:"started,omitempty"` Started uint64 `protobuf:"varint,2,opt,name=started,proto3" json:"started,omitempty"`
// in seconds // in seconds
Uptime uint64 `protobuf:"varint,2,opt,name=uptime,proto3" json:"uptime,omitempty"` Uptime uint64 `protobuf:"varint,3,opt,name=uptime,proto3" json:"uptime,omitempty"`
// in bytes // in bytes
Memory uint64 `protobuf:"varint,3,opt,name=memory,proto3" json:"memory,omitempty"` Memory uint64 `protobuf:"varint,4,opt,name=memory,proto3" json:"memory,omitempty"`
// num threads // num threads
Threads uint64 `protobuf:"varint,4,opt,name=threads,proto3" json:"threads,omitempty"` Threads uint64 `protobuf:"varint,5,opt,name=threads,proto3" json:"threads,omitempty"`
// total gc in nanoseconds // total gc in nanoseconds
Gc uint64 `protobuf:"varint,5,opt,name=gc,proto3" json:"gc,omitempty"` Gc uint64 `protobuf:"varint,6,opt,name=gc,proto3" json:"gc,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -160,7 +162,7 @@ func (m *StatsResponse) Reset() { *m = StatsResponse{} }
func (m *StatsResponse) String() string { return proto.CompactTextString(m) } func (m *StatsResponse) String() string { return proto.CompactTextString(m) }
func (*StatsResponse) ProtoMessage() {} func (*StatsResponse) ProtoMessage() {}
func (*StatsResponse) Descriptor() ([]byte, []int) { func (*StatsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_7cb19b1a05a6e0a9, []int{3} return fileDescriptor_dea322649cde1ef2, []int{3}
} }
func (m *StatsResponse) XXX_Unmarshal(b []byte) error { func (m *StatsResponse) XXX_Unmarshal(b []byte) error {
@ -181,6 +183,13 @@ func (m *StatsResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_StatsResponse proto.InternalMessageInfo var xxx_messageInfo_StatsResponse proto.InternalMessageInfo
func (m *StatsResponse) GetTimestamp() uint64 {
if m != nil {
return m.Timestamp
}
return 0
}
func (m *StatsResponse) GetStarted() uint64 { func (m *StatsResponse) GetStarted() uint64 {
if m != nil { if m != nil {
return m.Started return m.Started
@ -237,7 +246,7 @@ func (m *LogRequest) Reset() { *m = LogRequest{} }
func (m *LogRequest) String() string { return proto.CompactTextString(m) } func (m *LogRequest) String() string { return proto.CompactTextString(m) }
func (*LogRequest) ProtoMessage() {} func (*LogRequest) ProtoMessage() {}
func (*LogRequest) Descriptor() ([]byte, []int) { func (*LogRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_7cb19b1a05a6e0a9, []int{4} return fileDescriptor_dea322649cde1ef2, []int{4}
} }
func (m *LogRequest) XXX_Unmarshal(b []byte) error { func (m *LogRequest) XXX_Unmarshal(b []byte) error {
@ -303,7 +312,7 @@ func (m *Record) Reset() { *m = Record{} }
func (m *Record) String() string { return proto.CompactTextString(m) } func (m *Record) String() string { return proto.CompactTextString(m) }
func (*Record) ProtoMessage() {} func (*Record) ProtoMessage() {}
func (*Record) Descriptor() ([]byte, []int) { func (*Record) Descriptor() ([]byte, []int) {
return fileDescriptor_7cb19b1a05a6e0a9, []int{5} return fileDescriptor_dea322649cde1ef2, []int{5}
} }
func (m *Record) XXX_Unmarshal(b []byte) error { func (m *Record) XXX_Unmarshal(b []byte) error {
@ -356,34 +365,34 @@ func init() {
} }
func init() { func init() {
proto.RegisterFile("github.com/micro/go-micro/debug/proto/debug.proto", fileDescriptor_7cb19b1a05a6e0a9) proto.RegisterFile("micro/go-micro/debug/service/proto/debug.proto", fileDescriptor_dea322649cde1ef2)
} }
var fileDescriptor_7cb19b1a05a6e0a9 = []byte{ var fileDescriptor_dea322649cde1ef2 = []byte{
// 400 bytes of a gzipped FileDescriptorProto // 399 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xcd, 0x8a, 0x13, 0x41, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0xc1, 0x6e, 0xd4, 0x30,
0x10, 0xc7, 0x33, 0x99, 0x24, 0xbb, 0xa9, 0x35, 0x51, 0x1a, 0x95, 0x21, 0x78, 0x08, 0x7d, 0x1a, 0x10, 0xdd, 0x6c, 0x36, 0x69, 0x77, 0xca, 0x2e, 0xc8, 0x2a, 0xc8, 0x8a, 0x38, 0xac, 0x7c, 0x0a,
0x11, 0x3b, 0xee, 0x7a, 0x11, 0xbd, 0x2a, 0x78, 0x58, 0x2f, 0xed, 0x13, 0x74, 0x7a, 0x8a, 0xc9, 0x42, 0x78, 0xa1, 0x5c, 0x10, 0x5c, 0x41, 0xe2, 0x50, 0x2e, 0xe6, 0x0b, 0xdc, 0x64, 0x94, 0x06,
0xe8, 0x76, 0x3a, 0x76, 0xd7, 0x2c, 0xe4, 0x26, 0xf8, 0x3a, 0x3e, 0xa4, 0xf4, 0x47, 0x5c, 0x07, 0x9a, 0x38, 0xd8, 0x93, 0x4a, 0x7b, 0xe3, 0x57, 0xb8, 0xf3, 0x91, 0x28, 0xb6, 0x97, 0x36, 0x02,
0x84, 0xdc, 0xea, 0xf7, 0xef, 0x7f, 0xd7, 0x07, 0x55, 0x70, 0xdd, 0x76, 0xb4, 0xeb, 0xb7, 0x42, 0xa9, 0xb7, 0x79, 0x6f, 0x9e, 0x9e, 0x67, 0xc6, 0x0f, 0x64, 0xd7, 0x56, 0xd6, 0xec, 0x1b, 0xf3,
0x5b, 0xb3, 0x31, 0x9d, 0x76, 0x76, 0xd3, 0xda, 0xd7, 0x29, 0x68, 0x70, 0xdb, 0xb7, 0x9b, 0x83, 0x2a, 0x14, 0x35, 0x5e, 0x8d, 0xcd, 0xde, 0xa1, 0xbd, 0x6d, 0x2b, 0xdc, 0x0f, 0xd6, 0x50, 0xe4,
0xb3, 0x94, 0x63, 0x11, 0x63, 0xfe, 0x12, 0x16, 0x9f, 0x51, 0xdd, 0xd1, 0x4e, 0xe2, 0x8f, 0x1e, 0xa4, 0xaf, 0xc5, 0x0b, 0xd8, 0x7c, 0x46, 0x7d, 0x43, 0xd7, 0x0a, 0x7f, 0x8c, 0xe8, 0x88, 0x71,
0x3d, 0xb1, 0x0a, 0x2e, 0x3c, 0xba, 0xfb, 0x4e, 0x63, 0x55, 0xac, 0x8b, 0x7a, 0x2e, 0x4f, 0xc8, 0x38, 0x89, 0x6a, 0x9e, 0xec, 0x92, 0x72, 0xad, 0x8e, 0x50, 0x94, 0xb0, 0x3d, 0x4a, 0xdd, 0x60,
0x6b, 0x58, 0x9e, 0xac, 0xfe, 0x60, 0xf7, 0x1e, 0xd9, 0x73, 0x98, 0x79, 0x52, 0xd4, 0xfb, 0x6c, 0x7a, 0x87, 0xec, 0x19, 0xe4, 0x8e, 0x34, 0x8d, 0x2e, 0x4a, 0x23, 0x12, 0x25, 0x3c, 0xfa, 0x4a,
0xcd, 0xc4, 0x6b, 0x78, 0xf4, 0x95, 0x14, 0xf9, 0xf3, 0x39, 0x7f, 0x15, 0xb0, 0xc8, 0xd6, 0x9c, 0x9a, 0xdc, 0xc3, 0x9e, 0xbf, 0x12, 0xd8, 0x44, 0x69, 0xf4, 0x7c, 0x0e, 0x6b, 0x6a, 0x3b, 0x74,
0x33, 0x78, 0x49, 0x39, 0xc2, 0x26, 0x7a, 0x27, 0xf2, 0x84, 0xa1, 0x5a, 0x7f, 0xa0, 0xce, 0x60, 0xa4, 0xbb, 0xc1, 0xab, 0x57, 0xea, 0x8e, 0xf0, 0x4e, 0xa4, 0x2d, 0x61, 0xcd, 0x97, 0xbe, 0x77,
0x35, 0x8e, 0x0f, 0x99, 0x82, 0x6e, 0xd0, 0x58, 0x77, 0xac, 0xca, 0xa4, 0x27, 0x0a, 0x99, 0x68, 0x84, 0xd3, 0x2c, 0xe3, 0x30, 0x09, 0x79, 0xea, 0x1b, 0x11, 0x4d, 0x7c, 0x87, 0x9d, 0xb1, 0x07,
0xe7, 0x50, 0x35, 0xbe, 0x9a, 0xa4, 0x4c, 0x19, 0xd9, 0x12, 0xc6, 0xad, 0xae, 0xa6, 0x51, 0x1c, 0xbe, 0x0a, 0x7c, 0x40, 0x93, 0x13, 0x5d, 0x5b, 0xd4, 0xb5, 0xe3, 0x59, 0x70, 0x8a, 0x90, 0x6d,
0xb7, 0x9a, 0x7f, 0x03, 0xb8, 0xb5, 0xed, 0xd9, 0x6e, 0xd3, 0xbc, 0x0e, 0x95, 0x89, 0x1d, 0x5c, 0x61, 0xd9, 0x54, 0x3c, 0xf7, 0xe4, 0xb2, 0xa9, 0xc4, 0x37, 0x80, 0x4b, 0xd3, 0x3c, 0xb8, 0x4b,
0xca, 0x4c, 0xec, 0x29, 0x4c, 0xb5, 0xed, 0xf7, 0x14, 0x1b, 0x28, 0x65, 0x82, 0xa0, 0xfa, 0x6e, 0xb8, 0x86, 0x45, 0xdd, 0xf9, 0xd1, 0x4e, 0x55, 0x44, 0xec, 0x1c, 0xb2, 0xca, 0x8c, 0x3d, 0xf9,
0xaf, 0x31, 0x56, 0x2f, 0x65, 0x02, 0xfe, 0xbb, 0x80, 0x99, 0x44, 0x6d, 0x5d, 0xc3, 0x5e, 0xc0, 0xc1, 0x52, 0x15, 0xc0, 0xc4, 0xba, 0xb6, 0xaf, 0xd0, 0x8f, 0x95, 0xaa, 0x00, 0xc4, 0xef, 0x04,
0x3c, 0x0c, 0xe0, 0x49, 0x99, 0x43, 0x2c, 0x55, 0xca, 0x07, 0x21, 0x7c, 0xbf, 0x57, 0x77, 0x7d, 0x72, 0x85, 0x95, 0xb1, 0xf5, 0xbf, 0x87, 0x48, 0xef, 0x1f, 0xe2, 0x1c, 0xb2, 0x5b, 0x7d, 0x33,
0x9a, 0x76, 0x2e, 0x13, 0xb0, 0x6b, 0xb8, 0x34, 0x48, 0xaa, 0x51, 0xa4, 0xaa, 0x72, 0x5d, 0xd6, 0xa2, 0x7f, 0x6b, 0xad, 0x02, 0x60, 0x6f, 0xe0, 0xb4, 0x43, 0xd2, 0xb5, 0x26, 0xcd, 0xd3, 0x5d,
0x57, 0x37, 0xcf, 0x44, 0x4a, 0x27, 0xbe, 0x64, 0xfd, 0xd3, 0x9e, 0xdc, 0x51, 0xfe, 0xb5, 0xad, 0x5a, 0x9e, 0x5d, 0x3c, 0x95, 0xc1, 0x4e, 0x7e, 0x89, 0xfc, 0xa7, 0x9e, 0xec, 0x41, 0xfd, 0x95,
0x3e, 0xc0, 0x62, 0xf0, 0xc4, 0x9e, 0x40, 0xf9, 0x1d, 0x8f, 0x79, 0xb8, 0x10, 0xfe, 0xbf, 0xd6, 0x15, 0x1f, 0x60, 0x33, 0x6b, 0xb1, 0x27, 0x90, 0x7e, 0xc7, 0x43, 0x5c, 0x6e, 0x2a, 0xff, 0xff,
0xfb, 0xf1, 0xbb, 0xe2, 0xe6, 0x67, 0x01, 0xd3, 0x8f, 0xe1, 0x5e, 0xd8, 0x2b, 0x98, 0xa5, 0xf5, 0xd6, 0xfb, 0xe5, 0xbb, 0xe4, 0xe2, 0x67, 0x02, 0xd9, 0xc7, 0x29, 0x4d, 0xec, 0x25, 0xe4, 0x21,
0xb3, 0xa5, 0x18, 0x9c, 0xcc, 0xea, 0xb1, 0x18, 0xde, 0x05, 0x1f, 0xb1, 0x1a, 0xa6, 0x71, 0xad, 0x1c, 0x6c, 0x2b, 0x67, 0x81, 0x2a, 0x1e, 0xcb, 0x79, 0x6a, 0xc4, 0x82, 0x95, 0x90, 0xf9, 0x4f,
0x6c, 0x21, 0xfe, 0xbd, 0x84, 0xd5, 0x52, 0x0c, 0xb6, 0xcd, 0x47, 0x6c, 0x0d, 0x93, 0x5b, 0xdb, 0x67, 0x1b, 0x79, 0x3f, 0x27, 0xc5, 0x56, 0xce, 0xb2, 0x20, 0x16, 0x6c, 0x07, 0xab, 0x4b, 0xd3,
0x7a, 0x76, 0x25, 0x1e, 0x56, 0xb0, 0xba, 0xc8, 0x33, 0xf1, 0xd1, 0x9b, 0x62, 0x3b, 0x8b, 0x97, 0x38, 0x76, 0x26, 0xef, 0xbe, 0xa0, 0x38, 0x89, 0x3b, 0x89, 0xc5, 0xeb, 0xe4, 0x2a, 0xf7, 0x39,
0xfa, 0xf6, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x35, 0x1e, 0x9c, 0xa7, 0xde, 0x02, 0x00, 0x00, 0x7e, 0xfb, 0x27, 0x00, 0x00, 0xff, 0xff, 0x7e, 0xac, 0xb1, 0x40, 0xf9, 0x02, 0x00, 0x00,
} }

View File

@ -1,5 +1,5 @@
// Code generated by protoc-gen-micro. DO NOT EDIT. // Code generated by protoc-gen-micro. DO NOT EDIT.
// source: github.com/micro/go-micro/debug/proto/debug.proto // source: micro/go-micro/debug/service/proto/debug.proto
package debug package debug

View File

@ -22,16 +22,18 @@ message StatsRequest {
} }
message StatsResponse { message StatsResponse {
// timestamp of recording
uint64 timestamp = 1;
// unix timestamp // unix timestamp
uint64 started = 1; uint64 started = 2;
// in seconds // in seconds
uint64 uptime = 2; uint64 uptime = 3;
// in bytes // in bytes
uint64 memory = 3; uint64 memory = 4;
// num threads // num threads
uint64 threads = 4; uint64 threads = 5;
// total gc in nanoseconds // total gc in nanoseconds
uint64 gc = 5; uint64 gc = 6;
} }
// LogRequest requests service logs // LogRequest requests service logs

View File

@ -3,17 +3,19 @@ package stats
// Stats provides stats interface // Stats provides stats interface
type Stats interface { type Stats interface {
// Read a stat snapshot // Read stat snapshot
Read() (*Stat, error) Read() ([]*Stat, error)
// Write a stat snapshot // Write a stat snapshot
Write(*Stat) error Write(*Stat) error
} }
// A runtime stat // A runtime stat
type Stat struct { type Stat struct {
// Timestamp of recording
Timestamp int64
// Start time as unix timestamp // Start time as unix timestamp
Started int64 Started int64
// Uptime in nanoseconds // Uptime in seconds
Uptime int64 Uptime int64
// Memory usage in bytes // Memory usage in bytes
Memory uint64 Memory uint64