feat: 网络双线图+告警联系人/联系组+Agent v2.0.0 + 一键报警阈值
- HostMonitor: 网络改为双线图 rx/tx 网卡带宽吞吐(双Area线), 移除单rx图 - Agent: 默认版本号从 dev 改为 v2.0.0, 重建二进制 5.2MB - 告警中心: 新增报警联系人/报警联系组 Tab, ContactDialog/ContactGroupDialog - 后端: AlertContact/AlertContactGroup 模型+CRUD, monitor_alert_contacts/groups 表 - 路由: /alerts/contacts + /alerts/contact-groups 8个REST端点 - 一键报警: 更新描述为6条规则(含TCP+进程), 切换到 /alerts/quick-setup - 测试规则: 内存>10% 触发告警已创建, 飞书通知验证通过
This commit is contained in:
1 parent
5333f6f04a
commit
e1cfbaf45e
11 files changed
+810
-16
No files matched your search
@@ -395,6 +395,79 @@ type AcknowledgeAlertRequest struct {
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// AlertContact 报警联系人
|
||||
// ============================================
|
||||
|
||||
type AlertContact struct {
|
||||
ID uint `gorm:"primaryKey;autoIncrement;comment:主键ID" json:"id"`
|
||||
Name string `gorm:"type:varchar(128);not null;comment:联系人姓名" json:"name"`
|
||||
Phone string `gorm:"type:varchar(32);comment:手机号" json:"phone,omitempty"`
|
||||
Email string `gorm:"type:varchar(128);comment:邮箱" json:"email,omitempty"`
|
||||
Dingtalk string `gorm:"type:varchar(256);comment:钉钉webhook地址" json:"dingtalk,omitempty"`
|
||||
Feishu string `gorm:"type:varchar(256);comment:飞书webhook地址" json:"feishu,omitempty"`
|
||||
Wechat string `gorm:"type:varchar(256);comment:企业微信webhook地址" json:"wechat,omitempty"`
|
||||
CreatedAt time.Time `gorm:"not null;comment:创建时间" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"not null;comment:更新时间" json:"updated_at"`
|
||||
DeletedAt gorm.DeletedAt `gorm:"index;comment:删除时间" json:"deleted_at,omitempty"`
|
||||
}
|
||||
|
||||
func (AlertContact) TableName() string {
|
||||
return "monitor_alert_contacts"
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// AlertContactGroup 报警联系组
|
||||
// ============================================
|
||||
|
||||
type AlertContactGroup struct {
|
||||
ID uint `gorm:"primaryKey;autoIncrement;comment:主键ID" json:"id"`
|
||||
GroupName string `gorm:"type:varchar(128);not null;comment:组名称" json:"group_name"`
|
||||
Notes string `gorm:"type:varchar(500);comment:备注" json:"notes,omitempty"`
|
||||
ContactIDs string `gorm:"type:text;comment:联系人ID列表JSON" json:"contact_ids,omitempty"`
|
||||
CreatedAt time.Time `gorm:"not null;comment:创建时间" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"not null;comment:更新时间" json:"updated_at"`
|
||||
DeletedAt gorm.DeletedAt `gorm:"index;comment:删除时间" json:"deleted_at,omitempty"`
|
||||
}
|
||||
|
||||
func (AlertContactGroup) TableName() string {
|
||||
return "monitor_alert_contact_groups"
|
||||
}
|
||||
|
||||
// CreateContactRequest 创建联系人请求
|
||||
type CreateContactRequest struct {
|
||||
Name string `json:"name" binding:"required"`
|
||||
Phone string `json:"phone,omitempty"`
|
||||
Email string `json:"email,omitempty"`
|
||||
Dingtalk string `json:"dingtalk,omitempty"`
|
||||
Feishu string `json:"feishu,omitempty"`
|
||||
Wechat string `json:"wechat,omitempty"`
|
||||
}
|
||||
|
||||
// UpdateContactRequest 更新联系人请求
|
||||
type UpdateContactRequest struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Phone string `json:"phone,omitempty"`
|
||||
Email string `json:"email,omitempty"`
|
||||
Dingtalk string `json:"dingtalk,omitempty"`
|
||||
Feishu string `json:"feishu,omitempty"`
|
||||
Wechat string `json:"wechat,omitempty"`
|
||||
}
|
||||
|
||||
// CreateContactGroupRequest 创建联系组请求
|
||||
type CreateContactGroupRequest struct {
|
||||
GroupName string `json:"group_name" binding:"required"`
|
||||
Notes string `json:"notes,omitempty"`
|
||||
ContactIDs []uint `json:"contact_ids"`
|
||||
}
|
||||
|
||||
// UpdateContactGroupRequest 更新联系组请求
|
||||
type UpdateContactGroupRequest struct {
|
||||
GroupName string `json:"group_name,omitempty"`
|
||||
Notes string `json:"notes,omitempty"`
|
||||
ContactIDs []uint `json:"contact_ids,omitempty"`
|
||||
}
|
||||
|
||||
// CreateNotifyChannelRequest 创建通知渠道请求
|
||||
type CreateNotifyChannelRequest struct {
|
||||
Name string `json:"name" binding:"required"`
|
||||
@@ -426,7 +499,7 @@ type FeishuCardContent struct {
|
||||
Title string `json:"title"`
|
||||
Content [][]FeishuCardElement `json:"content"`
|
||||
}
|
||||
|
||||
// FeishuCardElement 飞书卡片元素
|
||||
type FeishuCardElement struct {
|
||||
Tag string `json:"tag"`
|
||||
Text string `json:"text,omitempty"`
|
||||
|
||||
Reference in new issue
Block a user