envoyproxy / ratelimit

Go/gRPC service designed to enable generic rate limit scenarios from different types of applications.
Apache License 2.0
2.26k stars 442 forks source link

Proposal: flag to use tags instead of metric names to distinguish rate limit configs #162

Open dweitzman opened 4 years ago

dweitzman commented 4 years ago

Checking in here before sending out code for this.

The proposal is to add a setting like 'STATS_WITH_TAGS' that changes from reporting config stats like:

ratelimit.service.rate_limit.<domain1>.<k1>_<v1>.<k2>.total_hits ratelimit.service.rate_limit.<domain1>.<k3>.total_hits

To something more like:

ratelimit.service.rate_limit.total_hits config=<domain1>.<k1>_<v1>.<k2> ratelimit.service.rate_limit.total_hits config=.<domain1>.<k1>_<v1>.<k2>

The non-tagged stats would be deprecated, and on a long-term timeframe maybe the stats reporting would migrate away from the gostats library to the opentelemetry library when it's considered sufficiently mature.

Motivations:

mattklein123 commented 4 years ago

statsd is still widely used, so I don't think we can deprecate it.

My recommendation would be to support both formats, much like Envoy does.

dweitzman commented 4 years ago

My thought for the short term is to factor out an interface for reporting stats so that all the direct dependencies on the gostats library can be isolated within one file.

Being able to replace the entire stats backend with an environment variable or by changing a single file seems useful (it'd make my life easier, at least)

mattklein123 commented 4 years ago

Being able to replace the entire stats backend with an environment variable or by changing a single file seems useful (it'd make my life easier, at least)

Sure sounds good.