Skip to content

Commit f05457f

Browse files
committed
update data
1 parent bc6875f commit f05457f

3 files changed

Lines changed: 56 additions & 34 deletions

File tree

module/monitor/driver/influxdb-v2/executor.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -425,29 +425,26 @@ func (e *executor) TrafficOverviewByStatusCode(ctx context.Context, start time.T
425425
r := new(monitor.StatusCodeOverview)
426426
if s2xxRequestLen > i {
427427
r.Status2xx = s2xxRequest[i]
428-
totalOverview.Status2xx += r.Status2xx
429428
}
430429
if s4xxRequestLen > i {
431430
r.Status4xx = s4xxRequest[i]
432-
totalOverview.Status4xx += r.Status4xx
433431
}
434432
if s5xxRequestLen > i {
435433
r.Status5xx = s5xxRequest[i]
436-
totalOverview.Status5xx += r.Status5xx
437434
}
438435
if s2xxResponseLen > i {
439436
r.Status2xx += s2xxResponse[i]
440-
totalOverview.Status2xx += r.Status2xx
441437
}
442438
if s4xxResponseLen > i {
443439
r.Status4xx += s4xxResponse[i]
444-
totalOverview.Status4xx += r.Status4xx
445440
}
446441
if s5xxResponseLen > i {
447442
r.Status5xx += s5xxResponse[i]
448-
totalOverview.Status5xx += r.Status5xx
449443
}
450444
r.StatusTotal += r.Status2xx + r.Status4xx + r.Status5xx
445+
totalOverview.Status2xx += r.Status2xx
446+
totalOverview.Status4xx += r.Status4xx
447+
totalOverview.Status5xx += r.Status5xx
451448
totalOverview.StatusTotal += r.StatusTotal
452449

453450
result = append(result, r)
@@ -686,9 +683,9 @@ func (e *executor) TokenOverview(ctx context.Context, start time.Time, end time.
686683
}
687684

688685
func (e *executor) ConsumerOverview(ctx context.Context, start time.Time, end time.Time, wheres []monitor.MonWhereItem) (int64, map[time.Time]int64, error) {
689-
newStartTime, every, _, bucket := getTimeIntervalAndBucket(start, end)
686+
newStartTime, every, offset, bucket := getTimeIntervalAndBucket(start, end)
690687
filters := formatFilter(wheres)
691688

692-
return e.fluxQuery.CommonTendencyTag(ctx, e.openApi, newStartTime, end, bucket, "request", filters, every, "app")
689+
return e.fluxQuery.CommonTendencyTag(ctx, e.openApi, newStartTime, end, bucket, "request", filters, every, offset, "app")
693690

694691
}

module/monitor/driver/influxdb-v2/flux/flux.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type IFluxQuery interface {
1515
CommonStatistics(ctx context.Context, queryApi api.QueryAPI, start, end time.Time, bucket, groupBy, filters string, statisticsConf []*StatisticsFilterConf, limit int) (map[string]*FluxStatistics, error)
1616
CommonProxyStatistics(ctx context.Context, queryApi api.QueryAPI, start, end time.Time, bucket, groupBy, filters string, statisticsConf []*StatisticsFilterConf, limit int) (map[string]*FluxStatistics, error)
1717
CommonTendency(ctx context.Context, queryApi api.QueryAPI, start, end time.Time, bucket, table, filters string, dataFields []string, every, windowOffset string, fn AggregateFn) ([]time.Time, map[string][]int64, error)
18-
CommonTendencyTag(ctx context.Context, queryApi api.QueryAPI, start, end time.Time, bucket, table, filters, every, tag string) (int64, map[time.Time]int64, error)
18+
CommonTendencyTag(ctx context.Context, queryApi api.QueryAPI, start, end time.Time, bucket, table, filters, every, offset, tag string) (int64, map[time.Time]int64, error)
1919
// CommonQueryOnce 查询只返回一条结果
2020
CommonQueryOnce(ctx context.Context, queryApi api.QueryAPI, start, end time.Time, bucket, filters string, fieldsConf *StatisticsFilterConf) (map[string]interface{}, error)
2121
CommonWarnStatistics(ctx context.Context, queryApi api.QueryAPI, start, end time.Time, bucket, groupBy, filters string, statisticsConf *StatisticsFilterConf) (map[string]*FluxWarnStatistics, error)
@@ -172,8 +172,8 @@ func (f *fluxQuery) CommonTendency(ctx context.Context, queryApi api.QueryAPI, s
172172
return dates, resultMap, nil
173173
}
174174

175-
func (f *fluxQuery) CommonTendencyTag(ctx context.Context, queryApi api.QueryAPI, start, end time.Time, bucket, table, filters, every, tag string) (int64, map[time.Time]int64, error) {
176-
query := f.assembleTendencyTagFlux(start, end, bucket, table, filters, every, tag)
175+
func (f *fluxQuery) CommonTendencyTag(ctx context.Context, queryApi api.QueryAPI, start, end time.Time, bucket, table, filters, every, offset, tag string) (int64, map[time.Time]int64, error) {
176+
query := f.assembleTendencyTagFlux(start, end, bucket, table, filters, every, offset, tag)
177177
log.Info("flux sql=", query)
178178
result, err := queryApi.Query(ctx, query)
179179
if err != nil {
@@ -184,7 +184,7 @@ func (f *fluxQuery) CommonTendencyTag(ctx context.Context, queryApi api.QueryAPI
184184
tagMap := make(map[string]struct{})
185185
defer result.Close()
186186
for result.Next() {
187-
date := result.Record().Values()["_stop"].(time.Time).In(time.Local)
187+
date := result.Record().Values()["_start"].(time.Time).In(time.Local)
188188
if _, ok := dateMap[date]; !ok {
189189
dateMap[date] = map[string]struct{}{}
190190
}
@@ -355,15 +355,19 @@ func (f *fluxQuery) assembleTendencyFlux(start, end time.Time, bucket, table, fi
355355

356356
}
357357

358-
func (f *fluxQuery) assembleTendencyTagFlux(start, end time.Time, bucket, table, filters string, every, tag string) string {
358+
func (f *fluxQuery) assembleTendencyTagFlux(start, end time.Time, bucket, table, filters string, every, offset, tag string) string {
359+
windowOffset := ""
360+
if len(offset) > 0 {
361+
windowOffset = fmt.Sprintf(", offset: %s", offset)
362+
}
359363
return fmt.Sprintf(`
360364
from(bucket: "%s")
361365
|> range(start: %d, stop: %d)
362366
|> filter(fn: (r) => r["_measurement"] == "%s")
363367
%s
364368
|> keep(columns: ["_time", "%s"])
365-
|> window(every: %s)
366-
|> distinct(column: "%s")`, bucket, start.Unix(), end.Unix(), table, filters, tag, every, tag)
369+
|> window(every: %s%s)
370+
|> distinct(column: "%s")`, bucket, start.Unix(), end.Unix(), table, filters, tag, every, windowOffset, tag)
367371
}
368372

369373
// assembleTendencyFieldCondition 封装趋势图需要的Field数据

module/monitor/iml.go

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"errors"
77
"fmt"
8+
"math"
89
"sort"
910
"sync"
1011
"time"
@@ -108,6 +109,12 @@ func (i *imlMonitorStatisticModule) AIChartOverview(ctx context.Context, service
108109
avgRequestPerSubscriber := 0.0
109110
if consumerNum != 0 {
110111
avgRequestPerSubscriber = float64(item.StatusTotal) / float64(consumerNum)
112+
if avgRequestPerSubscriber > result.MaxRequestPerSubscriber {
113+
result.MaxRequestPerSubscriber = avgRequestPerSubscriber
114+
}
115+
}
116+
if result.MinRequestPerSubscriber == 0 || result.MinRequestPerSubscriber > avgRequestPerSubscriber {
117+
result.MinRequestPerSubscriber = avgRequestPerSubscriber
111118
}
112119
result.AvgRequestPerSubscriberOverview = append(result.AvgRequestPerSubscriberOverview, avgRequestPerSubscriber)
113120
result.RequestOverview = append(result.RequestOverview, &monitor_dto.StatusCodeOverview{
@@ -169,6 +176,12 @@ func (i *imlMonitorStatisticModule) AIChartOverview(ctx context.Context, service
169176
avgTotalPerSubscriber = float64(item.TotalToken) / float64(consumerNum)
170177
avgOutputPerSubscriber = float64(item.OutputToken) / float64(consumerNum)
171178
avgInputPerSubscriber = float64(item.InputToken) / float64(consumerNum)
179+
if avgTotalPerSubscriber > result.MaxTokenPerSubscriber {
180+
result.MaxTokenPerSubscriber = avgTotalPerSubscriber
181+
}
182+
}
183+
if result.MinTokenPerSubscriber == 0 || result.MinTokenPerSubscriber > avgTotalPerSubscriber {
184+
result.MinTokenPerSubscriber = avgTotalPerSubscriber
172185
}
173186

174187
result.AvgTokenPerSubscriberOverview = append(result.AvgTokenPerSubscriberOverview, &monitor_dto.TokenFloatOverview{
@@ -178,13 +191,6 @@ func (i *imlMonitorStatisticModule) AIChartOverview(ctx context.Context, service
178191
})
179192

180193
}
181-
//avgTokenPerSubscriber := 0.0
182-
//if totalConsumerCount != 0 {
183-
// avgTokenPerSubscriber = float64(summary.TotalToken) / float64(totalConsumerCount)
184-
//}
185-
//result.AvgToken = avgTokenPerSubscriber
186-
//result.MaxToken = maxToken
187-
//result.MinToken = minToken
188194
result.TokenTotal = summary.TotalToken
189195
result.InputTokenTotal = summary.InputToken
190196
result.OutputTokenTotal = summary.OutputToken
@@ -202,12 +208,14 @@ func (i *imlMonitorStatisticModule) AIChartOverview(ctx context.Context, service
202208
if len(errs) > 0 {
203209
return nil, fmt.Errorf("errors occurred: %v", errs)
204210
}
205-
var maxTokenPerSecond, minTokenPerSecond, avgTokenPerSecond float64 = 0, 0, 0
211+
sumResponseTime := 0.0
212+
var maxTokenPerSecond, minTokenPerSecond float64 = 0, 0
213+
206214
for index, token := range totalTokens {
207215
var p float64 = 0
208216
if len(sumResponseTimes) > index && sumResponseTimes[index] > 0 {
209-
// 由于时间单位是ms,因此需要✖️1000
210-
p = float64(token) * 1000 / float64(sumResponseTimes[index])
217+
p = math.Round(float64(token)*1000*100/float64(sumResponseTimes[index])) / 100
218+
sumResponseTime += float64(sumResponseTimes[index])
211219
}
212220
result.AvgTokenOverview = append(result.AvgTokenOverview, p)
213221
if maxTokenPerSecond < p {
@@ -216,10 +224,9 @@ func (i *imlMonitorStatisticModule) AIChartOverview(ctx context.Context, service
216224
if minTokenPerSecond == 0 || minTokenPerSecond > p {
217225
minTokenPerSecond = p
218226
}
219-
avgTokenPerSecond += p
220227
}
221-
if len(sumResponseTimes) > 0 {
222-
result.AvgToken = avgTokenPerSecond / float64(len(sumResponseTimes))
228+
if sumResponseTime > 0 {
229+
result.AvgToken = math.Round(float64(result.TokenTotal)*1000*100/sumResponseTime) / 100
223230
}
224231
result.MaxToken = maxTokenPerSecond
225232
result.MinToken = minTokenPerSecond
@@ -258,12 +265,17 @@ func (i *imlMonitorStatisticModule) RestChartOverview(ctx context.Context, servi
258265
result.AvgRequestPerSubscriberOverview = make([]float64, 0, len(items))
259266
result.RequestOverview = make([]*monitor_dto.StatusCodeOverview, 0, len(items))
260267
for index, item := range items {
261-
t := date[index]
262-
log.Infof("date: %v, item: %v", t, item)
263268
consumerNum := consumerMap[date[index]]
264269
avgRequestPerSubscriber := 0.0
265270
if consumerNum != 0 {
266271
avgRequestPerSubscriber = float64(summary.StatusTotal) / float64(consumerNum)
272+
if avgRequestPerSubscriber > result.MaxRequestPerSubscriber {
273+
result.MaxRequestPerSubscriber = avgRequestPerSubscriber
274+
}
275+
276+
}
277+
if result.MinRequestPerSubscriber == 0 || avgRequestPerSubscriber < result.MinRequestPerSubscriber {
278+
result.MinRequestPerSubscriber = avgRequestPerSubscriber
267279
}
268280
result.AvgRequestPerSubscriberOverview = append(result.AvgRequestPerSubscriberOverview, avgRequestPerSubscriber)
269281
result.RequestOverview = append(result.RequestOverview, &monitor_dto.StatusCodeOverview{
@@ -272,10 +284,7 @@ func (i *imlMonitorStatisticModule) RestChartOverview(ctx context.Context, servi
272284
Status5xx: item.Status5xx,
273285
})
274286
}
275-
//avgRequestPerSubscriber := 0.0
276-
//if totalConsumerCount != 0 {
277-
// avgRequestPerSubscriber = float64(summary.StatusTotal) / float64(totalConsumerCount)
278-
//}
287+
279288
result.RequestTotal = summary.StatusTotal
280289
result.Request2xxTotal = summary.Status2xx
281290
result.Request4xxTotal = summary.Status4xx
@@ -318,6 +327,13 @@ func (i *imlMonitorStatisticModule) RestChartOverview(ctx context.Context, servi
318327
avgTrafficPerSubscriber := 0.0
319328
if consumerNum != 0 {
320329
avgTrafficPerSubscriber = float64(item.StatusTotal) / float64(consumerNum)
330+
if avgTrafficPerSubscriber > result.MaxTrafficPerSubscriber {
331+
result.MaxTrafficPerSubscriber = avgTrafficPerSubscriber
332+
}
333+
334+
}
335+
if result.MinTrafficPerSubscriber == 0 || result.MinTrafficPerSubscriber > avgTrafficPerSubscriber {
336+
result.MinTrafficPerSubscriber = avgTrafficPerSubscriber
321337
}
322338
result.AvgTrafficPerSubscriberOverview = append(result.AvgTrafficPerSubscriberOverview, avgTrafficPerSubscriber)
323339
}
@@ -425,10 +441,15 @@ func (i *imlMonitorStatisticModule) Top(ctx context.Context, serviceId string, s
425441
appMap := utils.SliceToMap(apps, func(t *service.Service) string {
426442
return t.Id
427443
})
444+
appMap["apipark-global"] = &service.Service{
445+
Id: "apipark-global",
446+
Name: "System Consumer",
447+
}
428448
for _, item := range result {
429449
if v, ok := appMap[item.Key]; ok {
430450
consumersResult = append(consumersResult, generateTopN(v.Id, v.Name, item, apiKind))
431451
}
452+
432453
}
433454
}()
434455

0 commit comments

Comments
 (0)