@@ -11,7 +11,7 @@ let followNetwork: string;
1111
1212export function initPrometheusSetup ( port ?: number , curFollowNetwork ?: string ) {
1313 const app = express ( ) ;
14-
14+ prometheusInitProving ( ) ;
1515 if ( ! port ) {
1616 // Only for pollUpdates
1717 port = 2999 ;
@@ -20,12 +20,14 @@ export function initPrometheusSetup(port?: number, curFollowNetwork?: string) {
2020 followNetwork = curFollowNetwork ;
2121 }
2222
23+ // Only expose the metrics endpoint if not already initialized
2324 app . get ( '/metrics' , async ( req , res ) => {
25+ res . set ( 'Content-Type' , register . contentType ) ;
2426 res . end ( await register . metrics ( ) ) ;
2527 } ) ;
2628
2729 app . listen ( port , ( ) => {
28- console . log ( `Express listening on port ${ port } ` ) ;
30+ console . log ( `Prometheus metrics exposed on port ${ port } ` ) ;
2931 } ) ;
3032
3133 return client ;
@@ -69,3 +71,89 @@ export async function prometheusTiming<T>(func: () => T, funcName: string) {
6971 }
7072 }
7173}
74+
75+ export function registerGaugesForProver ( ) {
76+ register . registerMetric ( timesGettingInputsForProofGeneration ) ;
77+ register . registerMetric ( numberOfProofGenerated ) ;
78+ }
79+
80+ export function registerGaugesForStartPublishing ( ) {
81+ register . registerMetric ( accountBalanceGauge ) ;
82+ register . registerMetric ( previousSlot ) ;
83+ register . registerMetric ( transactionForSlot ) ;
84+ register . registerMetric ( currentNetworkSlot ) ;
85+ register . registerMetric ( minutesDelayPrevSlot ) ;
86+ register . registerMetric ( minutesDelayTransaction ) ;
87+ register . registerMetric ( numberOfProofPublished ) ;
88+ }
89+
90+ export const accountBalanceGauge = new client . Gauge ( {
91+ name : 'account_balance' ,
92+ help : 'Current balance of the account' ,
93+ labelNames : [ 'network' ] ,
94+ } ) ;
95+
96+ export const previousSlot = new client . Gauge ( {
97+ name : 'previous_slot' ,
98+ help : 'Previous slot on the chain' ,
99+ labelNames : [ 'network' ] ,
100+ } ) ;
101+
102+ export const transactionForSlot = new client . Gauge ( {
103+ name : 'transaction_slot' ,
104+ help : 'Transaction publishing for slot' ,
105+ labelNames : [ 'network' ] ,
106+ } ) ;
107+
108+ export const currentNetworkSlot = new client . Gauge ( {
109+ name : 'current_network_slot' ,
110+ help : 'Current slot on chian' ,
111+ labelNames : [ 'network' ] ,
112+ } ) ;
113+
114+ export const minutesDelayPrevSlot = new client . Gauge ( {
115+ name : 'minutes_delay_prev_slot' ,
116+ help : 'How behind is the last slot' ,
117+ labelNames : [ 'network' ] ,
118+ } ) ;
119+
120+ export const minutesDelayTransaction = new client . Gauge ( {
121+ name : 'minutes_delay_transaction' ,
122+ help : 'How behind is the transaction' ,
123+ labelNames : [ 'network' ] ,
124+ } ) ;
125+
126+ export async function prometheusInitProving ( ) {
127+ timesGettingInputsForProofGeneration . reset ( ) ;
128+ numberOfProofGenerated . reset ( ) ;
129+ numberOfProofPublished . reset ( ) ;
130+ }
131+
132+ export function incrementInputsForProofGeneration ( ) {
133+ timesGettingInputsForProofGeneration . inc ( ) ;
134+ }
135+
136+ export function incrementProofGenerated ( ) {
137+ numberOfProofGenerated . inc ( ) ;
138+ }
139+
140+ export function incrementProofPublished ( network ) {
141+ numberOfProofPublished . labels ( network ) . inc ( ) ;
142+ }
143+ export const timesGettingInputsForProofGeneration = new client . Counter ( {
144+ name : 'times_getting_inputs_for_proof_generation' ,
145+ help : 'The number of times inputs for proof generation were requested(since last restart)' ,
146+ labelNames : [ 'network' ] ,
147+ } ) ;
148+
149+ export const numberOfProofGenerated = new client . Counter ( {
150+ name : 'number_of_proof_generated' ,
151+ help : 'The number of proofs generated(since last restart)' ,
152+ labelNames : [ 'network' ] ,
153+ } ) ;
154+
155+ export const numberOfProofPublished = new client . Counter ( {
156+ name : 'number_of_proof_published' ,
157+ help : 'The number of proofs published(since last restart)' ,
158+ labelNames : [ 'network' ] ,
159+ } ) ;
0 commit comments