@ -230,7 +230,11 @@ func (g *Group) run(ctx context.Context) {
g . evalIterationFunc ( ctx , g , evalTimestamp )
}
g . RestoreForState ( time . Now ( ) )
restoreStartTime := time . Now ( )
g . RestoreForState ( restoreStartTime )
totalRestoreTimeSeconds := time . Since ( restoreStartTime ) . Seconds ( )
g . metrics . GroupLastRestoreDuration . WithLabelValues ( GroupKey ( g . file , g . name ) ) . Set ( totalRestoreTimeSeconds )
level . Debug ( g . logger ) . Log ( "msg" , "'for' state restoration completed" , "duration_seconds" , totalRestoreTimeSeconds )
g . shouldRestore = false
}
@ -788,6 +792,7 @@ type Metrics struct {
GroupInterval * prometheus . GaugeVec
GroupLastEvalTime * prometheus . GaugeVec
GroupLastDuration * prometheus . GaugeVec
GroupLastRestoreDuration * prometheus . GaugeVec
GroupRules * prometheus . GaugeVec
GroupSamples * prometheus . GaugeVec
}
@ -865,6 +870,14 @@ func NewGroupMetrics(reg prometheus.Registerer) *Metrics {
} ,
[ ] string { "rule_group" } ,
) ,
GroupLastRestoreDuration : prometheus . NewGaugeVec (
prometheus . GaugeOpts {
Namespace : namespace ,
Name : "rule_group_last_restore_duration_seconds" ,
Help : "The duration of the last alert rules alerts restoration using the `ALERTS_FOR_STATE` series." ,
} ,
[ ] string { "rule_group" } ,
) ,
GroupRules : prometheus . NewGaugeVec (
prometheus . GaugeOpts {
Namespace : namespace ,
@ -894,6 +907,7 @@ func NewGroupMetrics(reg prometheus.Registerer) *Metrics {
m . GroupInterval ,
m . GroupLastEvalTime ,
m . GroupLastDuration ,
m . GroupLastRestoreDuration ,
m . GroupRules ,
m . GroupSamples ,
)