MCPcopy Create free account
hub / github.com/APIParkLab/APIPark / CommonStatistics

Method CommonStatistics

module/monitor/driver/influxdb-v2/executor.go:298–366  ·  view source on GitHub ↗
(ctx context.Context, start, end time.Time, groupBy string, limit int, wheres []monitor.MonWhereItem)

Source from the content-addressed store, hash-verified

296}
297
298func (e *executor) CommonStatistics(ctx context.Context, start, end time.Time, groupBy string, limit int, wheres []monitor.MonWhereItem) (map[string]monitor.MonCommonData, error) {
299 filters := formatFilter(wheres)
300 newStartTime, _, _, bucket := getTimeIntervalAndBucket(start, end)
301
302 statisticsConf := []*flux.StatisticsFilterConf{
303 {
304 Measurement: "request",
305 AggregateFn: "sum()",
306 Fields: []string{"total", "success", "timing", "request"},
307 },
308 {
309 Measurement: "proxy",
310 AggregateFn: "sum()",
311 Fields: []string{"p_total", "p_success"},
312 },
313 {
314 Measurement: "request",
315 AggregateFn: "max()",
316 Fields: []string{"timing_max", "request_max"},
317 }, {
318 Measurement: "request",
319 AggregateFn: "min()",
320 Fields: []string{"timing_min", "request_min"},
321 },
322 }
323
324 results, err := e.fluxQuery.CommonStatistics(ctx, e.openApi, newStartTime, end, bucket, groupBy, filters, statisticsConf, limit)
325 if err != nil {
326 return nil, err
327 }
328 resultMap := make(map[string]monitor.MonCommonData)
329 for key, result := range results {
330
331 requestRate := 0.0
332 if result.Total == 0 {
333 requestRate = 0.0
334 } else {
335 requestRate = FormatFloat64(float64(result.Success)/float64(result.Total), 4)
336 }
337
338 proxyRate := 0.0
339 if result.ProxyTotal == 0 {
340 proxyRate = 0.0
341 } else {
342 proxyRate = FormatFloat64(float64(result.ProxySuccess)/float64(result.ProxyTotal), 4)
343 }
344
345 monCommonData := monitor.MonCommonData{
346 ID: key,
347 RequestTotal: result.Total,
348 RequestSuccess: result.Success,
349 RequestRate: requestRate,
350 ProxyTotal: result.ProxyTotal,
351 ProxySuccess: result.ProxySuccess,
352 ProxyRate: proxyRate,
353 StatusFail: result.Total - result.Success,
354 AvgResp: float64(result.TotalTiming) / float64(result.Total),
355 MaxResp: result.MaxTiming,

Callers

nothing calls this directly

Calls 4

formatFilterFunction · 0.85
getTimeIntervalAndBucketFunction · 0.85
FormatFloat64Function · 0.85
CommonStatisticsMethod · 0.65

Tested by

no test coverage detected