增加资产存活状态定时检测与创建时检测

This commit is contained in:
dushixiang 2021-01-18 00:04:25 +08:00
parent ad91406029
commit c93e03e951
3 changed files with 22 additions and 1 deletions

View File

@ -24,6 +24,12 @@ func AssetCreateEndpoint(c echo.Context) error {
return err
}
// 创建后自动检测资产是否存活
go func() {
active := utils.Tcping(item.IP, item.Port)
model.UpdateAssetActiveById(active, item.ID)
}()
return Success(c, item)
}

View File

@ -17,8 +17,8 @@ func RunTicker() {
c := cron.New(cron.WithSeconds()) //精确到秒
// 定时任务,每隔一小时删除一次未使用的会话信息
_, _ = c.AddFunc("0 0 0/1 * * ?", func() {
// 定时任务,每隔一小时删除一次未使用的会话信息
sessions, _ := model.FindSessionByStatusIn([]string{model.NoConnect, model.Connecting})
if sessions != nil && len(sessions) > 0 {
now := time.Now()
@ -30,6 +30,16 @@ func RunTicker() {
}
}
}
// 每隔一小时检测一次资产是否存活
assets, _ := model.FindAllAsset()
if assets != nil && len(assets) > 0 {
for i := range assets {
asset := assets[i]
active := utils.Tcping(asset.IP, asset.Port)
model.UpdateAssetActiveById(active, asset.ID)
logrus.Infof("资产「%v」ID「%v」存活状态检测完成存活「%v」。", asset.Name, asset.ID, active)
}
}
})
// 定时任务,每隔一分钟校验一次运行中的会话信息

View File

@ -43,6 +43,11 @@ func (r *Asset) TableName() string {
return "assets"
}
func FindAllAsset() (o []Asset, err error) {
err = global.DB.Find(&o).Error
return
}
func FindAssetByConditions(protocol string, account User) (o []Asset, err error) {
db := global.DB.Table("assets").Select("assets.id,assets.name,assets.ip,assets.port,assets.protocol,assets.active,assets.owner,assets.created, users.nickname as owner_name,COUNT(resources.user_id) as sharer_count").Joins("left join users on assets.owner = users.id").Joins("left join resources on assets.id = resources.resource_id").Group("assets.id")