mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-11 20:59:00 +08:00
chore: rateLimit added
This commit is contained in:
parent
4e38f1dcc0
commit
fce4496214
@ -43,6 +43,12 @@ const HEART_BEAT_DURATION = 6 * time.Hour
|
||||
|
||||
// const HEART_BEAT_DURATION = 10 * time.Second
|
||||
|
||||
const RATE_LIMIT_CHECK_DURATION = 1 * time.Minute
|
||||
const RATE_LIMIT_VALUE = 60
|
||||
|
||||
// const RATE_LIMIT_CHECK_DURATION = 20 * time.Second
|
||||
// const RATE_LIMIT_VALUE = 5
|
||||
|
||||
var telemetry *Telemetry
|
||||
var once sync.Once
|
||||
|
||||
@ -69,6 +75,7 @@ type Telemetry struct {
|
||||
companyDomain string
|
||||
minRandInt int
|
||||
maxRandInt int
|
||||
rateLimits map[string]int8
|
||||
}
|
||||
|
||||
func createTelemetry() {
|
||||
@ -77,6 +84,7 @@ func createTelemetry() {
|
||||
operator: analytics.New(api_key),
|
||||
phOperator: ph.New(ph_api_key),
|
||||
ipAddress: getOutboundIP(),
|
||||
rateLimits: make(map[string]int8),
|
||||
}
|
||||
telemetry.minRandInt = 0
|
||||
telemetry.maxRandInt = int(1 / DEFAULT_SAMPLING)
|
||||
@ -87,7 +95,18 @@ func createTelemetry() {
|
||||
|
||||
telemetry.SetTelemetryEnabled(constants.IsTelemetryEnabled())
|
||||
telemetry.SendEvent(TELEMETRY_EVENT_HEART_BEAT, data)
|
||||
|
||||
ticker := time.NewTicker(HEART_BEAT_DURATION)
|
||||
rateLimitTicker := time.NewTicker(RATE_LIMIT_CHECK_DURATION)
|
||||
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case <-rateLimitTicker.C:
|
||||
telemetry.rateLimits = make(map[string]int8)
|
||||
}
|
||||
}
|
||||
}()
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
@ -199,6 +218,12 @@ func (a *Telemetry) SendEvent(event string, data map[string]interface{}) {
|
||||
return
|
||||
}
|
||||
|
||||
if a.rateLimits[event] < RATE_LIMIT_VALUE {
|
||||
a.rateLimits[event] += 1
|
||||
} else {
|
||||
return
|
||||
}
|
||||
|
||||
// zap.S().Info(data)
|
||||
properties := analytics.NewProperties()
|
||||
properties.Set("version", version.GetVersion())
|
||||
|
Loading…
x
Reference in New Issue
Block a user