未验证 提交 787d4f8b 编写于 作者: X Xiaofan 提交者: GitHub

Refine prometheus metrics and etcd log (#16084)

Signed-off-by: Nxiaofan-luan <xiaofan.luan@zilliz.com>
上级 31c5b286
...@@ -51,10 +51,20 @@ import ( ...@@ -51,10 +51,20 @@ import (
"github.com/milvus-io/milvus/internal/util/paramtable" "github.com/milvus-io/milvus/internal/util/paramtable"
"github.com/milvus-io/milvus/internal/util/trace" "github.com/milvus-io/milvus/internal/util/trace"
"github.com/milvus-io/milvus/internal/util/typeutil" "github.com/milvus-io/milvus/internal/util/typeutil"
"github.com/prometheus/client_golang/prometheus"
) )
var Params paramtable.ComponentParam var Params paramtable.ComponentParam
// all milvus related metrics is in a separate registry
var Registry *prometheus.Registry
func init() {
Registry = prometheus.NewRegistry()
Registry.MustRegister(prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{}))
Registry.MustRegister(prometheus.NewGoCollector())
}
func newMsgFactory(localMsg bool) msgstream.Factory { func newMsgFactory(localMsg bool) msgstream.Factory {
if localMsg { if localMsg {
return msgstream.NewRmsFactory() return msgstream.NewRmsFactory()
...@@ -117,7 +127,7 @@ func (mr *MilvusRoles) runRootCoord(ctx context.Context, localMsg bool) *compone ...@@ -117,7 +127,7 @@ func (mr *MilvusRoles) runRootCoord(ctx context.Context, localMsg bool) *compone
}() }()
wg.Wait() wg.Wait()
metrics.RegisterRootCoord() metrics.RegisterRootCoord(Registry)
return rc return rc
} }
...@@ -149,7 +159,7 @@ func (mr *MilvusRoles) runProxy(ctx context.Context, localMsg bool, alias string ...@@ -149,7 +159,7 @@ func (mr *MilvusRoles) runProxy(ctx context.Context, localMsg bool, alias string
}() }()
wg.Wait() wg.Wait()
metrics.RegisterProxy() metrics.RegisterProxy(Registry)
return pn return pn
} }
...@@ -180,7 +190,7 @@ func (mr *MilvusRoles) runQueryCoord(ctx context.Context, localMsg bool) *compon ...@@ -180,7 +190,7 @@ func (mr *MilvusRoles) runQueryCoord(ctx context.Context, localMsg bool) *compon
}() }()
wg.Wait() wg.Wait()
metrics.RegisterQueryCoord() metrics.RegisterQueryCoord(Registry)
return qs return qs
} }
...@@ -212,7 +222,7 @@ func (mr *MilvusRoles) runQueryNode(ctx context.Context, localMsg bool, alias st ...@@ -212,7 +222,7 @@ func (mr *MilvusRoles) runQueryNode(ctx context.Context, localMsg bool, alias st
}() }()
wg.Wait() wg.Wait()
metrics.RegisterQueryNode() metrics.RegisterQueryNode(Registry)
return qn return qn
} }
...@@ -245,7 +255,7 @@ func (mr *MilvusRoles) runDataCoord(ctx context.Context, localMsg bool) *compone ...@@ -245,7 +255,7 @@ func (mr *MilvusRoles) runDataCoord(ctx context.Context, localMsg bool) *compone
}() }()
wg.Wait() wg.Wait()
metrics.RegisterDataCoord() metrics.RegisterDataCoord(Registry)
return ds return ds
} }
...@@ -277,7 +287,7 @@ func (mr *MilvusRoles) runDataNode(ctx context.Context, localMsg bool, alias str ...@@ -277,7 +287,7 @@ func (mr *MilvusRoles) runDataNode(ctx context.Context, localMsg bool, alias str
}() }()
wg.Wait() wg.Wait()
metrics.RegisterDataNode() metrics.RegisterDataNode(Registry)
return dn return dn
} }
...@@ -307,7 +317,7 @@ func (mr *MilvusRoles) runIndexCoord(ctx context.Context, localMsg bool) *compon ...@@ -307,7 +317,7 @@ func (mr *MilvusRoles) runIndexCoord(ctx context.Context, localMsg bool) *compon
}() }()
wg.Wait() wg.Wait()
metrics.RegisterIndexCoord() metrics.RegisterIndexCoord(Registry)
return is return is
} }
...@@ -338,7 +348,7 @@ func (mr *MilvusRoles) runIndexNode(ctx context.Context, localMsg bool, alias st ...@@ -338,7 +348,7 @@ func (mr *MilvusRoles) runIndexNode(ctx context.Context, localMsg bool, alias st
}() }()
wg.Wait() wg.Wait()
metrics.RegisterIndexNode() metrics.RegisterIndexNode(Registry)
return in return in
} }
...@@ -486,7 +496,7 @@ func (mr *MilvusRoles) Run(local bool, alias string) { ...@@ -486,7 +496,7 @@ func (mr *MilvusRoles) Run(local bool, alias string) {
http.HandleFunc(healthz.HealthzRouterPath, standaloneHealthzHandler) http.HandleFunc(healthz.HealthzRouterPath, standaloneHealthzHandler)
} }
metrics.ServeHTTP() metrics.ServeHTTP(Registry)
sc := make(chan os.Signal, 1) sc := make(chan os.Signal, 1)
signal.Notify(sc, signal.Notify(sc,
syscall.SIGHUP, syscall.SIGHUP,
......
...@@ -26,7 +26,6 @@ import ( ...@@ -26,7 +26,6 @@ import (
"time" "time"
ot "github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing" ot "github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing"
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
"github.com/milvus-io/milvus/internal/datacoord" "github.com/milvus-io/milvus/internal/datacoord"
"github.com/milvus-io/milvus/internal/log" "github.com/milvus-io/milvus/internal/log"
"github.com/milvus-io/milvus/internal/mq/msgstream" "github.com/milvus-io/milvus/internal/mq/msgstream"
...@@ -151,9 +150,7 @@ func (s *Server) startGrpcLoop(grpcPort int) { ...@@ -151,9 +150,7 @@ func (s *Server) startGrpcLoop(grpcPort int) {
grpc.MaxSendMsgSize(Params.ServerMaxSendSize), grpc.MaxSendMsgSize(Params.ServerMaxSendSize),
grpc.UnaryInterceptor(ot.UnaryServerInterceptor(opts...)), grpc.UnaryInterceptor(ot.UnaryServerInterceptor(opts...)),
grpc.StreamInterceptor(ot.StreamServerInterceptor(opts...))) grpc.StreamInterceptor(ot.StreamServerInterceptor(opts...)))
//grpc.UnaryInterceptor(grpc_prometheus.UnaryServerInterceptor))
datapb.RegisterDataCoordServer(s.grpcServer, s) datapb.RegisterDataCoordServer(s.grpcServer, s)
grpc_prometheus.Register(s.grpcServer)
go funcutil.CheckGrpcReady(ctx, s.grpcErrChan) go funcutil.CheckGrpcReady(ctx, s.grpcErrChan)
if err := s.grpcServer.Serve(lis); err != nil { if err := s.grpcServer.Serve(lis); err != nil {
s.grpcErrChan <- err s.grpcErrChan <- err
......
...@@ -124,15 +124,10 @@ var ( ...@@ -124,15 +124,10 @@ var (
) )
//RegisterDataCoord registers DataCoord metrics //RegisterDataCoord registers DataCoord metrics
func RegisterDataCoord() { func RegisterDataCoord(registry *prometheus.Registry) {
prometheus.MustRegister(DataCoordNumDataNodes) registry.MustRegister(DataCoordNumDataNodes)
prometheus.MustRegister(DataCoordNumSegments) registry.MustRegister(DataCoordNumSegments)
prometheus.MustRegister(DataCoordNumCollections) registry.MustRegister(DataCoordNumCollections)
prometheus.MustRegister(DataCoordNumStoredRows) registry.MustRegister(DataCoordNumStoredRows)
prometheus.MustRegister(DataCoordSyncUTC) registry.MustRegister(DataCoordSyncUTC)
// prometheus.MustRegister(DataCoordSegmentSizeRatio)
// prometheus.MustRegister(DataCoordSegmentFlushDuration)
// prometheus.MustRegister(DataCoordCompactDuration)
// prometheus.MustRegister(DataCoordCompactLoad)
// prometheus.MustRegister(DataCoordNumCompactionTask)
} }
...@@ -196,21 +196,19 @@ var ( ...@@ -196,21 +196,19 @@ var (
) )
//RegisterDataNode registers DataNode metrics //RegisterDataNode registers DataNode metrics
func RegisterDataNode() { func RegisterDataNode(registry *prometheus.Registry) {
prometheus.MustRegister(DataNodeNumFlowGraphs) registry.MustRegister(DataNodeNumFlowGraphs)
prometheus.MustRegister(DataNodeConsumeMsgRowsCount) registry.MustRegister(DataNodeConsumeMsgRowsCount)
prometheus.MustRegister(DataNodeFlushedSize) registry.MustRegister(DataNodeFlushedSize)
//prometheus.MustRegister(DataNodeNumDmlChannels) registry.MustRegister(DataNodeNumConsumers)
//prometheus.MustRegister(DataNodeNumDeltaChannels) registry.MustRegister(DataNodeNumProducers)
prometheus.MustRegister(DataNodeNumConsumers) registry.MustRegister(DataNodeTimeSync)
prometheus.MustRegister(DataNodeNumProducers) registry.MustRegister(DataNodeSegmentRowsCount)
prometheus.MustRegister(DataNodeTimeSync) registry.MustRegister(DataNodeNumUnflushedSegments)
prometheus.MustRegister(DataNodeSegmentRowsCount) registry.MustRegister(DataNodeFlushSegmentLatency)
prometheus.MustRegister(DataNodeNumUnflushedSegments) registry.MustRegister(DataNodeSave2StorageLatency)
prometheus.MustRegister(DataNodeFlushSegmentLatency) registry.MustRegister(DataNodeFlushSegmentCount)
prometheus.MustRegister(DataNodeSave2StorageLatency) registry.MustRegister(DataNodeAutoFlushSegmentCount)
prometheus.MustRegister(DataNodeFlushSegmentCount) registry.MustRegister(DataNodeCompactionLatency)
prometheus.MustRegister(DataNodeAutoFlushSegmentCount) registry.MustRegister(DataNodeFlushSegmentsReqCounter)
prometheus.MustRegister(DataNodeCompactionLatency)
prometheus.MustRegister(DataNodeFlushSegmentsReqCounter)
} }
...@@ -51,8 +51,8 @@ var ( ...@@ -51,8 +51,8 @@ var (
) )
//RegisterIndexCoord registers IndexCoord metrics //RegisterIndexCoord registers IndexCoord metrics
func RegisterIndexCoord() { func RegisterIndexCoord(registry *prometheus.Registry) {
prometheus.MustRegister(IndexCoordIndexRequestCounter) registry.MustRegister(IndexCoordIndexRequestCounter)
prometheus.MustRegister(IndexCoordIndexTaskCounter) registry.MustRegister(IndexCoordIndexTaskCounter)
prometheus.MustRegister(IndexCoordIndexNodeNum) registry.MustRegister(IndexCoordIndexNodeNum)
} }
...@@ -77,11 +77,11 @@ var ( ...@@ -77,11 +77,11 @@ var (
) )
//RegisterIndexNode registers IndexNode metrics //RegisterIndexNode registers IndexNode metrics
func RegisterIndexNode() { func RegisterIndexNode(registry *prometheus.Registry) {
prometheus.MustRegister(IndexNodeBuildIndexTaskCounter) registry.MustRegister(IndexNodeBuildIndexTaskCounter)
prometheus.MustRegister(IndexNodeLoadBinlogLatency) registry.MustRegister(IndexNodeLoadBinlogLatency)
prometheus.MustRegister(IndexNodeDecodeBinlogLatency) registry.MustRegister(IndexNodeDecodeBinlogLatency)
prometheus.MustRegister(IndexNodeKnowhereBuildIndexLatency) registry.MustRegister(IndexNodeKnowhereBuildIndexLatency)
prometheus.MustRegister(IndexNodeEncodeIndexFileLatency) registry.MustRegister(IndexNodeEncodeIndexFileLatency)
prometheus.MustRegister(IndexNodeSaveIndexFileLatency) registry.MustRegister(IndexNodeSaveIndexFileLatency)
} }
...@@ -18,7 +18,6 @@ package metrics ...@@ -18,7 +18,6 @@ package metrics
import ( import (
"net/http" "net/http"
// nolint:gosec // nolint:gosec
_ "net/http/pprof" _ "net/http/pprof"
...@@ -74,8 +73,9 @@ var ( ...@@ -74,8 +73,9 @@ var (
) )
//ServeHTTP serves prometheus http service //ServeHTTP serves prometheus http service
func ServeHTTP() { func ServeHTTP(r *prometheus.Registry) {
http.Handle("/metrics", promhttp.Handler()) http.Handle("/metrics", promhttp.HandlerFor(r, promhttp.HandlerOpts{}))
http.Handle("/metrics_default", promhttp.Handler())
go func() { go func() {
if err := http.ListenAndServe(":9091", nil); err != nil { if err := http.ListenAndServe(":9091", nil); err != nil {
log.Error("handle metrics failed", zap.Error(err)) log.Error("handle metrics failed", zap.Error(err))
......
...@@ -18,16 +18,19 @@ package metrics ...@@ -18,16 +18,19 @@ package metrics
import ( import (
"testing" "testing"
"github.com/prometheus/client_golang/prometheus"
) )
func TestRegisterMetrics(t *testing.T) { func TestRegisterMetrics(t *testing.T) {
r := prometheus.NewRegistry()
// Make sure it doesn't panic. // Make sure it doesn't panic.
RegisterRootCoord() RegisterRootCoord(r)
RegisterDataNode() RegisterDataNode(r)
RegisterDataCoord() RegisterDataCoord(r)
RegisterIndexNode() RegisterIndexNode(r)
RegisterIndexCoord() RegisterIndexCoord(r)
RegisterProxy() RegisterProxy(r)
RegisterQueryNode() RegisterQueryNode(r)
RegisterQueryCoord() RegisterQueryCoord(r)
} }
...@@ -273,38 +273,36 @@ var ( ...@@ -273,38 +273,36 @@ var (
) )
//RegisterProxy registers Proxy metrics //RegisterProxy registers Proxy metrics
func RegisterProxy() { func RegisterProxy(registry *prometheus.Registry) {
prometheus.MustRegister(ProxySearchCount) registry.MustRegister(ProxySearchCount)
prometheus.MustRegister(ProxyInsertCount) registry.MustRegister(ProxyInsertCount)
prometheus.MustRegister(ProxySearchVectors) registry.MustRegister(ProxySearchVectors)
prometheus.MustRegister(ProxyInsertVectors) registry.MustRegister(ProxyInsertVectors)
//prometheus.MustRegister(ProxyLinkedSDKs) registry.MustRegister(ProxySearchLatency)
registry.MustRegister(ProxySearchLatencyPerNQ)
prometheus.MustRegister(ProxySearchLatency) registry.MustRegister(ProxySendMessageLatency)
prometheus.MustRegister(ProxySearchLatencyPerNQ) registry.MustRegister(ProxyWaitForSearchResultLatency)
prometheus.MustRegister(ProxySendMessageLatency) registry.MustRegister(ProxyReduceSearchResultLatency)
prometheus.MustRegister(ProxyWaitForSearchResultLatency) registry.MustRegister(ProxyDecodeSearchResultLatency)
prometheus.MustRegister(ProxyReduceSearchResultLatency)
prometheus.MustRegister(ProxyDecodeSearchResultLatency) registry.MustRegister(ProxyMsgStreamObjectsForPChan)
registry.MustRegister(ProxyMsgStreamObjectsForSearch)
prometheus.MustRegister(ProxyMsgStreamObjectsForPChan)
prometheus.MustRegister(ProxyMsgStreamObjectsForSearch) registry.MustRegister(ProxyInsertLatency)
registry.MustRegister(ProxySendInsertReqLatency)
prometheus.MustRegister(ProxyInsertLatency)
prometheus.MustRegister(ProxySendInsertReqLatency) registry.MustRegister(ProxyCacheHitCounter)
registry.MustRegister(ProxyUpdateCacheLatency)
prometheus.MustRegister(ProxyCacheHitCounter)
prometheus.MustRegister(ProxyUpdateCacheLatency) registry.MustRegister(ProxySyncTimeTick)
registry.MustRegister(ProxyApplyPrimaryKeyLatency)
prometheus.MustRegister(ProxySyncTimeTick) registry.MustRegister(ProxyApplyTimestampLatency)
prometheus.MustRegister(ProxyApplyPrimaryKeyLatency)
prometheus.MustRegister(ProxyApplyTimestampLatency) registry.MustRegister(ProxyDDLFunctionCall)
registry.MustRegister(ProxyDQLFunctionCall)
prometheus.MustRegister(ProxyDDLFunctionCall) registry.MustRegister(ProxyDMLFunctionCall)
prometheus.MustRegister(ProxyDQLFunctionCall) registry.MustRegister(ProxyDDLReqLatency)
prometheus.MustRegister(ProxyDMLFunctionCall) registry.MustRegister(ProxyDMLReqLatency)
prometheus.MustRegister(ProxyDDLReqLatency) registry.MustRegister(ProxyDQLReqLatency)
prometheus.MustRegister(ProxyDMLReqLatency)
prometheus.MustRegister(ProxyDQLReqLatency)
} }
...@@ -112,15 +112,15 @@ var ( ...@@ -112,15 +112,15 @@ var (
) )
//RegisterQueryCoord registers QueryCoord metrics //RegisterQueryCoord registers QueryCoord metrics
func RegisterQueryCoord() { func RegisterQueryCoord(registry *prometheus.Registry) {
prometheus.MustRegister(QueryCoordNumCollections) registry.MustRegister(QueryCoordNumCollections)
prometheus.MustRegister(QueryCoordNumEntities) registry.MustRegister(QueryCoordNumEntities)
prometheus.MustRegister(QueryCoordLoadCount) registry.MustRegister(QueryCoordLoadCount)
prometheus.MustRegister(QueryCoordReleaseCount) registry.MustRegister(QueryCoordReleaseCount)
prometheus.MustRegister(QueryCoordLoadLatency) registry.MustRegister(QueryCoordLoadLatency)
prometheus.MustRegister(QueryCoordReleaseLatency) registry.MustRegister(QueryCoordReleaseLatency)
prometheus.MustRegister(QueryCoordNumChildTasks) registry.MustRegister(QueryCoordNumChildTasks)
prometheus.MustRegister(QueryCoordNumParentTasks) registry.MustRegister(QueryCoordNumParentTasks)
prometheus.MustRegister(QueryCoordChildTaskLatency) registry.MustRegister(QueryCoordChildTaskLatency)
prometheus.MustRegister(QueryCoordNumQueryNodes) registry.MustRegister(QueryCoordNumQueryNodes)
} }
...@@ -200,21 +200,21 @@ var ( ...@@ -200,21 +200,21 @@ var (
) )
//RegisterQueryNode registers QueryNode metrics //RegisterQueryNode registers QueryNode metrics
func RegisterQueryNode() { func RegisterQueryNode(registry *prometheus.Registry) {
prometheus.MustRegister(QueryNodeNumCollections) registry.MustRegister(QueryNodeNumCollections)
prometheus.MustRegister(QueryNodeNumPartitions) registry.MustRegister(QueryNodeNumPartitions)
prometheus.MustRegister(QueryNodeNumSegments) registry.MustRegister(QueryNodeNumSegments)
prometheus.MustRegister(QueryNodeNumDmlChannels) registry.MustRegister(QueryNodeNumDmlChannels)
prometheus.MustRegister(QueryNodeNumDeltaChannels) registry.MustRegister(QueryNodeNumDeltaChannels)
prometheus.MustRegister(QueryNodeNumConsumers) registry.MustRegister(QueryNodeNumConsumers)
prometheus.MustRegister(QueryNodeSQCount) registry.MustRegister(QueryNodeSQCount)
prometheus.MustRegister(QueryNodeSQReqLatency) registry.MustRegister(QueryNodeSQReqLatency)
prometheus.MustRegister(QueryNodeSQLatencyInQueue) registry.MustRegister(QueryNodeSQLatencyInQueue)
prometheus.MustRegister(QueryNodeSQSegmentLatency) registry.MustRegister(QueryNodeSQSegmentLatency)
prometheus.MustRegister(QueryNodeSQSegmentLatencyInCore) registry.MustRegister(QueryNodeSQSegmentLatencyInCore)
prometheus.MustRegister(QueryNodeTranslateHitsLatency) registry.MustRegister(QueryNodeTranslateHitsLatency)
prometheus.MustRegister(QueryNodeReduceLatency) registry.MustRegister(QueryNodeReduceLatency)
prometheus.MustRegister(QueryNodeLoadSegmentLatency) registry.MustRegister(QueryNodeLoadSegmentLatency)
prometheus.MustRegister(QueryNodeServiceTime) registry.MustRegister(QueryNodeServiceTime)
prometheus.MustRegister(QueryNodeNumFlowGraphs) registry.MustRegister(QueryNodeNumFlowGraphs)
} }
...@@ -266,45 +266,45 @@ var ( ...@@ -266,45 +266,45 @@ var (
) )
//RegisterRootCoord registers RootCoord metrics //RegisterRootCoord registers RootCoord metrics
func RegisterRootCoord() { func RegisterRootCoord(registry *prometheus.Registry) {
prometheus.MustRegister(RootCoordProxyLister) registry.Register(RootCoordProxyLister)
// for grpc // for grpc
prometheus.MustRegister(RootCoordCreateCollectionCounter) registry.MustRegister(RootCoordCreateCollectionCounter)
prometheus.MustRegister(RootCoordDropCollectionCounter) registry.MustRegister(RootCoordDropCollectionCounter)
prometheus.MustRegister(RootCoordHasCollectionCounter) registry.MustRegister(RootCoordHasCollectionCounter)
prometheus.MustRegister(RootCoordDescribeCollectionCounter) registry.MustRegister(RootCoordDescribeCollectionCounter)
prometheus.MustRegister(RootCoordShowCollectionsCounter) registry.MustRegister(RootCoordShowCollectionsCounter)
prometheus.MustRegister(RootCoordCreatePartitionCounter) registry.MustRegister(RootCoordCreatePartitionCounter)
prometheus.MustRegister(RootCoordDropPartitionCounter) registry.MustRegister(RootCoordDropPartitionCounter)
prometheus.MustRegister(RootCoordHasPartitionCounter) registry.MustRegister(RootCoordHasPartitionCounter)
prometheus.MustRegister(RootCoordShowPartitionsCounter) registry.MustRegister(RootCoordShowPartitionsCounter)
prometheus.MustRegister(RootCoordCreateIndexCounter) registry.MustRegister(RootCoordCreateIndexCounter)
prometheus.MustRegister(RootCoordDropIndexCounter) registry.MustRegister(RootCoordDropIndexCounter)
prometheus.MustRegister(RootCoordDescribeIndexCounter) registry.MustRegister(RootCoordDescribeIndexCounter)
prometheus.MustRegister(RootCoordDescribeSegmentCounter) registry.MustRegister(RootCoordDescribeSegmentCounter)
prometheus.MustRegister(RootCoordShowSegmentsCounter) registry.MustRegister(RootCoordShowSegmentsCounter)
// for time tick // for time tick
prometheus.MustRegister(RootCoordInsertChannelTimeTick) registry.MustRegister(RootCoordInsertChannelTimeTick)
//prometheus.MustRegister(PanicCounter) //prometheus.MustRegister(PanicCounter)
prometheus.MustRegister(RootCoordSyncTimeTickLatency) registry.MustRegister(RootCoordSyncTimeTickLatency)
// for DDL latency // for DDL latency
prometheus.MustRegister(RootCoordDDLReadTypeLatency) registry.MustRegister(RootCoordDDLReadTypeLatency)
prometheus.MustRegister(RootCoordDDLWriteTypeLatency) registry.MustRegister(RootCoordDDLWriteTypeLatency)
// for allocator // for allocator
prometheus.MustRegister(RootCoordIDAllocCounter) registry.MustRegister(RootCoordIDAllocCounter)
prometheus.MustRegister(RootCoordTimestampAllocCounter) registry.MustRegister(RootCoordTimestampAllocCounter)
prometheus.MustRegister(RootCoordETCDTimestampAllocCounter) registry.MustRegister(RootCoordETCDTimestampAllocCounter)
// for collection // for collection
prometheus.MustRegister(RootCoordNumOfCollections) registry.MustRegister(RootCoordNumOfCollections)
prometheus.MustRegister(RootCoordNumOfPartitions) registry.MustRegister(RootCoordNumOfPartitions)
prometheus.MustRegister(RootCoordNumOfSegments) registry.MustRegister(RootCoordNumOfSegments)
prometheus.MustRegister(RootCoordNumOfIndexedSegments) registry.MustRegister(RootCoordNumOfIndexedSegments)
prometheus.MustRegister(RootCoordNumOfDMLChannel) registry.MustRegister(RootCoordNumOfDMLChannel)
prometheus.MustRegister(RootCoordNumOfMsgStream) registry.MustRegister(RootCoordNumOfMsgStream)
} }
...@@ -31,12 +31,12 @@ import ( ...@@ -31,12 +31,12 @@ import (
"time" "time"
ot "github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing" ot "github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing"
"github.com/milvus-io/milvus/internal/util/trace" "github.com/milvus-io/milvus/internal/util/trace"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/keepalive" "google.golang.org/grpc/keepalive"
"github.com/milvus-io/milvus/internal/util/paramtable" "github.com/milvus-io/milvus/internal/util/paramtable"
"github.com/prometheus/client_golang/prometheus"
"github.com/milvus-io/milvus/internal/util/etcd" "github.com/milvus-io/milvus/internal/util/etcd"
"github.com/milvus-io/milvus/internal/util/sessionutil" "github.com/milvus-io/milvus/internal/util/sessionutil"
...@@ -108,6 +108,14 @@ const ( ...@@ -108,6 +108,14 @@ const (
sleepDuration = time.Millisecond * 200 sleepDuration = time.Millisecond * 200
) )
var Registry *prometheus.Registry
func init() {
Registry = prometheus.NewRegistry()
Registry.MustRegister(prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{}))
Registry.MustRegister(prometheus.NewGoCollector())
}
func newMsgFactory(localMsg bool) msgstream.Factory { func newMsgFactory(localMsg bool) msgstream.Factory {
if localMsg { if localMsg {
return msgstream.NewRmsFactory() return msgstream.NewRmsFactory()
...@@ -141,7 +149,7 @@ func runRootCoord(ctx context.Context, localMsg bool) *grpcrootcoord.Server { ...@@ -141,7 +149,7 @@ func runRootCoord(ctx context.Context, localMsg bool) *grpcrootcoord.Server {
}() }()
wg.Wait() wg.Wait()
metrics.RegisterRootCoord() metrics.RegisterRootCoord(Registry)
return rc return rc
} }
...@@ -172,7 +180,7 @@ func runQueryCoord(ctx context.Context, localMsg bool) *grpcquerycoord.Server { ...@@ -172,7 +180,7 @@ func runQueryCoord(ctx context.Context, localMsg bool) *grpcquerycoord.Server {
}() }()
wg.Wait() wg.Wait()
metrics.RegisterQueryCoord() metrics.RegisterQueryCoord(Registry)
return qs return qs
} }
...@@ -204,7 +212,7 @@ func runQueryNode(ctx context.Context, localMsg bool, alias string) *grpcqueryno ...@@ -204,7 +212,7 @@ func runQueryNode(ctx context.Context, localMsg bool, alias string) *grpcqueryno
}() }()
wg.Wait() wg.Wait()
metrics.RegisterQueryNode() metrics.RegisterQueryNode(Registry)
return qn return qn
} }
...@@ -231,7 +239,7 @@ func runDataCoord(ctx context.Context, localMsg bool) *grpcdatacoordclient.Serve ...@@ -231,7 +239,7 @@ func runDataCoord(ctx context.Context, localMsg bool) *grpcdatacoordclient.Serve
}() }()
wg.Wait() wg.Wait()
metrics.RegisterDataCoord() metrics.RegisterDataCoord(Registry)
return ds return ds
} }
...@@ -263,7 +271,7 @@ func runDataNode(ctx context.Context, localMsg bool, alias string) *grpcdatanode ...@@ -263,7 +271,7 @@ func runDataNode(ctx context.Context, localMsg bool, alias string) *grpcdatanode
}() }()
wg.Wait() wg.Wait()
metrics.RegisterDataNode() metrics.RegisterDataNode(Registry)
return dn return dn
} }
...@@ -293,7 +301,7 @@ func runIndexCoord(ctx context.Context, localMsg bool) *grpcindexcoord.Server { ...@@ -293,7 +301,7 @@ func runIndexCoord(ctx context.Context, localMsg bool) *grpcindexcoord.Server {
}() }()
wg.Wait() wg.Wait()
metrics.RegisterIndexCoord() metrics.RegisterIndexCoord(Registry)
return is return is
} }
...@@ -329,7 +337,7 @@ func runIndexNode(ctx context.Context, localMsg bool, alias string) *grpcindexno ...@@ -329,7 +337,7 @@ func runIndexNode(ctx context.Context, localMsg bool, alias string) *grpcindexno
}() }()
wg.Wait() wg.Wait()
metrics.RegisterIndexNode() metrics.RegisterIndexNode(Registry)
return in return in
} }
......
package etcd
import (
"sync"
"github.com/milvus-io/milvus/internal/log"
"github.com/milvus-io/milvus/internal/util/paramtable"
clientv3 "go.etcd.io/etcd/client/v3"
"go.etcd.io/etcd/server/v3/embed"
"go.etcd.io/etcd/server/v3/etcdserver/api/v3client"
"go.uber.org/zap"
)
// EtcdServer is the singleton of embedded etcd server
var (
initOnce sync.Once
closeOnce sync.Once
etcdServer *embed.Etcd
)
// GetEmbedEtcdClient returns client of embed etcd server
func GetEmbedEtcdClient() (*clientv3.Client, error) {
client := v3client.New(etcdServer.Server)
return client, nil
}
// InitEtcdServer initializes embedded etcd server singleton.
func InitEtcdServer(etcdCfg *paramtable.EtcdConfig) error {
if etcdCfg.UseEmbedEtcd {
var initError error
initOnce.Do(func() {
path := etcdCfg.ConfigPath
var cfg *embed.Config
if len(path) > 0 {
cfgFromFile, err := embed.ConfigFromFile(path)
if err != nil {
initError = err
}
cfg = cfgFromFile
} else {
cfg = embed.NewConfig()
}
cfg.Dir = etcdCfg.DataDir
cfg.LogOutputs = []string{etcdCfg.EtcdLogPath}
cfg.LogLevel = etcdCfg.EtcdLogLevel
e, err := embed.StartEtcd(cfg)
if err != nil {
initError = err
}
etcdServer = e
log.Info("finish init Etcd config", zap.String("path", path), zap.String("data", etcdCfg.DataDir))
})
return initError
}
return nil
}
// StopEtcdServer stops embedded etcd server singleton.
func StopEtcdServer() {
if etcdServer != nil {
closeOnce.Do(func() {
etcdServer.Close()
})
}
}
...@@ -19,53 +19,10 @@ package etcd ...@@ -19,53 +19,10 @@ package etcd
import ( import (
"time" "time"
"go.uber.org/zap"
"github.com/milvus-io/milvus/internal/log"
"github.com/milvus-io/milvus/internal/util/paramtable" "github.com/milvus-io/milvus/internal/util/paramtable"
clientv3 "go.etcd.io/etcd/client/v3" clientv3 "go.etcd.io/etcd/client/v3"
"go.etcd.io/etcd/server/v3/embed"
"go.etcd.io/etcd/server/v3/etcdserver/api/v3client"
) )
// EtcdServer is the singleton of embedded etcd server
var EtcdServer *embed.Etcd
// InitEtcdServer initializes embedded etcd server singleton.
func InitEtcdServer(etcdCfg *paramtable.EtcdConfig) error {
if etcdCfg.UseEmbedEtcd {
path := etcdCfg.ConfigPath
log.Info("Setting Etcd config", zap.String("path", path), zap.String("data", etcdCfg.DataDir))
var cfg *embed.Config
if len(path) > 0 {
cfgFromFile, err := embed.ConfigFromFile(path)
if err != nil {
return err
}
cfg = cfgFromFile
} else {
cfg = embed.NewConfig()
}
cfg.Dir = etcdCfg.DataDir
cfg.LogOutputs = []string{etcdCfg.EtcdLogPath}
cfg.LogLevel = etcdCfg.EtcdLogLevel
e, err := embed.StartEtcd(cfg)
if err != nil {
return err
}
EtcdServer = e
log.Info("finish init embedded etcd")
}
return nil
}
// StopEtcdServer stops embedded etcd server singleton.
func StopEtcdServer() {
if EtcdServer != nil {
EtcdServer.Close()
}
}
// GetEtcdClient returns etcd client // GetEtcdClient returns etcd client
func GetEtcdClient(cfg *paramtable.EtcdConfig) (*clientv3.Client, error) { func GetEtcdClient(cfg *paramtable.EtcdConfig) (*clientv3.Client, error) {
if cfg.UseEmbedEtcd { if cfg.UseEmbedEtcd {
...@@ -74,12 +31,6 @@ func GetEtcdClient(cfg *paramtable.EtcdConfig) (*clientv3.Client, error) { ...@@ -74,12 +31,6 @@ func GetEtcdClient(cfg *paramtable.EtcdConfig) (*clientv3.Client, error) {
return GetRemoteEtcdClient(cfg.Endpoints) return GetRemoteEtcdClient(cfg.Endpoints)
} }
// GetEmbedEtcdClient returns client of embed etcd server
func GetEmbedEtcdClient() (*clientv3.Client, error) {
client := v3client.New(EtcdServer.Server)
return client, nil
}
// GetRemoteEtcdClient returns client of remote etcd by given endpoints // GetRemoteEtcdClient returns client of remote etcd by given endpoints
func GetRemoteEtcdClient(endpoints []string) (*clientv3.Client, error) { func GetRemoteEtcdClient(endpoints []string) (*clientv3.Client, error) {
return clientv3.New(clientv3.Config{ return clientv3.New(clientv3.Config{
......
...@@ -37,10 +37,6 @@ func TestEtcd(t *testing.T) { ...@@ -37,10 +37,6 @@ func TestEtcd(t *testing.T) {
defer os.RemoveAll(Params.EtcdCfg.DataDir) defer os.RemoveAll(Params.EtcdCfg.DataDir)
defer StopEtcdServer() defer StopEtcdServer()
// port is binded
err = InitEtcdServer(&Params.EtcdCfg)
assert.Error(t, err)
etcdCli, err := GetEtcdClient(&Params.EtcdCfg) etcdCli, err := GetEtcdClient(&Params.EtcdCfg)
assert.NoError(t, err) assert.NoError(t, err)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册