metrics.go 9.7 KB
Newer Older
Z
zwd1208 已提交
1 2 3 4 5 6
package metrics

import (
	"net/http"

	"github.com/milvus-io/milvus/internal/log"
C
Cai Yudong 已提交
7
	"github.com/prometheus/client_golang/prometheus"
Z
zwd1208 已提交
8 9 10 11 12
	"github.com/prometheus/client_golang/prometheus/promhttp"

	"go.uber.org/zap"
)

13
const (
C
Cai Yudong 已提交
14 15 16
	milvusNamespace    = "milvus"
	subSystemRootCoord = "rootcoord"
	subSystemDataCoord = "dataCoord"
X
XuanYang-cn 已提交
17
	subSystemDataNode  = "dataNode"
18 19
)

Z
zwd1208 已提交
20 21 22 23 24 25 26 27 28 29 30 31
/*
var (
	PanicCounter = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: "milvus",
			Subsystem: "server",
			Name:      "panic_total",
			Help:      "Counter of panic.",
		}, []string{"type"})
)
*/

C
Cai Yudong 已提交
32
var (
C
Cai Yudong 已提交
33 34
	// RootCoordProxyNodeLister used to count the num of registered proxy nodes
	RootCoordProxyNodeLister = prometheus.NewGaugeVec(
C
Cai Yudong 已提交
35
		prometheus.GaugeOpts{
C
Cai Yudong 已提交
36 37
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
38 39 40 41 42 43 44
			Name:      "list_of_proxy_node",
			Help:      "List of proxy nodes which has register with etcd",
		}, []string{"client_id"})

	////////////////////////////////////////////////////////////////////////////
	// for grpc

C
Cai Yudong 已提交
45 46
	// RootCoordCreateCollectionCounter used to count the num of calls of CreateCollection
	RootCoordCreateCollectionCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
47
		prometheus.CounterOpts{
C
Cai Yudong 已提交
48 49
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
50 51 52 53
			Name:      "create_collection_total",
			Help:      "Counter of create collection",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
54 55
	// RootCoordDropCollectionCounter used to count the num of calls of DropCollection
	RootCoordDropCollectionCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
56
		prometheus.CounterOpts{
C
Cai Yudong 已提交
57 58
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
59 60 61 62
			Name:      "drop_collection_total",
			Help:      "Counter of drop collection",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
63 64
	// RootCoordHasCollectionCounter used to count the num of calls of HasCollection
	RootCoordHasCollectionCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
65
		prometheus.CounterOpts{
C
Cai Yudong 已提交
66 67
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
68 69 70 71
			Name:      "has_collection_total",
			Help:      "Counter of has collection",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
72 73
	// RootCoordDescribeCollectionCounter used to count the num of calls of DescribeCollection
	RootCoordDescribeCollectionCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
74
		prometheus.CounterOpts{
C
Cai Yudong 已提交
75 76
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
77 78 79 80
			Name:      "describe_collection_total",
			Help:      "Counter of describe collection",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
81 82
	// RootCoordShowCollectionsCounter used to count the num of calls of ShowCollections
	RootCoordShowCollectionsCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
83
		prometheus.CounterOpts{
C
Cai Yudong 已提交
84 85
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
86 87 88 89
			Name:      "show_collections_total",
			Help:      "Counter of show collections",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
90 91
	// RootCoordCreatePartitionCounter used to count the num of calls of CreatePartition
	RootCoordCreatePartitionCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
92
		prometheus.CounterOpts{
C
Cai Yudong 已提交
93 94
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
95 96 97 98
			Name:      "create_partition_total",
			Help:      "Counter of create partition",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
99 100
	// RootCoordDropPartitionCounter used to count the num of calls of DropPartition
	RootCoordDropPartitionCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
101
		prometheus.CounterOpts{
C
Cai Yudong 已提交
102 103
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
104 105 106 107
			Name:      "drop_partition_total",
			Help:      "Counter of drop partition",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
108 109
	// RootCoordHasPartitionCounter used to count the num of calls of HasPartition
	RootCoordHasPartitionCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
110
		prometheus.CounterOpts{
C
Cai Yudong 已提交
111 112
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
113 114 115 116
			Name:      "has_partition_total",
			Help:      "Counter of has partition",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
117 118
	// RootCoordShowPartitionsCounter used to count the num of calls of ShowPartitions
	RootCoordShowPartitionsCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
119
		prometheus.CounterOpts{
C
Cai Yudong 已提交
120 121
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
122 123 124 125
			Name:      "show_partitions_total",
			Help:      "Counter of show partitions",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
126 127
	// RootCoordCreateIndexCounter used to count the num of calls of CreateIndex
	RootCoordCreateIndexCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
128
		prometheus.CounterOpts{
C
Cai Yudong 已提交
129 130
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
131 132 133 134
			Name:      "create_index_total",
			Help:      "Counter of create index",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
135 136
	// RootCoordDropIndexCounter used to count the num of calls of DropIndex
	RootCoordDropIndexCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
137
		prometheus.CounterOpts{
C
Cai Yudong 已提交
138 139
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
140 141 142 143
			Name:      "drop_index_total",
			Help:      "Counter of drop index",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
144 145
	// RootCoordDescribeIndexCounter used to count the num of calls of DescribeIndex
	RootCoordDescribeIndexCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
146
		prometheus.CounterOpts{
C
Cai Yudong 已提交
147 148
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
149 150 151 152
			Name:      "describe_index_total",
			Help:      "Counter of describe index",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
153 154
	// RootCoordDescribeSegmentCounter used to count the num of calls of DescribeSegment
	RootCoordDescribeSegmentCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
155
		prometheus.CounterOpts{
C
Cai Yudong 已提交
156 157
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
158 159 160 161
			Name:      "describe_segment_total",
			Help:      "Counter of describe segment",
		}, []string{"client_id", "type"})

C
Cai Yudong 已提交
162 163
	// RootCoordShowSegmentsCounter used to count the num of calls of ShowSegments
	RootCoordShowSegmentsCounter = prometheus.NewCounterVec(
C
Cai Yudong 已提交
164
		prometheus.CounterOpts{
C
Cai Yudong 已提交
165 166
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
167 168 169 170 171 172 173
			Name:      "show_segments_total",
			Help:      "Counter of show segments",
		}, []string{"client_id", "type"})

	////////////////////////////////////////////////////////////////////////////
	// for time tick

C
Cai Yudong 已提交
174 175
	// RootCoordInsertChannelTimeTick used to count the time tick num of insert channel in 24H
	RootCoordInsertChannelTimeTick = prometheus.NewGaugeVec(
C
Cai Yudong 已提交
176
		prometheus.GaugeOpts{
C
Cai Yudong 已提交
177 178
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
179 180 181 182
			Name:      "insert_channel_time_tick",
			Help:      "Time tick of insert Channel in 24H",
		}, []string{"vchannel"})

C
Cai Yudong 已提交
183 184
	// RootCoordDDChannelTimeTick used to count the time tick num of dd channel in 24H
	RootCoordDDChannelTimeTick = prometheus.NewGauge(
C
Cai Yudong 已提交
185
		prometheus.GaugeOpts{
C
Cai Yudong 已提交
186 187
			Namespace: milvusNamespace,
			Subsystem: subSystemRootCoord,
C
Cai Yudong 已提交
188 189 190 191 192
			Name:      "dd_channel_time_tick",
			Help:      "Time tick of dd Channel in 24H",
		})
)

C
Cai Yudong 已提交
193 194 195
//RegisterRootCoord register RootCoord metrics
func RegisterRootCoord() {
	prometheus.MustRegister(RootCoordProxyNodeLister)
C
Cai Yudong 已提交
196 197

	// for grpc
C
Cai Yudong 已提交
198 199 200 201 202 203 204 205 206 207 208 209 210 211
	prometheus.MustRegister(RootCoordCreateCollectionCounter)
	prometheus.MustRegister(RootCoordDropCollectionCounter)
	prometheus.MustRegister(RootCoordHasCollectionCounter)
	prometheus.MustRegister(RootCoordDescribeCollectionCounter)
	prometheus.MustRegister(RootCoordShowCollectionsCounter)
	prometheus.MustRegister(RootCoordCreatePartitionCounter)
	prometheus.MustRegister(RootCoordDropPartitionCounter)
	prometheus.MustRegister(RootCoordHasPartitionCounter)
	prometheus.MustRegister(RootCoordShowPartitionsCounter)
	prometheus.MustRegister(RootCoordCreateIndexCounter)
	prometheus.MustRegister(RootCoordDropIndexCounter)
	prometheus.MustRegister(RootCoordDescribeIndexCounter)
	prometheus.MustRegister(RootCoordDescribeSegmentCounter)
	prometheus.MustRegister(RootCoordShowSegmentsCounter)
C
Cai Yudong 已提交
212 213

	// for time tick
C
Cai Yudong 已提交
214 215
	prometheus.MustRegister(RootCoordInsertChannelTimeTick)
	prometheus.MustRegister(RootCoordDDChannelTimeTick)
Z
zwd1208 已提交
216 217 218 219 220 221 222 223
	//prometheus.MustRegister(PanicCounter)
}

//RegisterProxyNode register ProxyNode metrics
func RegisterProxyNode() {

}

C
Cai Yudong 已提交
224 225
//RegisterQueryCoord register QueryCoord metrics
func RegisterQueryCoord() {
Z
zwd1208 已提交
226 227 228 229 230 231 232 233

}

//RegisterQueryNode register QueryNode metrics
func RegisterQueryNode() {

}

234
var (
C
Cai Yudong 已提交
235 236
	//DataCoordDataNodeList records the num of regsitered data nodes
	DataCoordDataNodeList = prometheus.NewGaugeVec(
237 238
		prometheus.GaugeOpts{
			Namespace: milvusNamespace,
C
Cai Yudong 已提交
239
			Subsystem: subSystemDataCoord,
240 241 242 243 244 245
			Name:      "list_of_data_node",
			Help:      "List of data nodes regsitered within etcd",
		}, []string{"status"},
	)
)

246
//RegisterDataCoord register DataCoord metrics
C
Cai Yudong 已提交
247 248
func RegisterDataCoord() {
	prometheus.Register(DataCoordDataNodeList)
Z
zwd1208 已提交
249 250
}

X
XuanYang-cn 已提交
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
var (
	// DataNodeFlushSegmentsCounter used to count the num of calls of FlushSegments
	DataNodeFlushSegmentsCounter = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: milvusNamespace,
			Subsystem: subSystemDataNode,
			Name:      "flush_segments_total",
			Help:      "Counter of flush segments",
		}, []string{"type"})

	// DataNodeWatchDmChannelCounter used to count the num of calls of WatchDmChannels
	DataNodeWatchDmChannelsCounter = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: milvusNamespace,
			Subsystem: subSystemDataNode,
			Name:      "watch_dm_channels_total",
			Help:      "Counter of watch dm channel",
		}, []string{"type"})
)

Z
zwd1208 已提交
271 272
//RegisterDataNode register DataNode metrics
func RegisterDataNode() {
X
XuanYang-cn 已提交
273 274
	prometheus.Register(DataNodeFlushSegmentsCounter)
	prometheus.Register(DataNodeWatchDmChannelsCounter)
Z
zwd1208 已提交
275 276
}

C
Cai Yudong 已提交
277 278
//RegisterIndexCoord register IndexCoord metrics
func RegisterIndexCoord() {
Z
zwd1208 已提交
279 280 281 282 283 284 285 286

}

//RegisterIndexNode register IndexNode metrics
func RegisterIndexNode() {

}

C
Cai Yudong 已提交
287 288
//RegisterMsgStreamCoord register MsgStreamCoord metrics
func RegisterMsgStreamCoord() {
Z
zwd1208 已提交
289 290 291 292 293 294 295 296 297 298 299 300

}

//ServeHTTP serve prometheus http service
func ServeHTTP() {
	http.Handle("/metrics", promhttp.Handler())
	go func() {
		if err := http.ListenAndServe(":9091", nil); err != nil {
			log.Error("handle metrics failed", zap.Error(err))
		}
	}()
}