- 新增 ops 监控数据库迁移脚本(表结构定义) - 定义核心数据模型(ops_models.go) - 定义告警相关模型(ops_alert_models.go) - 定义仪表板数据模型(ops_dashboard_models.go) - 定义实时监控数据模型(ops_realtime_models.go) - 定义配置相关模型(ops_settings_models.go) - 定义趋势分析数据模型(ops_trend_models.go)
76 lines
1.8 KiB
Go
76 lines
1.8 KiB
Go
package service
|
|
|
|
import "time"
|
|
|
|
// Ops alert rule/event models.
|
|
//
|
|
// NOTE: These are admin-facing DTOs and intentionally keep JSON naming aligned
|
|
// with the existing ops dashboard frontend (backup style).
|
|
|
|
const (
|
|
OpsAlertStatusFiring = "firing"
|
|
OpsAlertStatusResolved = "resolved"
|
|
)
|
|
|
|
type OpsAlertRule struct {
|
|
ID int64 `json:"id"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
|
|
Enabled bool `json:"enabled"`
|
|
Severity string `json:"severity"`
|
|
|
|
MetricType string `json:"metric_type"`
|
|
Operator string `json:"operator"`
|
|
Threshold float64 `json:"threshold"`
|
|
|
|
WindowMinutes int `json:"window_minutes"`
|
|
SustainedMinutes int `json:"sustained_minutes"`
|
|
CooldownMinutes int `json:"cooldown_minutes"`
|
|
|
|
NotifyEmail bool `json:"notify_email"`
|
|
|
|
Filters map[string]any `json:"filters,omitempty"`
|
|
|
|
LastTriggeredAt *time.Time `json:"last_triggered_at,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type OpsAlertEvent struct {
|
|
ID int64 `json:"id"`
|
|
RuleID int64 `json:"rule_id"`
|
|
Severity string `json:"severity"`
|
|
Status string `json:"status"`
|
|
|
|
Title string `json:"title"`
|
|
Description string `json:"description"`
|
|
|
|
MetricValue *float64 `json:"metric_value,omitempty"`
|
|
ThresholdValue *float64 `json:"threshold_value,omitempty"`
|
|
|
|
Dimensions map[string]any `json:"dimensions,omitempty"`
|
|
|
|
FiredAt time.Time `json:"fired_at"`
|
|
ResolvedAt *time.Time `json:"resolved_at,omitempty"`
|
|
|
|
EmailSent bool `json:"email_sent"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
type OpsAlertEventFilter struct {
|
|
Limit int
|
|
|
|
// Optional filters.
|
|
Status string
|
|
Severity string
|
|
|
|
StartTime *time.Time
|
|
EndTime *time.Time
|
|
|
|
// Dimensions filters (best-effort).
|
|
Platform string
|
|
GroupID *int64
|
|
}
|
|
|