diff --git a/module/monitor/driver/influxdb-v2/executor.go b/module/monitor/driver/influxdb-v2/executor.go index 6949b710..0dc6e04b 100644 --- a/module/monitor/driver/influxdb-v2/executor.go +++ b/module/monitor/driver/influxdb-v2/executor.go @@ -618,7 +618,7 @@ func (e *executor) TopN(ctx context.Context, start time.Time, end time.Time, lim { Measurement: "request", AggregateFn: "sum()", - Fields: []string{"total", "request", "response", "total_token"}, + Fields: []string{"total", "request", "response", "input_token", "output_token"}, }, { Measurement: "proxy", @@ -654,8 +654,8 @@ func (e *executor) TokenOverview(ctx context.Context, start time.Time, end time. if err != nil { return nil, nil, nil, err } - total := requestValues["total_token"] - totalLen := len(total) + //total := requestValues["total_token"] + //totalLen := len(total) input := requestValues["input_token"] inputLen := len(input) output := requestValues["output_token"] @@ -664,19 +664,16 @@ func (e *executor) TokenOverview(ctx context.Context, start time.Time, end time. result := make([]*monitor.TokenOverview, 0, len(dates)) for i := range dates { r := new(monitor.TokenOverview) - if totalLen > i { - r.TotalToken = total[i] - totalOverview.TotalToken += r.TotalToken - } if inputLen > i { r.InputToken = input[i] - totalOverview.InputToken += r.InputToken } if outputLen > i { r.OutputToken = output[i] - totalOverview.OutputToken += r.OutputToken } - + r.TotalToken = r.InputToken + r.OutputToken + totalOverview.InputToken += r.InputToken + totalOverview.OutputToken += r.OutputToken + totalOverview.TotalToken += r.TotalToken result = append(result, r) } return dates, totalOverview, result, nil diff --git a/module/monitor/driver/influxdb-v2/flux/flux.go b/module/monitor/driver/influxdb-v2/flux/flux.go index 38a59206..1dca1c0c 100644 --- a/module/monitor/driver/influxdb-v2/flux/flux.go +++ b/module/monitor/driver/influxdb-v2/flux/flux.go @@ -65,9 +65,11 @@ func (f *fluxQuery) CommonStatistics(ctx context.Context, queryApi api.QueryAPI, totalResponse := common.FmtIntFromInterface(maps["response"]) maxResponse := common.FmtIntFromInterface(maps["response_max"]) minResponse := common.FmtIntFromInterface(maps["response_min"]) - totalToken := common.FmtIntFromInterface(maps["total_token"]) - maxToken := common.FmtIntFromInterface(maps["total_token_max"]) - minToken := common.FmtIntFromInterface(maps["total_token_min"]) + inputToken := common.FmtIntFromInterface(maps["input_token"]) + outputToken := common.FmtIntFromInterface(maps["output_token"]) + //totalToken := common.FmtIntFromInterface(maps["total_token"]) + //maxToken := common.FmtIntFromInterface(maps["total_token_max"]) + //minToken := common.FmtIntFromInterface(maps["total_token_min"]) resultMap[key] = &FluxStatistics{ Total: total, @@ -83,9 +85,7 @@ func (f *fluxQuery) CommonStatistics(ctx context.Context, queryApi api.QueryAPI, TotalResponse: totalResponse, ResponseMax: maxResponse, ResponseMin: minResponse, - TotalToken: totalToken, - TokenMax: maxToken, - TokenMin: minToken, + TotalToken: inputToken + outputToken, } } diff --git a/module/monitor/iml.go b/module/monitor/iml.go index 076f4bc8..9233f5f0 100644 --- a/module/monitor/iml.go +++ b/module/monitor/iml.go @@ -112,10 +112,11 @@ func (i *imlMonitorStatisticModule) AIChartOverview(ctx context.Context, service if avgRequestPerSubscriber > result.MaxRequestPerSubscriber { result.MaxRequestPerSubscriber = avgRequestPerSubscriber } + if result.MinRequestPerSubscriber == 0 || result.MinRequestPerSubscriber > avgRequestPerSubscriber { + result.MinRequestPerSubscriber = avgRequestPerSubscriber + } } - if result.MinRequestPerSubscriber == 0 || result.MinRequestPerSubscriber > avgRequestPerSubscriber { - result.MinRequestPerSubscriber = avgRequestPerSubscriber - } + result.AvgRequestPerSubscriberOverview = append(result.AvgRequestPerSubscriberOverview, avgRequestPerSubscriber) result.RequestOverview = append(result.RequestOverview, &monitor_dto.StatusCodeOverview{ Status2xx: item.Status2xx, @@ -179,9 +180,9 @@ func (i *imlMonitorStatisticModule) AIChartOverview(ctx context.Context, service if avgTotalPerSubscriber > result.MaxTokenPerSubscriber { result.MaxTokenPerSubscriber = avgTotalPerSubscriber } - } - if result.MinTokenPerSubscriber == 0 || result.MinTokenPerSubscriber > avgTotalPerSubscriber { - result.MinTokenPerSubscriber = avgTotalPerSubscriber + if result.MinTokenPerSubscriber == 0 || result.MinTokenPerSubscriber > avgTotalPerSubscriber { + result.MinTokenPerSubscriber = avgTotalPerSubscriber + } } result.AvgTokenPerSubscriberOverview = append(result.AvgTokenPerSubscriberOverview, &monitor_dto.TokenFloatOverview{ @@ -221,7 +222,8 @@ func (i *imlMonitorStatisticModule) AIChartOverview(ctx context.Context, service if maxTokenPerSecond < p { maxTokenPerSecond = p } - if minTokenPerSecond == 0 || minTokenPerSecond > p { + + if p > 0 && (minTokenPerSecond == 0 || minTokenPerSecond > p) { minTokenPerSecond = p } } @@ -272,11 +274,11 @@ func (i *imlMonitorStatisticModule) RestChartOverview(ctx context.Context, servi if avgRequestPerSubscriber > result.MaxRequestPerSubscriber { result.MaxRequestPerSubscriber = avgRequestPerSubscriber } + if result.MinRequestPerSubscriber == 0 || avgRequestPerSubscriber < result.MinRequestPerSubscriber { + result.MinRequestPerSubscriber = avgRequestPerSubscriber + } + } - } - if result.MinRequestPerSubscriber == 0 || avgRequestPerSubscriber < result.MinRequestPerSubscriber { - result.MinRequestPerSubscriber = avgRequestPerSubscriber - } result.AvgRequestPerSubscriberOverview = append(result.AvgRequestPerSubscriberOverview, avgRequestPerSubscriber) result.RequestOverview = append(result.RequestOverview, &monitor_dto.StatusCodeOverview{ Status2xx: item.Status2xx, @@ -300,10 +302,18 @@ func (i *imlMonitorStatisticModule) RestChartOverview(ctx context.Context, servi errChan <- err return } + for _, item := range items { + if item > result.MaxResponseTime { + result.MaxResponseTime = item + } + if result.MinResponseTime == 0 || item < result.MinResponseTime { + result.MinResponseTime = item + } + } result.AvgResponseTimeOverview = items result.AvgResponseTime = summary.Avg - result.MaxResponseTime = summary.Max - result.MinResponseTime = summary.Min + //result.MaxResponseTime = summary.Max + //result.MinResponseTime = summary.Min }() go func() { @@ -330,11 +340,12 @@ func (i *imlMonitorStatisticModule) RestChartOverview(ctx context.Context, servi if avgTrafficPerSubscriber > result.MaxTrafficPerSubscriber { result.MaxTrafficPerSubscriber = avgTrafficPerSubscriber } + if result.MinTrafficPerSubscriber == 0 || result.MinTrafficPerSubscriber > avgTrafficPerSubscriber { + result.MinTrafficPerSubscriber = avgTrafficPerSubscriber + } } - if result.MinTrafficPerSubscriber == 0 || result.MinTrafficPerSubscriber > avgTrafficPerSubscriber { - result.MinTrafficPerSubscriber = avgTrafficPerSubscriber - } + result.AvgTrafficPerSubscriberOverview = append(result.AvgTrafficPerSubscriberOverview, avgTrafficPerSubscriber) } result.TrafficTotal = summary.StatusTotal @@ -569,6 +580,10 @@ func (i *imlMonitorStatisticModule) SubscriberStatistics(ctx context.Context, in if err != nil { return nil, err } + apps = append(apps, &service.Service{ + Id: "apipark-global", + Name: "System Consumer", + }) appIds := utils.SliceToSlice(apps, func(p *service.Service) string { return p.Id }) @@ -777,18 +792,27 @@ func (i *imlMonitorStatisticModule) statisticOnApi(ctx context.Context, clusterI if err != nil { return nil, err } - var service []*service.Service + var services []*service.Service switch groupBy { case "app": - service, err = i.serviceService.AppList(ctx) + services, err = i.serviceService.AppList(ctx) + if err != nil { + return nil, err + } + services = append(services, &service.Service{ + Id: "apipark-global", + Name: "System Consumer", + }) + case "provider": - service, err = i.serviceService.ServiceList(ctx) + services, err = i.serviceService.ServiceList(ctx) + if err != nil { + return nil, err + } + default: return nil, errors.New("invalid group by") } - if err != nil { - return nil, err - } wheres, err := i.genCommonWheres(ctx, clusterId) if err != nil { @@ -806,7 +830,7 @@ func (i *imlMonitorStatisticModule) statisticOnApi(ctx context.Context, clusterI } result := make([]*monitor_dto.ServiceStatisticBasicItem, 0, len(statisticMap)) - for _, item := range service { + for _, item := range services { statisticItem := &monitor_dto.ServiceStatisticBasicItem{ Id: item.Id, @@ -872,17 +896,21 @@ func (i *imlMonitorStatisticModule) ApiStatisticsOnSubscriber(ctx context.Contex if err != nil { return nil, err } - // 根据订阅ID查询订阅的服务列表 - subscriptions, err := i.subscribeService.MySubscribeServices(ctx, subscriberId, nil) - if err != nil { - return nil, err - } - serviceIds := utils.SliceToSlice(subscriptions, func(t *subscribe.Subscribe) string { - return t.Service - }) - if len(serviceIds) < 1 { - return nil, nil + serviceIds := make([]string, 0) + if subscriberId != "apipark-global" { + // 根据订阅ID查询订阅的服务列表 + subscriptions, err := i.subscribeService.MySubscribeServices(ctx, subscriberId, nil) + if err != nil { + return nil, err + } + serviceIds = utils.SliceToSlice(subscriptions, func(t *subscribe.Subscribe) string { + return t.Service + }) + if len(serviceIds) < 1 { + return nil, nil + } } + apiInfos, err := i.apiService.ListInfoForServices(ctx, serviceIds...) if err != nil { return nil, err