proxy-go/internal/constants/constants.go
wood chen 3962799980 feat(config): update alert configurations and error rate thresholds
- Increased ErrorRate threshold from 0.5 to 0.8 for stricter alerting.
- Added AlertInterval setting to config for customizable notification intervals.
- Updated latency thresholds for small, medium, and large files to improve performance monitoring.
- Enhanced metrics handling to incorporate new alert configurations in the system.
2024-12-03 17:54:45 +08:00

91 lines
2.9 KiB
Go

package constants
import (
"proxy-go/internal/config"
"time"
)
var (
// 缓存相关
CacheTTL = 5 * time.Minute // 缓存过期时间
MaxCacheSize = 10000 // 最大缓存大小
// 数据库相关
CleanupInterval = 24 * time.Hour // 清理间隔
DataRetention = 90 * 24 * time.Hour // 数据保留时间
BatchSize = 100 // 批量写入大小
// 指标相关
MetricsInterval = 5 * time.Minute // 指标收集间隔
MaxPathsStored = 1000 // 最大存储路径数
MaxRecentLogs = 1000 // 最大最近日志数
// 监控告警相关
AlertWindowSize = 12 // 监控窗口数量
AlertWindowInterval = 5 * time.Minute // 每个窗口时间长度
AlertDedupeWindow = 15 * time.Minute // 告警去重时间窗口
AlertNotifyInterval = 24 * time.Hour // 告警通知间隔
MinRequestsForAlert int64 = 10 // 触发告警的最小请求数
ErrorRateThreshold = 0.8 // 错误率告警阈值
// 延迟告警阈值
SmallFileSize int64 = 1 * MB // 小文件阈值
MediumFileSize int64 = 10 * MB // 中等文件阈值
LargeFileSize int64 = 100 * MB // 大文件阈值
SmallFileLatency = 5 * time.Second // 小文件最大延迟
MediumFileLatency = 10 * time.Second // 中等文件最大延迟
LargeFileLatency = 50 * time.Second // 大文件最大延迟
HugeFileLatency = 300 * time.Second // 超大文件最大延迟 (5分钟)
// 单位常量
KB int64 = 1024
MB int64 = 1024 * KB
)
// UpdateFromConfig 从配置文件更新常量
func UpdateFromConfig(cfg *config.Config) {
// 告警配置
if cfg.Metrics.Alert.WindowSize > 0 {
AlertWindowSize = cfg.Metrics.Alert.WindowSize
}
if cfg.Metrics.Alert.WindowInterval > 0 {
AlertWindowInterval = cfg.Metrics.Alert.WindowInterval
}
if cfg.Metrics.Alert.DedupeWindow > 0 {
AlertDedupeWindow = cfg.Metrics.Alert.DedupeWindow
}
if cfg.Metrics.Alert.MinRequests > 0 {
MinRequestsForAlert = cfg.Metrics.Alert.MinRequests
}
if cfg.Metrics.Alert.ErrorRate > 0 {
ErrorRateThreshold = cfg.Metrics.Alert.ErrorRate
}
if cfg.Metrics.Alert.AlertInterval > 0 {
AlertNotifyInterval = cfg.Metrics.Alert.AlertInterval
}
// 延迟告警配置
if cfg.Metrics.Latency.SmallFileSize > 0 {
SmallFileSize = cfg.Metrics.Latency.SmallFileSize
}
if cfg.Metrics.Latency.MediumFileSize > 0 {
MediumFileSize = cfg.Metrics.Latency.MediumFileSize
}
if cfg.Metrics.Latency.LargeFileSize > 0 {
LargeFileSize = cfg.Metrics.Latency.LargeFileSize
}
if cfg.Metrics.Latency.SmallLatency > 0 {
SmallFileLatency = cfg.Metrics.Latency.SmallLatency
}
if cfg.Metrics.Latency.MediumLatency > 0 {
MediumFileLatency = cfg.Metrics.Latency.MediumLatency
}
if cfg.Metrics.Latency.LargeLatency > 0 {
LargeFileLatency = cfg.Metrics.Latency.LargeLatency
}
if cfg.Metrics.Latency.HugeLatency > 0 {
HugeFileLatency = cfg.Metrics.Latency.HugeLatency
}
}