-
Notifications
You must be signed in to change notification settings - Fork 488
/
metric.go
38 lines (32 loc) · 1.1 KB
/
metric.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package metric
import (
"time"
"build-booster/common/metric/controllers"
selfController "build-booster/server/pkg/metric/controllers"
)
type HttpRequestLabel = controllers.HttpRequestLabel
var (
HttpRequestController *controllers.HttpRequestController
ElectionStatusController *controllers.ElectionStatusController
MySQLOperationController *controllers.MySQLOperationController
ResourceStatusController *controllers.ResourceStatusController
CheckFailController *selfController.CheckFailController
TaskNumController *selfController.TaskNumController
TaskTimeController *selfController.TaskTimeController
TaskRunningTimeController *selfController.TaskRunningTimeController
)
// TimeMetricRecord as a decorator for functions, records the function execution time.
//
// func f() {
// TimeMetricRecord("operation")()
//
// // Do function work
// }
func TimeMetricRecord(operation string) func() {
startTime := time.Now()
return func() {
if MySQLOperationController != nil {
MySQLOperationController.Observe(operation, float64(time.Since(startTime).Nanoseconds()/1e6))
}
}
}