@@ -11,11 +11,13 @@ use prometheus::{
11
11
12
12
const JOBS_METRIC : & str = "crater_completed_jobs_total" ;
13
13
const AGENT_WORK_METRIC : & str = "crater_agent_supposed_to_work" ;
14
+ const AGENT_FAILED : & str = "crater_agent_failure" ;
14
15
const LAST_CRATES_UPDATE_METRIC : & str = "crater_last_crates_update" ;
15
16
16
17
#[ derive( Clone ) ]
17
18
pub struct Metrics {
18
19
crater_completed_jobs_total : IntCounterVec ,
20
+ crater_agent_failure : IntCounterVec ,
19
21
crater_work_status : IntGaugeVec ,
20
22
crater_last_crates_update : IntGauge ,
21
23
}
@@ -25,6 +27,9 @@ impl Metrics {
25
27
let jobs_opts = prometheus:: opts!( JOBS_METRIC , "total completed jobs" ) ;
26
28
let crater_completed_jobs_total =
27
29
prometheus:: register_int_counter_vec!( jobs_opts, & [ "agent" , "experiment" ] ) ?;
30
+ let failure_opts = prometheus:: opts!( AGENT_FAILED , "total completed jobs" ) ;
31
+ let crater_agent_failure =
32
+ prometheus:: register_int_counter_vec!( failure_opts, & [ "agent" , "experiment" ] ) ?;
28
33
let agent_opts = prometheus:: opts!( AGENT_WORK_METRIC , "is agent supposed to work" ) ;
29
34
let crater_work_status = prometheus:: register_int_gauge_vec!( agent_opts, & [ "agent" ] ) ?;
30
35
let crates_update_opts =
@@ -33,11 +38,18 @@ impl Metrics {
33
38
34
39
Ok ( Metrics {
35
40
crater_completed_jobs_total,
41
+ crater_agent_failure,
36
42
crater_work_status,
37
43
crater_last_crates_update,
38
44
} )
39
45
}
40
46
47
+ pub fn record_error ( & self , agent : & str , experiment : & str ) {
48
+ self . crater_agent_failure
49
+ . with_label_values ( & [ agent, experiment] )
50
+ . inc_by ( 1 ) ;
51
+ }
52
+
41
53
pub fn record_completed_jobs ( & self , agent : & str , experiment : & str , amount : i64 ) {
42
54
self . crater_completed_jobs_total
43
55
. with_label_values ( & [ agent, experiment] )
0 commit comments