fix: generate ne state alarm
This commit is contained in:
@@ -128,7 +128,7 @@ tasks:
|
|||||||
at: 00:30
|
at: 00:30
|
||||||
do: TaskGenLicenseAlarm
|
do: TaskGenLicenseAlarm
|
||||||
- name: Task of Generate NE system state alarm
|
- name: Task of Generate NE system state alarm
|
||||||
status: Active
|
status: Inactive
|
||||||
uri: /api/rest/faultManagement/v1/elementType/%s/objectType/alarms
|
uri: /api/rest/faultManagement/v1/elementType/%s/objectType/alarms
|
||||||
params: 10000
|
params: 10000
|
||||||
interval: 5
|
interval: 5
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"ems.agt/features/fm"
|
"ems.agt/features/fm"
|
||||||
@@ -11,6 +13,7 @@ import (
|
|||||||
"ems.agt/lib/global"
|
"ems.agt/lib/global"
|
||||||
"ems.agt/lib/log"
|
"ems.agt/lib/log"
|
||||||
"ems.agt/restagent/config"
|
"ems.agt/restagent/config"
|
||||||
|
"ems.agt/src/framework/cron"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -26,11 +29,25 @@ type BarProcessor struct {
|
|||||||
// 执行次数
|
// 执行次数
|
||||||
count int
|
count int
|
||||||
}
|
}
|
||||||
|
|
||||||
type BarParams struct {
|
type BarParams struct {
|
||||||
Duration int `json:"duration"`
|
AlarmID string `json:"alarmID"`
|
||||||
|
AlarmCode int `json:"alarmCode"`
|
||||||
|
AlarmTitle string `json:"alarmTitle"`
|
||||||
|
AlarmType string `json:"alarmType"`
|
||||||
|
OrigSeverity string `json:"origSeverity"`
|
||||||
|
ObjectUID string `json:"objectUID"`
|
||||||
|
ObjectName string `json:"objectName"`
|
||||||
|
ObjectType string `json:"objectType"`
|
||||||
|
SpecificProblem string `json:"specificProblem"`
|
||||||
|
SpecificProblemID string `json:"specificProblemID"`
|
||||||
|
AddInfo string `json:"AddInfo"`
|
||||||
|
Threshold int64 `json:"threshold"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// type BarParams struct {
|
||||||
|
// Duration int `json:"duration"`
|
||||||
|
// }
|
||||||
|
|
||||||
type Alarm struct {
|
type Alarm struct {
|
||||||
Id int `json:"-" xorm:"pk 'id' autoincr"`
|
Id int `json:"-" xorm:"pk 'id' autoincr"`
|
||||||
AlarmSeq int `json:"alarmSeq"`
|
AlarmSeq int `json:"alarmSeq"`
|
||||||
@@ -62,42 +79,31 @@ type Alarm struct {
|
|||||||
var client = resty.New()
|
var client = resty.New()
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
/*
|
|
||||||
client.
|
|
||||||
SetTimeout(10 * time.Second).
|
|
||||||
SetRetryCount(1).
|
|
||||||
SetRetryWaitTime(1 * time.Second).
|
|
||||||
SetRetryMaxWaitTime(2 * time.Second).
|
|
||||||
SetRetryAfter(func(client *resty.Client, resp *resty.Response) (time.Duration, error) {
|
|
||||||
return 0, errors.New("quota exceeded")
|
|
||||||
})
|
|
||||||
*/
|
|
||||||
client.
|
client.
|
||||||
SetTimeout(time.Duration(400 * time.Millisecond))
|
SetTimeout(time.Duration(400 * time.Millisecond))
|
||||||
// SetRetryCount(1).
|
|
||||||
// SetRetryWaitTime(time.Duration(1 * time.Second)).
|
|
||||||
// SetRetryMaxWaitTime(time.Duration(2 * time.Second))
|
|
||||||
//client.SetTimeout(2 * time.Second)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *BarProcessor) Execute(data any) (any, error) {
|
func (s *BarProcessor) Execute(data any) (any, error) {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
s.count++
|
s.count++
|
||||||
// options := data.(cron.JobData)
|
options := data.(cron.JobData)
|
||||||
// // sysJob := options.SysJob
|
sysJob := options.SysJob
|
||||||
// // var params BarParams
|
var alarmDefine BarParams
|
||||||
|
|
||||||
// // // err := json.Unmarshal([]byte(sysJob.TargetParams), ¶ms)
|
err = json.Unmarshal([]byte(sysJob.TargetParams), &alarmDefine)
|
||||||
// // // if err == nil {
|
if err == nil {
|
||||||
// // // duration = params.Duration
|
log.Error("Failed to Unmarshal:", err)
|
||||||
// // // }
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
var nes []dborm.NeInfo
|
var nes []dborm.NeInfo
|
||||||
_, err = dborm.XormGetAllNeInfo(&nes)
|
_, err = dborm.XormGetAllNeInfo(&nes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to get all ne info:", err)
|
log.Error("Failed to get all ne info:", err)
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
succActiveAlarmNum := 0
|
succActiveAlarmNum := 0
|
||||||
failActiveAlarmNum := 0
|
failActiveAlarmNum := 0
|
||||||
succClearAlarmNum := 0
|
succClearAlarmNum := 0
|
||||||
@@ -118,21 +124,21 @@ func (s *BarProcessor) Execute(data any) (any, error) {
|
|||||||
}
|
}
|
||||||
log.Debug("neState:", *neState)
|
log.Debug("neState:", *neState)
|
||||||
|
|
||||||
params := "10000"
|
// params := "10000"
|
||||||
|
|
||||||
alarmDefine, err := dborm.XormGetAlarmDefine(params)
|
// alarmDefine, err := dborm.XormGetAlarmDefine(params)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
log.Error("Failed to get alarm_define:", err)
|
// log.Error("Failed to get alarm_define:", err)
|
||||||
continue
|
// continue
|
||||||
} else if alarmDefine == nil {
|
// } else if alarmDefine == nil {
|
||||||
log.Error("Not found data from alarm_define")
|
// log.Error("Not found data from alarm_define")
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
|
|
||||||
log.Debug("alarmDefine:", alarmDefine)
|
// log.Debug("alarmDefine:", alarmDefine)
|
||||||
|
|
||||||
sql = fmt.Sprintf("select * from alarm where alarm_id = '%s' and ne_type='%s' and ne_id = '%s' order by event_time desc limit 1",
|
sql = fmt.Sprintf("select * from alarm where alarm_id = '%s' and ne_type='%s' and ne_id = '%s' order by event_time desc limit 1",
|
||||||
alarmDefine.AlarmId, ne.NeType, ne.RmUID)
|
alarmDefine.AlarmID, ne.NeType, ne.RmUID)
|
||||||
alarm, err := dborm.XormGetDataBySQL(sql)
|
alarm, err := dborm.XormGetDataBySQL(sql)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to get alarm:", err)
|
log.Error("Failed to get alarm:", err)
|
||||||
@@ -163,11 +169,12 @@ func (s *BarProcessor) Execute(data any) (any, error) {
|
|||||||
|
|
||||||
// clear alarm, todo
|
// clear alarm, todo
|
||||||
var alarmSeq int = 1
|
var alarmSeq int = 1
|
||||||
SpecificProblem := fmt.Sprintf(alarmDefine.SpecificProblem, alarmDefine.Threshold)
|
threshold := strconv.FormatInt(alarmDefine.Threshold, 10)
|
||||||
|
SpecificProblem := strings.ReplaceAll(alarmDefine.SpecificProblem, "{threshold}", threshold)
|
||||||
locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s,threshold=%v", timestamp, alarmDefine.Threshold)
|
locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s,threshold=%v", timestamp, alarmDefine.Threshold)
|
||||||
alarmData := &Alarm{
|
alarmData := &Alarm{
|
||||||
AlarmSeq: alarmSeq,
|
AlarmSeq: alarmSeq,
|
||||||
AlarmId: alarmDefine.AlarmId,
|
AlarmId: alarmDefine.AlarmID,
|
||||||
NeId: ne.RmUID,
|
NeId: ne.RmUID,
|
||||||
NeType: ne.NeType,
|
NeType: ne.NeType,
|
||||||
NeName: ne.NeName,
|
NeName: ne.NeName,
|
||||||
@@ -178,12 +185,12 @@ func (s *BarProcessor) Execute(data any) (any, error) {
|
|||||||
AlarmType: alarmDefine.AlarmType,
|
AlarmType: alarmDefine.AlarmType,
|
||||||
AlarmStatus: fm.AlarmStatusClear,
|
AlarmStatus: fm.AlarmStatusClear,
|
||||||
OrigSeverity: alarmDefine.OrigSeverity,
|
OrigSeverity: alarmDefine.OrigSeverity,
|
||||||
ObjectUid: alarmDefine.ObjectUid,
|
ObjectUid: alarmDefine.ObjectUID,
|
||||||
ObjectName: alarmDefine.ObjectName,
|
ObjectName: alarmDefine.ObjectName,
|
||||||
ObjectType: alarmDefine.ObjectType,
|
ObjectType: alarmDefine.ObjectType,
|
||||||
LocationInfo: locationInfo,
|
LocationInfo: locationInfo,
|
||||||
SpecificProblem: SpecificProblem,
|
SpecificProblem: SpecificProblem,
|
||||||
SpecificProblemID: alarmDefine.SpecificProblemId,
|
SpecificProblemID: alarmDefine.SpecificProblemID,
|
||||||
AddInfo: alarmDefine.AddInfo,
|
AddInfo: alarmDefine.AddInfo,
|
||||||
EventTime: time.Now().Local().Format(time.RFC3339),
|
EventTime: time.Now().Local().Format(time.RFC3339),
|
||||||
}
|
}
|
||||||
@@ -229,11 +236,12 @@ func (s *BarProcessor) Execute(data any) (any, error) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
SpecificProblem := fmt.Sprintf(alarmDefine.SpecificProblem, alarmDefine.Threshold)
|
threshold := strconv.FormatInt(alarmDefine.Threshold, 10)
|
||||||
|
SpecificProblem := strings.ReplaceAll(alarmDefine.SpecificProblem, "{threshold}", threshold)
|
||||||
locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s,threshold=%v", timestamp, alarmDefine.Threshold)
|
locationInfo := fmt.Sprintf("SystemManagement.State: NE heartbeat timestamp=%s,threshold=%v", timestamp, alarmDefine.Threshold)
|
||||||
alarmData := &Alarm{
|
alarmData := &Alarm{
|
||||||
AlarmSeq: alarmSeq,
|
AlarmSeq: alarmSeq,
|
||||||
AlarmId: alarmDefine.AlarmId,
|
AlarmId: alarmDefine.AlarmID,
|
||||||
NeId: ne.RmUID,
|
NeId: ne.RmUID,
|
||||||
NeType: ne.NeType,
|
NeType: ne.NeType,
|
||||||
NeName: ne.NeName,
|
NeName: ne.NeName,
|
||||||
@@ -244,12 +252,12 @@ func (s *BarProcessor) Execute(data any) (any, error) {
|
|||||||
AlarmType: alarmDefine.AlarmType,
|
AlarmType: alarmDefine.AlarmType,
|
||||||
AlarmStatus: fm.AlarmStatusActive,
|
AlarmStatus: fm.AlarmStatusActive,
|
||||||
OrigSeverity: alarmDefine.OrigSeverity,
|
OrigSeverity: alarmDefine.OrigSeverity,
|
||||||
ObjectUid: alarmDefine.ObjectUid,
|
ObjectUid: alarmDefine.ObjectUID,
|
||||||
ObjectName: alarmDefine.ObjectName,
|
ObjectName: alarmDefine.ObjectName,
|
||||||
ObjectType: alarmDefine.ObjectType,
|
ObjectType: alarmDefine.ObjectType,
|
||||||
LocationInfo: locationInfo,
|
LocationInfo: locationInfo,
|
||||||
SpecificProblem: SpecificProblem,
|
SpecificProblem: SpecificProblem,
|
||||||
SpecificProblemID: alarmDefine.SpecificProblemId,
|
SpecificProblemID: alarmDefine.SpecificProblemID,
|
||||||
AddInfo: alarmDefine.AddInfo,
|
AddInfo: alarmDefine.AddInfo,
|
||||||
EventTime: time.Now().Local().Format(time.RFC3339),
|
EventTime: time.Now().Local().Format(time.RFC3339),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user