- Introduced `AlertGroup` structure for advanced rate-limiting and reset logic. - Added support for nested rate-limit configuration with `RateLimit` structure. - Implemented `alert_group.Group` service to facilitate alert group analysis and persistence. - Integrated alert group logic into the analyzer configuration and runtime processing pipeline. - Updated `LogAlertRule` to support group associations and validations. - Enhanced repository structure with `AlertGroupRepository` for persistent alert group management.
24 lines
487 B
Go
24 lines
487 B
Go
package time_operation
|
|
|
|
import "time"
|
|
|
|
func IsRateLimited(lastTriggeredAtUnix int64, eventTime time.Time, rateLimit int64) bool {
|
|
if lastTriggeredAtUnix == 0 {
|
|
return true
|
|
}
|
|
|
|
return eventTime.Unix()-lastTriggeredAtUnix < rateLimit
|
|
}
|
|
|
|
func IsReset(lastTriggeredAtUnix int64, eventTime time.Time, resetPeriod int64) bool {
|
|
if resetPeriod == 0 || lastTriggeredAtUnix == 0 {
|
|
return false
|
|
}
|
|
|
|
if eventTime.Unix()-lastTriggeredAtUnix > resetPeriod {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|