@@ -115,7 +115,6 @@ export class PrometheusManagerMetrics implements ManagerMetrics {
115115 this . prunePrometheusCache ( ) ;
116116
117117 const [
118- bandwidth ,
119118 bandwidthRange ,
120119 dataTransferredByLocation ,
121120 tunnelTimeByLocation ,
@@ -124,9 +123,6 @@ export class PrometheusManagerMetrics implements ManagerMetrics {
124123 dataTransferredByAccessKeyRange ,
125124 tunnelTimeByAccessKeyRange ,
126125 ] = await Promise . all ( [
127- this . cachedPrometheusClient . query (
128- `sum(rate(shadowsocks_data_bytes_per_location{dir=~"c<p|p>t"}[${ PROMETHEUS_RANGE_QUERY_STEP_SECONDS } s]))`
129- ) ,
130126 this . cachedPrometheusClient . queryRange (
131127 `sum(rate(shadowsocks_data_bytes_per_location{dir=~"c<p|p>t"}[${ PROMETHEUS_RANGE_QUERY_STEP_SECONDS } s]))` ,
132128 start ,
@@ -168,13 +164,15 @@ export class PrometheusManagerMetrics implements ManagerMetrics {
168164 } ,
169165 locations : [ ] ,
170166 } ;
171- for ( const result of bandwidth . result ) {
172- if ( result . value ) {
173- serverMetrics . bandwidth . current . data . bytes = parseFloat ( result . value [ 1 ] ) ;
174- serverMetrics . bandwidth . current . timestamp = result . value [ 0 ] ;
175- }
176- break ; // There should only be one result.
167+
168+ const bandwidthRangeValues = bandwidthRange . result [ 0 ] . values ?? [ ] ;
169+ const currentBandwidth = bandwidthRangeValues [ bandwidthRangeValues . length - 1 ] ;
170+
171+ if ( currentBandwidth ) {
172+ serverMetrics . bandwidth . current . data . bytes = parseFloat ( currentBandwidth [ 1 ] ) ;
173+ serverMetrics . bandwidth . current . timestamp = currentBandwidth [ 0 ] ;
177174 }
175+
178176 for ( const result of bandwidthRange . result ) {
179177 const peakDataTransferred = findPeak ( result . values ?? [ ] ) ;
180178 if ( peakDataTransferred !== null ) {
0 commit comments