diff --git a/src/shadowbox/server/manager_metrics.ts b/src/shadowbox/server/manager_metrics.ts index c34c9e34..8995b68d 100644 --- a/src/shadowbox/server/manager_metrics.ts +++ b/src/shadowbox/server/manager_metrics.ts @@ -28,6 +28,9 @@ export class PrometheusManagerMetrics implements ManagerMetrics { async get30DayByteTransfer(): Promise { // TODO(fortuna): Consider pre-computing this to save server's CPU. + // We measure only traffic leaving the server, since that's what DigitalOcean charges. + // TODO: Display all directions to admin + // TODO: Remove >p< once ss-libev support is gone. const result = await this.prometheusClient.query( 'sum(increase(shadowsocks_data_bytes{dir=~"ct|>p<"}[30d])) by (access_key)'); const usage = {} as {[userId: string]: number}; diff --git a/src/shadowbox/server/shared_metrics.ts b/src/shadowbox/server/shared_metrics.ts index c41f5e28..15ebd995 100644 --- a/src/shadowbox/server/shared_metrics.ts +++ b/src/shadowbox/server/shared_metrics.ts @@ -74,8 +74,10 @@ export class PrometheusUsageMetrics implements UsageMetrics { async getUsage(): Promise { const timeDeltaSecs = Math.round((Date.now() - this.resetTimeMs) / 1000); - const result = - await this.prometheusClient.query(`sum(increase(shadowsocks_data_bytes{dir=">p<"}[${ + // We measure the traffic to and from the target, since that's what we are protecting. + // TODO: remove >p< once the ss-libev support is gone. + const result = await this.prometheusClient.query( + `sum(increase(shadowsocks_data_bytes{dir=~">p<|p>t|p