Calculating requests per second, per IP address
J Carter
jordanc.carter at outlook.com
Mon Jan 1 10:57:37 UTC 2024
Hello,
On Fri, 29 Dec 2023 09:54:30 -0300
Rejaine Monteiro <rejaine at bhz.jamef.com.br> wrote:
> Hi all,
>
> I´m running Nginx community edition and need to implement rate limiting
>
> There's plenty of guides out there on how to do this, but no guides on how
> to get real values/stats from the access logs
>
>
> What I need to get from the NGINX access logs is:
>
> - Requests per minute, per IP address
>
> - Average requests per minute, derived from all IP addresses
>
> - Max requests per minute, per IP address
>
> We have a few endpoints with different functionalities and we simply cannot
> have a common rule that works for everyone.
>
> Any tips on a tool or script that could help generate this type of
> information (if possible in real time or collect this data for future
> analysis)?
>
>
> I appreciate any tips.
>
There isn't an existing bespoke tool for this (at least publicly
available).
Normally such metrics are generated by:
A) Feeding access logs into a log aggregator platform (Splunk, Loki)
B) Performing / creating custom queries on that platform, to generate
such reports.
Of note, Loki (which is AGPL/free) has a nice user experience for
this.
https://grafana.com/docs/loki/latest/query/metric_queries/
Other than log aggregators, writing a script (python, perl, bash) is
likely the fastest approach. Consider sharing it if you do, I'm sure
others will find it useful.
If you're looking for existing scripts as a starting point, there may
be similar tools for Apache that you could adapt for nginx. Both use
the 'Common Log Format' for access logs by default.
https://github.com/ajohnstone/apache-log-stats
Something like this.
More information about the nginx
mailing list