fix: KPI上报推送到对应网元,查询改用时间戳避免时区转换问题

This commit is contained in:
TsMask
2024-07-25 18:22:13 +08:00
parent 7c982cf9e2
commit 286e40a4e9
7 changed files with 35 additions and 156 deletions

View File

@@ -2,7 +2,6 @@ package pm
import (
"encoding/json"
"errors"
"fmt"
"io"
"math"
@@ -16,12 +15,13 @@ import (
"be.ems/lib/log"
"be.ems/lib/services"
"be.ems/restagent/config"
"xorm.io/xorm"
neService "be.ems/src/modules/network_element/service"
wsService "be.ems/src/modules/ws/service"
"github.com/go-resty/resty/v2"
_ "github.com/go-sql-driver/mysql"
"github.com/gorilla/mux"
"xorm.io/xorm"
)
type Response struct {
@@ -226,14 +226,6 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
granularity = int8(seconds)
}
// 黄金指标事件对象
kpiEvent := map[string]any{
// kip_id ...
"neType": kpiReport.Task.NE.NeType,
"neName": kpiReport.Task.NE.NEName,
"startIndex": kpiIndex,
"timeGroup": startTime,
}
// insert into new kpi_report_xxx table
kpiData := new(KpiData)
kpiData.Date = startTime
@@ -248,6 +240,15 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
kpiData.RmUid = kpiReport.Task.NE.RmUID
kpiVal := new(KPIVal)
kpiData.CreatedAt = time.Now().UnixMilli()
// 黄金指标事件对象
kpiEvent := map[string]any{
// kip_id ...
"neType": kpiReport.Task.NE.NeType,
"neName": kpiReport.Task.NE.NEName,
"startIndex": kpiIndex,
"timeGroup": kpiData.CreatedAt,
}
for _, k := range kpiReport.Task.NE.KPIs {
kpiEvent[k.KPIID] = k.Value // kip_id
@@ -266,15 +267,20 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) {
return
}
// 送到ws订阅组
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI, kpiEvent)
if kpiReport.Task.NE.NeType == "UPF" {
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF, kpiEvent)
// 送到匹配的网元
neInfo := neService.NewNeInfoImpl.SelectNeInfoByRmuid(kpiData.RmUid)
if neInfo.RmUID == kpiData.RmUid {
// 推送到ws订阅组
wsService.NewWSSendImpl.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent)
if neInfo.NeType == "UPF" {
wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF+neInfo.NeId, kpiEvent)
}
}
services.ResponseStatusOK204NoContent(w)
}
// PostGoldKPIFromNF 已废弃
// post kpi report from NEs, insert insto gold_kpi table, discard...
func PostGoldKPIFromNF(w http.ResponseWriter, r *http.Request) {
log.Debug("PostKPIReportFromNF processing... ")
@@ -639,7 +645,7 @@ func PostMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
return
}
if neInfo == nil {
err := errors.New(fmt.Sprintf("not found target NE neType=%s, neId=%s", neType, neId))
err := fmt.Errorf("not found target NE neType=%s, neId=%s", neType, neId)
log.Error(err)
services.ResponseInternalServerError500ProcessError(w, err)
return
@@ -692,7 +698,7 @@ func PostMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
return
}
default:
err = errors.New(fmt.Sprintf("measure task status must be inactive id=%d", id))
err = fmt.Errorf("measure task status must be inactive id=%d", id)
log.Error("Unable to active measure task:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
@@ -719,7 +725,7 @@ func PostMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
services.TransportResponse(w, response.StatusCode(), response.Body())
return
} else {
err = errors.New(fmt.Sprintf("failed to active measure task, NF return error status=%v", response.Status()))
err = fmt.Errorf("failed to active measure task, NF return error status=%v", response.Status())
log.Error("Unable to active measure task:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
@@ -932,8 +938,6 @@ func PatchMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
return
}
if neInfo == nil {
em := errors.New("Not found NE info in database")
log.Error(em)
taskInfo := new(dborm.MeasureTask)
taskInfo.Status = dborm.MeasureTaskStatusInactive
affected, err := dborm.XormUpdateTableById(id, dborm.TableNameMeasureTask, taskInfo)
@@ -986,7 +990,6 @@ func PatchMeasureTaskToNF(w http.ResponseWriter, r *http.Request) {
}
services.ResponseWithJson(w, response.StatusCode(), respMsg)
return
}
type Measurement struct {