88
99 "gorm.io/gorm"
1010
11+ "github.com/prometheus/client_golang/prometheus"
1112 "github.com/scroll-tech/go-ethereum/log"
1213
1314 ctypes "scroll-tech/common/types"
@@ -21,23 +22,78 @@ type ProverManager struct {
2122 willDeprecatedData map [string ]* proverSession
2223 sizeLimit int
2324 persistent * proverDataPersist
25+
26+ clientLoginTries * prometheus.CounterVec
27+ getTaskTries * prometheus.CounterVec
28+ submitTaskTries * prometheus.CounterVec
29+
30+ upstreamFail * prometheus.GaugeVec
31+ clientLoginFail * prometheus.CounterVec
32+ getTaskFail * prometheus.CounterVec
33+ submitTaskFail * prometheus.CounterVec
2434}
2535
26- func NewProverManager (size int ) * ProverManager {
27- return & ProverManager {
36+ func NewProverManager (size int , reg prometheus. Registerer ) * ProverManager {
37+ m := & ProverManager {
2838 data : make (map [string ]* proverSession ),
2939 willDeprecatedData : make (map [string ]* proverSession ),
3040 sizeLimit : size ,
3141 }
42+ m .registerCounters (reg )
43+ return m
3244}
3345
34- func NewProverManagerWithPersistent (size int , db * gorm.DB ) * ProverManager {
35- return & ProverManager {
46+ func NewProverManagerWithPersistent (size int , db * gorm.DB , reg prometheus. Registerer ) * ProverManager {
47+ m := & ProverManager {
3648 data : make (map [string ]* proverSession ),
3749 willDeprecatedData : make (map [string ]* proverSession ),
3850 sizeLimit : size ,
3951 persistent : NewProverDataPersist (db ),
4052 }
53+ m .registerCounters (reg )
54+ return m
55+ }
56+
57+ func (m * ProverManager ) registerCounters (reg prometheus.Registerer ) {
58+ m .upstreamFail = prometheus .NewGaugeVec (prometheus.GaugeOpts {
59+ Name : "upstream_error" ,
60+ Help : "Set to 1 while a upstream session can not be obtained" ,
61+ }, []string {"upstream" })
62+
63+ m .clientLoginFail = prometheus .NewCounterVec (prometheus.CounterOpts {
64+ Name : "login_failure" ,
65+ Help : "Client login has encountered an error" ,
66+ }, []string {"upstream" })
67+
68+ m .getTaskFail = prometheus .NewCounterVec (prometheus.CounterOpts {
69+ Name : "getTask_failure" ,
70+ Help : "GetTask request has encountered an error" ,
71+ }, []string {"upstream" })
72+
73+ m .submitTaskFail = prometheus .NewCounterVec (prometheus.CounterOpts {
74+ Name : "submitTask_failure" ,
75+ Help : "SubmitTask request has encountered an error" ,
76+ }, []string {"upstream" })
77+
78+ m .clientLoginTries = prometheus .NewCounterVec (prometheus.CounterOpts {
79+ Name : "prover_speed" ,
80+ Help : "Cycle against running time of prover (in mhz)" ,
81+ }, []string {"upstream" })
82+
83+ m .getTaskTries = prometheus .NewCounterVec (prometheus.CounterOpts {
84+ Name : "prover_speed" ,
85+ Help : "Cycle against running time of prover (in mhz)" ,
86+ }, []string {"upstream" })
87+
88+ m .submitTaskTries = prometheus .NewCounterVec (prometheus.CounterOpts {
89+ Name : "prover_speed" ,
90+ Help : "Cycle against running time of prover (in mhz)" ,
91+ }, []string {"upstream" })
92+
93+ if reg != nil {
94+ reg .MustRegister (m .upstreamFail )
95+ reg .MustRegister (m .clientLoginFail )
96+ }
4197}
4298
4399// get retrieves ProverSession for a given user key, returns empty if still not exists
0 commit comments