Refactor disabling the stats logger

Have Snowflake proxy periodically collect throughput stats even if the
stats logger is disabled so that it can be handled by the prometheus
metrics.
This commit is contained in:
Cecylia Bocovich 2023-10-31 13:15:52 -04:00
parent 22d9381d9d
commit 648609dbea
No known key found for this signature in database
GPG key ID: 009DE379FD9B7B90
3 changed files with 17 additions and 14 deletions

View file

@ -9,17 +9,25 @@ import (
"gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/task" "gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/task"
) )
func NewProxyEventLogger(output io.Writer) event.SnowflakeEventReceiver { func NewProxyEventLogger(output io.Writer, disableStats bool) event.SnowflakeEventReceiver {
logger := log.New(output, "", log.LstdFlags|log.LUTC) logger := log.New(output, "", log.LstdFlags|log.LUTC)
return &proxyEventLogger{logger: logger} return &proxyEventLogger{logger: logger, disableStats: disableStats}
} }
type proxyEventLogger struct { type proxyEventLogger struct {
logger *log.Logger logger *log.Logger
disableStats bool
} }
func (p *proxyEventLogger) OnNewSnowflakeEvent(e event.SnowflakeEvent) { func (p *proxyEventLogger) OnNewSnowflakeEvent(e event.SnowflakeEvent) {
switch e.(type) {
case event.EventOnProxyStats:
if !p.disableStats {
p.logger.Println(e.String()) p.logger.Println(e.String())
}
default:
p.logger.Println(e.String())
}
} }
type periodicProxyStats struct { type periodicProxyStats struct {

View file

@ -140,8 +140,6 @@ type SnowflakeProxy struct {
EventDispatcher event.SnowflakeEventDispatcher EventDispatcher event.SnowflakeEventDispatcher
shutdown chan struct{} shutdown chan struct{}
// DisableStatsLogger indicates whether proxy stats will be logged periodically
DisableStatsLogger bool
// SummaryInterval is the time interval at which proxy stats will be logged // SummaryInterval is the time interval at which proxy stats will be logged
SummaryInterval time.Duration SummaryInterval time.Duration
@ -658,11 +656,9 @@ func (sf *SnowflakeProxy) Start() error {
sf.EventDispatcher = event.NewSnowflakeEventDispatcher() sf.EventDispatcher = event.NewSnowflakeEventDispatcher()
} }
if !sf.DisableStatsLogger {
sf.bytesLogger = newBytesSyncLogger() sf.bytesLogger = newBytesSyncLogger()
sf.periodicProxyStats = newPeriodicProxyStats(sf.SummaryInterval, sf.EventDispatcher, sf.bytesLogger) sf.periodicProxyStats = newPeriodicProxyStats(sf.SummaryInterval, sf.EventDispatcher, sf.bytesLogger)
sf.EventDispatcher.AddSnowflakeEventListener(sf.periodicProxyStats) sf.EventDispatcher.AddSnowflakeEventListener(sf.periodicProxyStats)
}
broker, err = newSignalingServer(sf.BrokerURL, sf.KeepLocalAddresses) broker, err = newSignalingServer(sf.BrokerURL, sf.KeepLocalAddresses)
if err != nil { if err != nil {

View file

@ -97,7 +97,6 @@ func main() {
RelayDomainNamePattern: *allowedRelayHostNamePattern, RelayDomainNamePattern: *allowedRelayHostNamePattern,
AllowNonTLSRelay: *allowNonTLSRelay, AllowNonTLSRelay: *allowNonTLSRelay,
DisableStatsLogger: *disableStatsLogger,
SummaryInterval: *summaryInterval, SummaryInterval: *summaryInterval,
} }
@ -127,7 +126,7 @@ func main() {
log.SetOutput(&safelog.LogScrubber{Output: logOutput}) log.SetOutput(&safelog.LogScrubber{Output: logOutput})
} }
proxyEventLogger := sf.NewProxyEventLogger(eventlogOutput) proxyEventLogger := sf.NewProxyEventLogger(eventlogOutput, *disableStatsLogger)
eventLogger.AddSnowflakeEventListener(proxyEventLogger) eventLogger.AddSnowflakeEventListener(proxyEventLogger)
if *enableMetrics { if *enableMetrics {