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

Function getTimeIntervalAndBucket

module/monitor/driver/influxdb-v2/util.go:89–189  ·  view source on GitHub ↗

getTimeIntervalAndBucket 根据start和end来获取窗口时间间隔,窗口偏移量offset,以及使用的bucket, 查询的startTime也会格式化

(startTime, endTime time.Time)

Source from the content-addressed store, hash-verified

87
88// getTimeIntervalAndBucket 根据start和end来获取窗口时间间隔,窗口偏移量offset,以及使用的bucket, 查询的startTime也会格式化
89func getTimeIntervalAndBucket(startTime, endTime time.Time) (time.Time, string, string, string) {
90 //根据start距离现在的时长算出可使用的最小桶
91 minimumBucket := ""
92 startToNow := time.Now().Unix() - startTime.Unix()
93 if startToNow <= bucketMinuteRetention {
94 minimumBucket = bucketMinute
95 } else if startToNow <= bucketHourRetention {
96 minimumBucket = bucketHour
97 } else if startToNow <= bucketDayRetention {
98 minimumBucket = bucketDay
99 } else {
100 minimumBucket = bucketWeek
101 }
102
103 //结合可使用的最小桶,根据end-start时间间隔来得出合适的桶和趋势图时间间隔
104 diff := endTime.Unix() - startTime.Unix()
105 location, _ := time.LoadLocation(timeZone)
106 if diff <= oneHour {
107
108 switch minimumBucket {
109 case bucketMinute:
110 return startTime, "1m", "", bucketMinute
111 case bucketHour:
112 //start变成小时整
113 newStart := formatStartTimeHour(startTime, location)
114 return newStart, "1h", "", bucketHour
115 case bucketDay:
116 //start 变成一天整
117 newStart := formatStartTimeDay(startTime, location)
118 return newStart, "1d", "", bucketDay
119 case bucketWeek:
120 //将startTime往前顺延到周一
121 newStart := formatStartTimeToMonday(startTime, location)
122 return newStart, "1w", "-4d", bucketWeek
123 }
124
125 } else if diff <= oneDay {
126
127 switch minimumBucket {
128 case bucketMinute:
129 offset := ""
130 offsetTime := startTime.Minute() % 10
131 if offsetTime != 0 {
132 offset = fmt.Sprintf("%dm", offsetTime)
133 }
134 return startTime, "10m", offset, bucketMinute
135
136 case bucketHour:
137 newStart := formatStartTimeHour(startTime, location)
138 return newStart, "1h", "", bucketHour
139 case bucketDay:
140 newStart := formatStartTimeDay(startTime, location)
141 return newStart, "1d", "", bucketDay
142 case bucketWeek:
143 //将startTime往前顺延到周一
144 newStart := formatStartTimeToMonday(startTime, location)
145 return newStart, "1w", "-4d", bucketWeek
146 }

Callers 13

MessageTrendMethod · 0.85
ProxyTrendMethod · 0.85
InvokeTrendMethod · 0.85
RequestSummaryMethod · 0.85
ProxySummaryMethod · 0.85
CommonStatisticsMethod · 0.85
overviewByStatusCodeMethod · 0.85
RequestOverviewMethod · 0.85
TopNMethod · 0.85
TokenOverviewMethod · 0.85

Calls 3

formatStartTimeHourFunction · 0.85
formatStartTimeDayFunction · 0.85
formatStartTimeToMondayFunction · 0.85

Tested by

no test coverage detected