Rate Limit Status
Checks whether a tile request from a given user, tenant, or IP address would be rate limited and which rules are blocking it. Useful for answering support questions and checking how close a customer is to their quota.
| This reads the store configured under ratelimit directly, so it works against a running deployment. It only connects to the datastore the store uses, not to any providers or caches. It can’t be used with the memory store since those counters only exist inside the server process. |
Usage
Full, up-to-date usage information can be found with tilegroxy ratelimit status -h.
tilegroxy ratelimit status -hChecks whether the next tile request for each layer given with --layer
would be allowed for the given user, tenant, and IP address, without
counting a request. The layer is matched by name the same way the server
matches a request, including patterns.
Rejected requests list the rules blocking them and how long until the
request would be allowed. Pass --all to also show the rules that aren't
blocking, along with the limit after overrides and when the count resets.
A user or tenant left out is empty, the same as a request without one.
A rule needing an IP address you didn't supply is skipped with a warning.
For a rolling period, Used is the same weighted estimate the check uses.
Usage:
tilegroxy ratelimit status [flags]
Flags
| Flag | Type | Default | Description |
|---|---|---|---|
|
bool |
|
Show every rule that applies, not just the ones blocking the request |
|
bool |
|
help for status |
|
string |
The client IP address to check as. Required by rules segmented by ip |
|
|
bool |
|
Output in JSON |
|
strings |
The name(s) of the layer to check, as they’d appear in a tile request. Required |
|
|
string |
The tenant ID to check as, standing in for what authentication would supply on a real request |
|
|
string |
The user ID to check as, standing in for what authentication would supply on a real request |
Example
Using the policies from the Rate Limiting example:
tilegroxy ratelimit status -c tilegroxy.yml -l satellite --tenant acme --user alice
tilegroxy ratelimit status -c tilegroxy.yml -l satellite --tenant acme --user alice --all
In Kubernetes, the simplest way to run this is inside an existing pod, which already has the configuration and access to the store:
kubectl exec deploy/tilegroxy -- tilegroxy ratelimit status -c /tilegroxy/config/tilegroxy.yml -l satellite --tenant acme --user alice
The first command produces an output like:
satellite: rejected by premium.tenant.month, retry after 189h12m5s
Layer Rule Used Limit Remaining Resets
satellite premium.tenant.month 100000 100000 0 2026-11-01T00:00:00Z
A layer with skipratelimit set is reported as allowed and not rate limited.