mirror of https://github.com/milvus-io/milvus.git
Expose metrics of root coordinator (#7228)
Signed-off-by: dragondriver <jiquan.long@zilliz.com>pull/7380/head
parent
8f660ae4e6
commit
f0dbdd7f13
|
@ -326,3 +326,10 @@ func (c *GrpcClient) SegmentFlushCompleted(ctx context.Context, in *datapb.Segme
|
|||
})
|
||||
return ret.(*commonpb.Status), err
|
||||
}
|
||||
|
||||
func (c *GrpcClient) GetMetrics(ctx context.Context, in *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error) {
|
||||
ret, err := c.recall(func() (interface{}, error) {
|
||||
return c.grpcClient.GetMetrics(ctx, in)
|
||||
})
|
||||
return ret.(*milvuspb.GetMetricsResponse), err
|
||||
}
|
||||
|
|
|
@ -352,3 +352,7 @@ func (s *Server) ReleaseDQLMessageStream(ctx context.Context, in *proxypb.Releas
|
|||
func (s *Server) SegmentFlushCompleted(ctx context.Context, in *datapb.SegmentFlushCompletedMsg) (*commonpb.Status, error) {
|
||||
return s.rootCoord.SegmentFlushCompleted(ctx, in)
|
||||
}
|
||||
|
||||
func (s *Server) GetMetrics(ctx context.Context, in *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error) {
|
||||
return s.rootCoord.GetMetrics(ctx, in)
|
||||
}
|
||||
|
|
|
@ -98,6 +98,9 @@ service RootCoord {
|
|||
rpc UpdateChannelTimeTick(internal.ChannelTimeTickMsg) returns (common.Status) {}
|
||||
rpc ReleaseDQLMessageStream(proxy.ReleaseDQLMessageStreamRequest) returns (common.Status) {}
|
||||
rpc SegmentFlushCompleted(data.SegmentFlushCompletedMsg) returns (common.Status) {}
|
||||
|
||||
// https://wiki.lfaidata.foundation/display/MIL/MEP+8+--+Add+metrics+for+proxy
|
||||
rpc GetMetrics(milvus.GetMetricsRequest) returns (milvus.GetMetricsResponse) {}
|
||||
}
|
||||
|
||||
message AllocTimestampRequest {
|
||||
|
|
|
@ -243,55 +243,57 @@ func init() {
|
|||
func init() { proto.RegisterFile("root_coord.proto", fileDescriptor_4513485a144f6b06) }
|
||||
|
||||
var fileDescriptor_4513485a144f6b06 = []byte{
|
||||
// 765 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x5b, 0x4f, 0xdb, 0x30,
|
||||
0x14, 0xc7, 0x69, 0x61, 0x4c, 0x1c, 0xda, 0xc2, 0x2c, 0x60, 0xa8, 0xe3, 0x81, 0x75, 0x1a, 0xb4,
|
||||
0x5c, 0x52, 0x04, 0xd2, 0xb4, 0xd7, 0xd1, 0x6a, 0x50, 0x69, 0x48, 0x23, 0x05, 0x69, 0x37, 0x54,
|
||||
0xb9, 0xe9, 0x51, 0x1b, 0x91, 0xc4, 0x21, 0x76, 0x07, 0x7b, 0xdc, 0x27, 0xdd, 0x57, 0x99, 0x72,
|
||||
0x73, 0x93, 0x34, 0x29, 0x41, 0xdb, 0x5b, 0x1d, 0xff, 0xfc, 0xff, 0xfb, 0x5c, 0x2a, 0x1f, 0x58,
|
||||
0x75, 0x18, 0x13, 0x3d, 0x8d, 0x31, 0x67, 0xa0, 0xd8, 0x0e, 0x13, 0x8c, 0x6c, 0x98, 0xba, 0xf1,
|
||||
0x73, 0xcc, 0xfd, 0x95, 0xe2, 0x6e, 0x7b, 0xbb, 0xd5, 0x92, 0xc6, 0x4c, 0x93, 0x59, 0xfe, 0xf7,
|
||||
0x6a, 0x29, 0x4a, 0x55, 0x2b, 0xba, 0x25, 0xd0, 0xb1, 0xa8, 0x11, 0xac, 0x97, 0x6d, 0x87, 0x3d,
|
||||
0xfc, 0x0a, 0x16, 0xab, 0x03, 0x2a, 0x68, 0xd4, 0xa2, 0xd6, 0x83, 0xf5, 0x0f, 0x86, 0xc1, 0xb4,
|
||||
0x2b, 0xdd, 0x44, 0x2e, 0xa8, 0x69, 0xab, 0x78, 0x37, 0x46, 0x2e, 0xc8, 0x11, 0x2c, 0xf4, 0x29,
|
||||
0xc7, 0xcd, 0xc2, 0x76, 0xa1, 0xbe, 0x7c, 0xbc, 0xa5, 0xc4, 0xae, 0x12, 0xf8, 0x5f, 0xf0, 0xe1,
|
||||
0x29, 0xe5, 0xa8, 0x7a, 0x24, 0x59, 0x83, 0x67, 0x1a, 0x1b, 0x5b, 0x62, 0x73, 0x7e, 0xbb, 0x50,
|
||||
0x2f, 0xab, 0xfe, 0xa2, 0xf6, 0xbb, 0x00, 0x1b, 0x49, 0x07, 0x6e, 0x33, 0x8b, 0x23, 0x39, 0x81,
|
||||
0x45, 0x2e, 0xa8, 0x18, 0xf3, 0xc0, 0xe4, 0x55, 0xaa, 0x49, 0xd7, 0x43, 0xd4, 0x00, 0x25, 0x5b,
|
||||
0xb0, 0x24, 0x42, 0xa5, 0xcd, 0xe2, 0x76, 0xa1, 0xbe, 0xa0, 0x4e, 0x3e, 0x64, 0xdc, 0xe1, 0x0b,
|
||||
0x54, 0xbc, 0x2b, 0x74, 0xda, 0xff, 0x21, 0xba, 0x62, 0x54, 0xd9, 0x80, 0x15, 0xa9, 0xfc, 0x2f,
|
||||
0x51, 0x55, 0xa0, 0xd8, 0x69, 0x7b, 0xd2, 0xf3, 0x6a, 0xb1, 0xd3, 0x4e, 0x8f, 0xe3, 0xf8, 0xcf,
|
||||
0x0b, 0x58, 0x52, 0x19, 0x13, 0x2d, 0xb7, 0x80, 0xc4, 0x06, 0x72, 0x86, 0xa2, 0xc5, 0x4c, 0x9b,
|
||||
0x59, 0x68, 0x09, 0x57, 0x11, 0x39, 0x39, 0x8a, 0xdb, 0xc9, 0x6e, 0x98, 0x46, 0x83, 0x5c, 0x54,
|
||||
0x77, 0x32, 0x4e, 0x24, 0xf0, 0xda, 0x1c, 0x31, 0x3d, 0x47, 0xb7, 0x90, 0x57, 0xba, 0x76, 0xdb,
|
||||
0x1a, 0x51, 0xcb, 0x42, 0x63, 0x96, 0x63, 0x02, 0x0d, 0x1d, 0xdf, 0xc4, 0x4f, 0x04, 0x8b, 0xae,
|
||||
0x70, 0x74, 0x6b, 0x18, 0xe6, 0xb1, 0x36, 0x47, 0xee, 0x60, 0xed, 0x0c, 0x3d, 0x77, 0x9d, 0x0b,
|
||||
0x5d, 0xe3, 0xa1, 0xe1, 0x71, 0xb6, 0xe1, 0x14, 0xfc, 0x44, 0xcb, 0x1e, 0xac, 0xb6, 0x1c, 0xa4,
|
||||
0x02, 0x5b, 0xcc, 0x30, 0x50, 0x13, 0x3a, 0xb3, 0xc8, 0x41, 0xea, 0xd1, 0x24, 0x16, 0x1a, 0xcd,
|
||||
0x2a, 0x77, 0x6d, 0x8e, 0x7c, 0x87, 0x4a, 0xdb, 0x61, 0x76, 0x44, 0x7e, 0x2f, 0x55, 0x3e, 0x0e,
|
||||
0xe5, 0x14, 0xef, 0x41, 0xf9, 0x9c, 0xf2, 0x88, 0x76, 0x23, 0x55, 0x3b, 0xc6, 0x84, 0xd2, 0xaf,
|
||||
0x53, 0xd1, 0x53, 0xc6, 0x8c, 0x48, 0x7a, 0xee, 0x81, 0xb4, 0x91, 0x6b, 0x8e, 0xde, 0x8f, 0x26,
|
||||
0x48, 0x49, 0x8f, 0x60, 0x0a, 0x0c, 0xad, 0x9a, 0xb9, 0x79, 0x69, 0x6c, 0xc1, 0x4a, 0x77, 0xc4,
|
||||
0xee, 0x27, 0x7b, 0x9c, 0xec, 0xa7, 0x57, 0x34, 0x4e, 0x85, 0x96, 0x07, 0xf9, 0x60, 0xe9, 0x77,
|
||||
0x03, 0x2b, 0x7e, 0x81, 0x3f, 0x53, 0x47, 0xe8, 0x5e, 0x94, 0xfb, 0x33, 0xda, 0x40, 0x52, 0x39,
|
||||
0x0b, 0xf5, 0x15, 0xca, 0x6e, 0x81, 0x27, 0xe2, 0x8d, 0xcc, 0x26, 0x78, 0xaa, 0xf4, 0x0d, 0x94,
|
||||
0xce, 0x29, 0x9f, 0x28, 0xd7, 0xb3, 0x5a, 0x60, 0x4a, 0x38, 0x57, 0x07, 0xdc, 0x42, 0xc5, 0xcd,
|
||||
0x9a, 0x3c, 0xcc, 0x33, 0xfa, 0x37, 0x0e, 0x85, 0x16, 0xfb, 0xb9, 0xd8, 0x68, 0xd5, 0xc3, 0xae,
|
||||
0xe8, 0xe2, 0xd0, 0x44, 0x4b, 0x64, 0x54, 0x21, 0x41, 0xcd, 0xae, 0xfa, 0x14, 0x2c, 0xfd, 0x10,
|
||||
0x4a, 0xee, 0x5d, 0x82, 0x0d, 0x9e, 0x91, 0xbb, 0x28, 0x12, 0x3a, 0x35, 0x72, 0x90, 0xd2, 0xe6,
|
||||
0x1a, 0x96, 0xfd, 0xb6, 0xe9, 0x58, 0x03, 0x7c, 0x20, 0xbb, 0x33, 0x1a, 0xcb, 0x23, 0x72, 0x56,
|
||||
0x7e, 0x04, 0xe5, 0x30, 0x34, 0x5f, 0xb8, 0x31, 0x33, 0xfc, 0x98, 0xf4, 0x5e, 0x1e, 0x54, 0x06,
|
||||
0x70, 0x09, 0x4b, 0x6e, 0x6b, 0xfa, 0x2e, 0x6f, 0x33, 0x5b, 0xf7, 0x29, 0x97, 0xbf, 0x0b, 0x9e,
|
||||
0x68, 0x39, 0x25, 0x90, 0x43, 0x25, 0x7d, 0xfa, 0x51, 0x52, 0xe7, 0x95, 0xaa, 0x92, 0x17, 0x97,
|
||||
0x51, 0xfc, 0x80, 0xe7, 0xc1, 0xdb, 0x4d, 0x76, 0x66, 0x1e, 0x96, 0x63, 0x43, 0x75, 0xf7, 0x51,
|
||||
0x4e, 0xaa, 0x53, 0x58, 0xbf, 0xb6, 0x07, 0xee, 0x13, 0xe1, 0x3f, 0x44, 0xe1, 0x53, 0x98, 0xac,
|
||||
0xca, 0xe4, 0xb9, 0x8d, 0x73, 0x17, 0x7c, 0xf8, 0x58, 0xce, 0x0c, 0x78, 0xa9, 0xa2, 0x81, 0x94,
|
||||
0x63, 0xfb, 0xf2, 0xd3, 0x05, 0x72, 0x4e, 0x87, 0xd8, 0x15, 0x0e, 0x52, 0x33, 0xf9, 0x44, 0xfa,
|
||||
0x33, 0x60, 0x06, 0x9c, 0xb3, 0x42, 0x1a, 0xac, 0x07, 0xbd, 0xfc, 0xd1, 0x18, 0xf3, 0x91, 0x3b,
|
||||
0x1d, 0x18, 0x28, 0x70, 0x90, 0xfc, 0x4b, 0xba, 0x23, 0xa6, 0x92, 0x4a, 0x3e, 0x1e, 0xd2, 0xe9,
|
||||
0xfb, 0x6f, 0xef, 0x86, 0xba, 0x18, 0x8d, 0xfb, 0xee, 0x4e, 0xd3, 0x47, 0x0f, 0x75, 0x16, 0xfc,
|
||||
0x6a, 0x86, 0xc9, 0x6a, 0x7a, 0xa7, 0x9b, 0x32, 0xff, 0x76, 0xbf, 0xbf, 0xe8, 0x7d, 0x3a, 0xf9,
|
||||
0x1b, 0x00, 0x00, 0xff, 0xff, 0x39, 0x40, 0xa4, 0x9c, 0x46, 0x0b, 0x00, 0x00,
|
||||
// 787 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x5d, 0x4f, 0xdb, 0x3e,
|
||||
0x14, 0xc6, 0x69, 0xe1, 0xcf, 0x5f, 0x1c, 0xda, 0x82, 0x2c, 0x60, 0xa8, 0xe3, 0x82, 0x75, 0x1a,
|
||||
0xb4, 0xbc, 0xa4, 0x08, 0xa4, 0x69, 0xb7, 0xa3, 0xd5, 0xa0, 0xd2, 0x2a, 0x8d, 0x14, 0xa4, 0xbd,
|
||||
0xa1, 0xca, 0x4d, 0x8f, 0xda, 0x88, 0x24, 0x0e, 0xb1, 0x3b, 0xd8, 0xe5, 0xbe, 0xd9, 0x3e, 0xda,
|
||||
0x94, 0x17, 0xa7, 0x49, 0x9a, 0x94, 0xa0, 0xed, 0xae, 0x8e, 0x7f, 0x7e, 0x1e, 0x1f, 0x3f, 0xa7,
|
||||
0xb2, 0x61, 0xdd, 0x61, 0x4c, 0xf4, 0x35, 0xc6, 0x9c, 0xa1, 0x62, 0x3b, 0x4c, 0x30, 0xb2, 0x65,
|
||||
0xea, 0xc6, 0x8f, 0x09, 0xf7, 0x47, 0x8a, 0x3b, 0xed, 0xcd, 0x56, 0x4b, 0x1a, 0x33, 0x4d, 0x66,
|
||||
0xf9, 0xdf, 0xab, 0xa5, 0x28, 0x55, 0xad, 0xe8, 0x96, 0x40, 0xc7, 0xa2, 0x46, 0x30, 0x5e, 0xb5,
|
||||
0x1d, 0xf6, 0xf8, 0x33, 0x18, 0xac, 0x0f, 0xa9, 0xa0, 0x51, 0x8b, 0x5a, 0x1f, 0x36, 0xdf, 0x1b,
|
||||
0x06, 0xd3, 0xae, 0x75, 0x13, 0xb9, 0xa0, 0xa6, 0xad, 0xe2, 0xfd, 0x04, 0xb9, 0x20, 0x27, 0xb0,
|
||||
0x34, 0xa0, 0x1c, 0xb7, 0x0b, 0xbb, 0x85, 0xfa, 0xea, 0xe9, 0x8e, 0x12, 0xdb, 0x4a, 0xe0, 0xdf,
|
||||
0xe5, 0xa3, 0x73, 0xca, 0x51, 0xf5, 0x48, 0xb2, 0x01, 0xff, 0x69, 0x6c, 0x62, 0x89, 0xed, 0xc5,
|
||||
0xdd, 0x42, 0xbd, 0xac, 0xfa, 0x83, 0xda, 0xaf, 0x02, 0x6c, 0x25, 0x1d, 0xb8, 0xcd, 0x2c, 0x8e,
|
||||
0xe4, 0x0c, 0x96, 0xb9, 0xa0, 0x62, 0xc2, 0x03, 0x93, 0x97, 0xa9, 0x26, 0x3d, 0x0f, 0x51, 0x03,
|
||||
0x94, 0xec, 0xc0, 0x8a, 0x90, 0x4a, 0xdb, 0xc5, 0xdd, 0x42, 0x7d, 0x49, 0x9d, 0x7e, 0xc8, 0xd8,
|
||||
0xc3, 0x67, 0xa8, 0x78, 0x5b, 0xe8, 0xb4, 0xff, 0x41, 0x75, 0xc5, 0xa8, 0xb2, 0x01, 0x6b, 0xa1,
|
||||
0xf2, 0xdf, 0x54, 0x55, 0x81, 0x62, 0xa7, 0xed, 0x49, 0x2f, 0xaa, 0xc5, 0x4e, 0x3b, 0xbd, 0x8e,
|
||||
0xd3, 0xdf, 0x04, 0x56, 0x54, 0xc6, 0x44, 0xcb, 0x0d, 0x90, 0xd8, 0x40, 0x2e, 0x50, 0xb4, 0x98,
|
||||
0x69, 0x33, 0x0b, 0x2d, 0xe1, 0x2a, 0x22, 0x27, 0x27, 0x71, 0xbb, 0xb0, 0x1b, 0x66, 0xd1, 0xe0,
|
||||
0x2c, 0xaa, 0x7b, 0x19, 0x2b, 0x12, 0x78, 0x6d, 0x81, 0x98, 0x9e, 0xa3, 0x1b, 0xe4, 0xb5, 0xae,
|
||||
0xdd, 0xb5, 0xc6, 0xd4, 0xb2, 0xd0, 0x98, 0xe7, 0x98, 0x40, 0xa5, 0xe3, 0xeb, 0xf8, 0x8a, 0x60,
|
||||
0xd0, 0x13, 0x8e, 0x6e, 0x8d, 0xe4, 0x39, 0xd6, 0x16, 0xc8, 0x3d, 0x6c, 0x5c, 0xa0, 0xe7, 0xae,
|
||||
0x73, 0xa1, 0x6b, 0x5c, 0x1a, 0x9e, 0x66, 0x1b, 0xce, 0xc0, 0xcf, 0xb4, 0xec, 0xc3, 0x7a, 0xcb,
|
||||
0x41, 0x2a, 0xb0, 0xc5, 0x0c, 0x03, 0x35, 0xa1, 0x33, 0x8b, 0x1c, 0xa5, 0x2e, 0x4d, 0x62, 0xd2,
|
||||
0x68, 0x5e, 0xdc, 0xb5, 0x05, 0xf2, 0x0d, 0x2a, 0x6d, 0x87, 0xd9, 0x11, 0xf9, 0x83, 0x54, 0xf9,
|
||||
0x38, 0x94, 0x53, 0xbc, 0x0f, 0xe5, 0x4b, 0xca, 0x23, 0xda, 0x8d, 0x54, 0xed, 0x18, 0x23, 0xa5,
|
||||
0x5f, 0xa5, 0xa2, 0xe7, 0x8c, 0x19, 0x91, 0xe3, 0x79, 0x00, 0xd2, 0x46, 0xae, 0x39, 0xfa, 0x20,
|
||||
0x7a, 0x40, 0x4a, 0x7a, 0x05, 0x33, 0xa0, 0xb4, 0x6a, 0xe6, 0xe6, 0x43, 0x63, 0x0b, 0xd6, 0x7a,
|
||||
0x63, 0xf6, 0x30, 0x9d, 0xe3, 0xe4, 0x30, 0x3d, 0xd1, 0x38, 0x25, 0x2d, 0x8f, 0xf2, 0xc1, 0xa1,
|
||||
0xdf, 0x2d, 0xac, 0xf9, 0x01, 0x7f, 0xa2, 0x8e, 0xd0, 0xbd, 0x2a, 0x0f, 0xe7, 0xb4, 0x41, 0x48,
|
||||
0xe5, 0x0c, 0xea, 0x0b, 0x94, 0xdd, 0x80, 0xa7, 0xe2, 0x8d, 0xcc, 0x26, 0x78, 0xae, 0xf4, 0x2d,
|
||||
0x94, 0x2e, 0x29, 0x9f, 0x2a, 0xd7, 0xb3, 0x5a, 0x60, 0x46, 0x38, 0x57, 0x07, 0xdc, 0x41, 0xc5,
|
||||
0x3d, 0xb5, 0x70, 0x31, 0xcf, 0xe8, 0xdf, 0x38, 0x24, 0x2d, 0x0e, 0x73, 0xb1, 0xd1, 0xd4, 0x65,
|
||||
0x57, 0xf4, 0x70, 0x64, 0xa2, 0x25, 0x32, 0x52, 0x48, 0x50, 0xf3, 0x53, 0x9f, 0x81, 0x43, 0x3f,
|
||||
0x84, 0x92, 0xbb, 0x97, 0x60, 0x82, 0x67, 0x9c, 0x5d, 0x14, 0x91, 0x4e, 0x8d, 0x1c, 0x64, 0x68,
|
||||
0x73, 0x03, 0xab, 0x7e, 0xdb, 0x74, 0xac, 0x21, 0x3e, 0x92, 0xfd, 0x39, 0x8d, 0xe5, 0x11, 0x39,
|
||||
0x93, 0x1f, 0x43, 0x59, 0x96, 0xe6, 0x0b, 0x37, 0xe6, 0x96, 0x1f, 0x93, 0x3e, 0xc8, 0x83, 0x86,
|
||||
0x05, 0x5c, 0xc1, 0x8a, 0xdb, 0x9a, 0xbe, 0xcb, 0x9b, 0xcc, 0xd6, 0x7d, 0xce, 0xe6, 0xef, 0x83,
|
||||
0x2b, 0x3a, 0x7c, 0x25, 0x90, 0x63, 0x25, 0xfd, 0xf5, 0xa3, 0xa4, 0xbe, 0x57, 0xaa, 0x4a, 0x5e,
|
||||
0x3c, 0xac, 0xe2, 0x3b, 0xfc, 0x1f, 0xdc, 0xdd, 0x64, 0x6f, 0xee, 0xe2, 0xf0, 0xd9, 0x50, 0xdd,
|
||||
0x7f, 0x92, 0x0b, 0xd5, 0x29, 0x6c, 0xde, 0xd8, 0x43, 0xf7, 0x8a, 0xf0, 0x2f, 0x22, 0x79, 0x15,
|
||||
0x26, 0x53, 0x99, 0x5e, 0xb7, 0x71, 0xae, 0xcb, 0x47, 0x4f, 0x9d, 0x99, 0x01, 0x2f, 0x54, 0x34,
|
||||
0x90, 0x72, 0x6c, 0x5f, 0x7d, 0xec, 0x22, 0xe7, 0x74, 0x84, 0x3d, 0xe1, 0x20, 0x35, 0x93, 0x57,
|
||||
0xa4, 0xff, 0x06, 0xcc, 0x80, 0x73, 0x26, 0xa4, 0xc1, 0x66, 0xd0, 0xcb, 0x1f, 0x8c, 0x09, 0x1f,
|
||||
0xbb, 0xaf, 0x03, 0x03, 0x05, 0x0e, 0x93, 0x7f, 0x49, 0xf7, 0x89, 0xa9, 0xa4, 0x92, 0x39, 0x4a,
|
||||
0xea, 0x03, 0x5c, 0xa0, 0xe8, 0xa2, 0x70, 0x74, 0x8d, 0x27, 0x63, 0x09, 0x06, 0x53, 0x20, 0x23,
|
||||
0x96, 0x14, 0x4e, 0xc6, 0x72, 0xfe, 0xee, 0xeb, 0xdb, 0x91, 0x2e, 0xc6, 0x93, 0x81, 0x6b, 0xdd,
|
||||
0xf4, 0xc9, 0x63, 0x9d, 0x05, 0xbf, 0x9a, 0x32, 0x8d, 0xa6, 0xa7, 0xd4, 0x0c, 0x03, 0xb6, 0x07,
|
||||
0x83, 0x65, 0xef, 0xd3, 0xd9, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa8, 0x2e, 0x6c, 0xa3, 0xa7,
|
||||
0x0b, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
|
@ -374,6 +376,8 @@ type RootCoordClient interface {
|
|||
UpdateChannelTimeTick(ctx context.Context, in *internalpb.ChannelTimeTickMsg, opts ...grpc.CallOption) (*commonpb.Status, error)
|
||||
ReleaseDQLMessageStream(ctx context.Context, in *proxypb.ReleaseDQLMessageStreamRequest, opts ...grpc.CallOption) (*commonpb.Status, error)
|
||||
SegmentFlushCompleted(ctx context.Context, in *datapb.SegmentFlushCompletedMsg, opts ...grpc.CallOption) (*commonpb.Status, error)
|
||||
// https://wiki.lfaidata.foundation/display/MIL/MEP+8+--+Add+metrics+for+proxy
|
||||
GetMetrics(ctx context.Context, in *milvuspb.GetMetricsRequest, opts ...grpc.CallOption) (*milvuspb.GetMetricsResponse, error)
|
||||
}
|
||||
|
||||
type rootCoordClient struct {
|
||||
|
@ -582,6 +586,15 @@ func (c *rootCoordClient) SegmentFlushCompleted(ctx context.Context, in *datapb.
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *rootCoordClient) GetMetrics(ctx context.Context, in *milvuspb.GetMetricsRequest, opts ...grpc.CallOption) (*milvuspb.GetMetricsResponse, error) {
|
||||
out := new(milvuspb.GetMetricsResponse)
|
||||
err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/GetMetrics", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// RootCoordServer is the server API for RootCoord service.
|
||||
type RootCoordServer interface {
|
||||
GetComponentStates(context.Context, *internalpb.GetComponentStatesRequest) (*internalpb.ComponentStates, error)
|
||||
|
@ -652,6 +665,8 @@ type RootCoordServer interface {
|
|||
UpdateChannelTimeTick(context.Context, *internalpb.ChannelTimeTickMsg) (*commonpb.Status, error)
|
||||
ReleaseDQLMessageStream(context.Context, *proxypb.ReleaseDQLMessageStreamRequest) (*commonpb.Status, error)
|
||||
SegmentFlushCompleted(context.Context, *datapb.SegmentFlushCompletedMsg) (*commonpb.Status, error)
|
||||
// https://wiki.lfaidata.foundation/display/MIL/MEP+8+--+Add+metrics+for+proxy
|
||||
GetMetrics(context.Context, *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error)
|
||||
}
|
||||
|
||||
// UnimplementedRootCoordServer can be embedded to have forward compatible implementations.
|
||||
|
@ -724,6 +739,9 @@ func (*UnimplementedRootCoordServer) ReleaseDQLMessageStream(ctx context.Context
|
|||
func (*UnimplementedRootCoordServer) SegmentFlushCompleted(ctx context.Context, req *datapb.SegmentFlushCompletedMsg) (*commonpb.Status, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SegmentFlushCompleted not implemented")
|
||||
}
|
||||
func (*UnimplementedRootCoordServer) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetMetrics not implemented")
|
||||
}
|
||||
|
||||
func RegisterRootCoordServer(s *grpc.Server, srv RootCoordServer) {
|
||||
s.RegisterService(&_RootCoord_serviceDesc, srv)
|
||||
|
@ -1125,6 +1143,24 @@ func _RootCoord_SegmentFlushCompleted_Handler(srv interface{}, ctx context.Conte
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _RootCoord_GetMetrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(milvuspb.GetMetricsRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(RootCoordServer).GetMetrics(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/milvus.proto.rootcoord.RootCoord/GetMetrics",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(RootCoordServer).GetMetrics(ctx, req.(*milvuspb.GetMetricsRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
var _RootCoord_serviceDesc = grpc.ServiceDesc{
|
||||
ServiceName: "milvus.proto.rootcoord.RootCoord",
|
||||
HandlerType: (*RootCoordServer)(nil),
|
||||
|
@ -1217,6 +1253,10 @@ var _RootCoord_serviceDesc = grpc.ServiceDesc{
|
|||
MethodName: "SegmentFlushCompleted",
|
||||
Handler: _RootCoord_SegmentFlushCompleted_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetMetrics",
|
||||
Handler: _RootCoord_GetMetrics_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "root_coord.proto",
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright (C) 2019-2020 Zilliz. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software distributed under the License
|
||||
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
||||
// or implied. See the License for the specific language governing permissions and limitations under the License.
|
||||
|
||||
package rootcoord
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/milvus-io/milvus/internal/util/typeutil"
|
||||
)
|
||||
|
||||
func msgRootCoordIsUnhealthy(coordID typeutil.UniqueID) string {
|
||||
return fmt.Sprintf("RootCoord %d is not ready", coordID)
|
||||
}
|
||||
|
||||
func errRootCoordIsUnhealthy(coordID typeutil.UniqueID) error {
|
||||
return errors.New(msgRootCoordIsUnhealthy(coordID))
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
// Copyright (C) 2019-2020 Zilliz. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software distributed under the License
|
||||
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
||||
// or implied. See the License for the specific language governing permissions and limitations under the License.
|
||||
|
||||
package rootcoord
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/milvus-io/milvus/internal/util/typeutil"
|
||||
|
||||
"github.com/milvus-io/milvus/internal/log"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func TestMsgRootCoordIsUnhealthy(t *testing.T) {
|
||||
nodeIDList := []typeutil.UniqueID{1, 2, 3}
|
||||
for _, nodeID := range nodeIDList {
|
||||
assert.NotEmpty(t, msgRootCoordIsUnhealthy(nodeID))
|
||||
log.Info("TestMsgRootCoordIsUnhealthy", zap.String("msg", msgRootCoordIsUnhealthy(nodeID)))
|
||||
}
|
||||
}
|
||||
|
||||
func TestErrRootCoordIsUnhealthy(t *testing.T) {
|
||||
nodeIDList := []typeutil.UniqueID{1, 2, 3}
|
||||
for _, nodeID := range nodeIDList {
|
||||
assert.NotNil(t, errRootCoordIsUnhealthy(nodeID))
|
||||
log.Info("TestErrRootCoordIsUnhealthy", zap.Error(errRootCoordIsUnhealthy(nodeID)))
|
||||
}
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
// Copyright (C) 2019-2020 Zilliz. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software distributed under the License
|
||||
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
||||
// or implied. See the License for the specific language governing permissions and limitations under the License.
|
||||
|
||||
package rootcoord
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/milvus-io/milvus/internal/log"
|
||||
|
||||
"github.com/milvus-io/milvus/internal/proto/commonpb"
|
||||
"github.com/milvus-io/milvus/internal/proto/milvuspb"
|
||||
"github.com/milvus-io/milvus/internal/util/metricsinfo"
|
||||
"github.com/milvus-io/milvus/internal/util/typeutil"
|
||||
)
|
||||
|
||||
func (c *Core) getSystemInfoMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error) {
|
||||
// TODO(dragondriver): add more metrics
|
||||
nodeInfos := metricsinfo.RootCoordInfos{
|
||||
BaseComponentInfos: metricsinfo.BaseComponentInfos{
|
||||
Name: metricsinfo.ConstructComponentName(typeutil.RootCoordRole, c.session.ServerID),
|
||||
},
|
||||
}
|
||||
resp, err := metricsinfo.MarshalComponentInfos(nodeInfos)
|
||||
if err != nil {
|
||||
log.Warn("Failed to marshal system info metrics of root coordinator",
|
||||
zap.Error(err))
|
||||
|
||||
return &milvuspb.GetMetricsResponse{
|
||||
Status: &commonpb.Status{
|
||||
ErrorCode: commonpb.ErrorCode_UnexpectedError,
|
||||
Reason: err.Error(),
|
||||
},
|
||||
Response: "",
|
||||
ComponentName: metricsinfo.ConstructComponentName(typeutil.RootCoordRole, c.session.ServerID),
|
||||
}, nil
|
||||
}
|
||||
|
||||
return &milvuspb.GetMetricsResponse{
|
||||
Status: &commonpb.Status{
|
||||
ErrorCode: commonpb.ErrorCode_Success,
|
||||
Reason: "",
|
||||
},
|
||||
Response: resp,
|
||||
ComponentName: metricsinfo.ConstructComponentName(typeutil.RootCoordRole, c.session.ServerID),
|
||||
}, nil
|
||||
}
|
|
@ -22,6 +22,8 @@ import (
|
|||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/milvus-io/milvus/internal/util/metricsinfo"
|
||||
|
||||
"github.com/golang/protobuf/proto"
|
||||
"github.com/milvus-io/milvus/internal/allocator"
|
||||
etcdkv "github.com/milvus-io/milvus/internal/kv/etcd"
|
||||
|
@ -167,6 +169,11 @@ func (c *Core) UpdateStateCode(code internalpb.StateCode) {
|
|||
c.stateCode.Store(code)
|
||||
}
|
||||
|
||||
func (c *Core) isHealthy() bool {
|
||||
code := c.stateCode.Load().(internalpb.StateCode)
|
||||
return code == internalpb.StateCode_Healthy
|
||||
}
|
||||
|
||||
func (c *Core) checkInit() error {
|
||||
if c.MetaTable == nil {
|
||||
return fmt.Errorf("MetaTable is nil")
|
||||
|
@ -1931,3 +1938,69 @@ func (c *Core) SegmentFlushCompleted(ctx context.Context, in *datapb.SegmentFlus
|
|||
Reason: "",
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Core) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error) {
|
||||
log.Debug("RootCoord.GetMetrics",
|
||||
zap.Int64("node_id", c.session.ServerID),
|
||||
zap.String("req", req.Request))
|
||||
|
||||
if !c.isHealthy() {
|
||||
log.Warn("RootCoord.GetMetrics failed",
|
||||
zap.Int64("node_id", c.session.ServerID),
|
||||
zap.String("req", req.Request),
|
||||
zap.Error(errRootCoordIsUnhealthy(c.session.ServerID)))
|
||||
|
||||
return &milvuspb.GetMetricsResponse{
|
||||
Status: &commonpb.Status{
|
||||
ErrorCode: commonpb.ErrorCode_UnexpectedError,
|
||||
Reason: msgRootCoordIsUnhealthy(c.session.ServerID),
|
||||
},
|
||||
Response: "",
|
||||
}, nil
|
||||
}
|
||||
|
||||
metricType, err := metricsinfo.ParseMetricType(req.Request)
|
||||
if err != nil {
|
||||
log.Warn("RootCoord.GetMetrics failed to parse metric type",
|
||||
zap.Int64("node_id", c.session.ServerID),
|
||||
zap.String("req", req.Request),
|
||||
zap.Error(err))
|
||||
|
||||
return &milvuspb.GetMetricsResponse{
|
||||
Status: &commonpb.Status{
|
||||
ErrorCode: commonpb.ErrorCode_UnexpectedError,
|
||||
Reason: err.Error(),
|
||||
},
|
||||
Response: "",
|
||||
}, nil
|
||||
}
|
||||
|
||||
log.Debug("RootCoord.GetMetrics",
|
||||
zap.String("metric_type", metricType))
|
||||
|
||||
if metricType == metricsinfo.SystemInfoMetrics {
|
||||
systemInfoMetrics, err := c.getSystemInfoMetrics(ctx, req)
|
||||
|
||||
log.Debug("RootCoord.GetMetrics",
|
||||
zap.Int64("node_id", c.session.ServerID),
|
||||
zap.String("req", req.Request),
|
||||
zap.String("metric_type", metricType),
|
||||
zap.Any("systemInfoMetrics", systemInfoMetrics), // TODO(dragondriver): necessary? may be very large
|
||||
zap.Error(err))
|
||||
|
||||
return systemInfoMetrics, err
|
||||
}
|
||||
|
||||
log.Debug("RootCoord.GetMetrics failed, request metric type is not implemented yet",
|
||||
zap.Int64("node_id", c.session.ServerID),
|
||||
zap.String("req", req.Request),
|
||||
zap.String("metric_type", metricType))
|
||||
|
||||
return &milvuspb.GetMetricsResponse{
|
||||
Status: &commonpb.Status{
|
||||
ErrorCode: commonpb.ErrorCode_UnexpectedError,
|
||||
Reason: metricsinfo.MsgUnimplementedMetric,
|
||||
},
|
||||
Response: "",
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/milvus-io/milvus/internal/util/metricsinfo"
|
||||
|
||||
"github.com/golang/protobuf/proto"
|
||||
etcdkv "github.com/milvus-io/milvus/internal/kv/etcd"
|
||||
"github.com/milvus-io/milvus/internal/msgstream"
|
||||
|
@ -1477,6 +1479,50 @@ func TestRootCoord(t *testing.T) {
|
|||
assert.Equal(t, 3, core.chanTimeTick.GetChanNum()-numChan)
|
||||
})
|
||||
|
||||
t.Run("get metrics", func(t *testing.T) {
|
||||
// not healthy
|
||||
stateSave := core.stateCode.Load().(internalpb.StateCode)
|
||||
core.UpdateStateCode(internalpb.StateCode_Abnormal)
|
||||
resp, err := core.GetMetrics(ctx, &milvuspb.GetMetricsRequest{})
|
||||
assert.Nil(t, err)
|
||||
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
|
||||
core.UpdateStateCode(stateSave)
|
||||
|
||||
// failed to parse metric type
|
||||
invalidRequest := "invalid request"
|
||||
resp, err = core.GetMetrics(ctx, &milvuspb.GetMetricsRequest{
|
||||
Request: invalidRequest,
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
|
||||
|
||||
// unsupported metric type
|
||||
unsupportedMetricType := "unsupported"
|
||||
req, err := metricsinfo.ConstructRequestByMetricType(unsupportedMetricType)
|
||||
assert.Nil(t, err)
|
||||
resp, err = core.GetMetrics(ctx, req)
|
||||
assert.Nil(t, err)
|
||||
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
|
||||
|
||||
// normal case
|
||||
systemInfoMetricType := metricsinfo.SystemInfoMetrics
|
||||
req, err = metricsinfo.ConstructRequestByMetricType(systemInfoMetricType)
|
||||
assert.Nil(t, err)
|
||||
resp, err = core.GetMetrics(ctx, req)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
|
||||
})
|
||||
|
||||
t.Run("get system info", func(t *testing.T) {
|
||||
// normal case
|
||||
systemInfoMetricType := metricsinfo.SystemInfoMetrics
|
||||
req, err := metricsinfo.ConstructRequestByMetricType(systemInfoMetricType)
|
||||
assert.Nil(t, err)
|
||||
resp, err := core.getSystemInfoMetrics(ctx, req)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
|
||||
})
|
||||
|
||||
err = core.Stop()
|
||||
assert.Nil(t, err)
|
||||
st, err := core.GetComponentStates(ctx)
|
||||
|
|
|
@ -122,6 +122,8 @@ type RootCoordComponent interface {
|
|||
SetIndexCoord(IndexCoord) error
|
||||
SetQueryCoord(QueryCoord) error
|
||||
SetNewProxyClient(func(sess *sessionutil.Session) (Proxy, error))
|
||||
|
||||
GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error)
|
||||
}
|
||||
|
||||
type Proxy interface {
|
||||
|
|
|
@ -67,3 +67,9 @@ type IndexCoordInfos struct {
|
|||
BaseComponentInfos
|
||||
// TODO(dragondriver): add more detail metrics
|
||||
}
|
||||
|
||||
// RootCoordInfos implements ComponentInfos
|
||||
type RootCoordInfos struct {
|
||||
BaseComponentInfos
|
||||
// TODO(dragondriver): add more detail metrics
|
||||
}
|
||||
|
|
|
@ -99,3 +99,19 @@ func TestIndexCoordInfos_Codec(t *testing.T) {
|
|||
assert.Equal(t, nil, err)
|
||||
assert.Equal(t, infos1.Name, infos2.Name)
|
||||
}
|
||||
|
||||
func TestRootCoordInfos_Codec(t *testing.T) {
|
||||
infos1 := RootCoordInfos{
|
||||
BaseComponentInfos: BaseComponentInfos{
|
||||
Name: ConstructComponentName(typeutil.RootCoordRole, 1),
|
||||
},
|
||||
}
|
||||
s, err := MarshalComponentInfos(infos1)
|
||||
assert.Equal(t, nil, err)
|
||||
log.Info("TestRootCoordInfos_Codec",
|
||||
zap.String("marshaled_result", s))
|
||||
var infos2 RootCoordInfos
|
||||
err = UnmarshalComponentInfos(s, &infos2)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.Equal(t, infos1.Name, infos2.Name)
|
||||
}
|
||||
|
|
|
@ -75,6 +75,12 @@ type IndexCoordTopology struct {
|
|||
Connections ConnTopology `json:"connections"`
|
||||
}
|
||||
|
||||
// RootCoordTopology shows the whole metrics of root coordinator
|
||||
type RootCoordTopology struct {
|
||||
Self RootCoordInfos `json:"self"`
|
||||
Connections ConnTopology `json:"connections"`
|
||||
}
|
||||
|
||||
type ConnectionType string
|
||||
|
||||
const (
|
||||
|
|
|
@ -200,6 +200,35 @@ func TestIndexCoordTopology_Codec(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestRootCoordTopology_Codec(t *testing.T) {
|
||||
topology1 := RootCoordTopology{
|
||||
Self: RootCoordInfos{
|
||||
BaseComponentInfos: BaseComponentInfos{
|
||||
Name: ConstructComponentName(typeutil.RootCoordRole, 1),
|
||||
},
|
||||
},
|
||||
Connections: ConnTopology{
|
||||
Name: ConstructComponentName(typeutil.RootCoordRole, 1),
|
||||
ConnectedComponents: []string{
|
||||
ConstructComponentName(typeutil.RootCoordRole, 1),
|
||||
},
|
||||
},
|
||||
}
|
||||
s, err := MarshalTopology(topology1)
|
||||
assert.Equal(t, nil, err)
|
||||
log.Info("TestRootCoordTopology_Codec",
|
||||
zap.String("marshaled_result", s))
|
||||
var topology2 RootCoordTopology
|
||||
err = UnmarshalTopology(s, &topology2)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.Equal(t, topology1.Self, topology2.Self)
|
||||
assert.Equal(t, topology1.Connections.Name, topology2.Connections.Name)
|
||||
assert.Equal(t, len(topology1.Connections.ConnectedComponents), len(topology1.Connections.ConnectedComponents))
|
||||
for i := range topology1.Connections.ConnectedComponents {
|
||||
assert.Equal(t, topology1.Connections.ConnectedComponents[i], topology2.Connections.ConnectedComponents[i])
|
||||
}
|
||||
}
|
||||
|
||||
func TestConnTopology_Codec(t *testing.T) {
|
||||
topology1 := ConnTopology{
|
||||
Name: ConstructComponentName(typeutil.ProxyRole, 1),
|
||||
|
|
Loading…
Reference in New Issue