rate-limit()
This section describes rate-limit() filter function in syslog-ng OSE.
Synopsis: rate-limit(template(${HOST}) rate(5000))
Description: Limits messages rate based on arbitrary keys in each message. The key will be resolved using the template() option. Each resolution will be allowed to have the number of messages each second, set by the rate() option. For example if template(${HOST}) and rate(5000) are set, and there are 2 hosts sending messages to syslog-ng OSE, a total of 10000 messages will be allowed by the rate-limit() filter, 5000 from the first and 5000 from the second host. If template() was not set instead, then 5000 messages would be allowed each second, regardless of their content.
NOTE: In syslog-ng OSE version 3.35 the rate-limit() filter was called throttle(). In syslog-ng OSE version 3.36 it got renamed to rate-limit(), but throttle() is still available for backward compatibility.
NOTE: Like every other filter, messages unmatched (outside of the rate limit) by the rate-limit() filter are dropped by default. Also, as every filter can be used in channels or if conditions, the messages unmatched can be caught and handled, like sent to a different destination, and so on.
Example: Using the rate-limit() filter
The following example depicts the scenario described in the description part of this section.
filter f_rate_limit {
rate-limit(
template("${HOST}")
rate(5000)
);
};
Options of rate-limit() filter
The rate-limit() filter has the following options.
rate()
Type: | number |
Default: | N/A |
Mandatory: | yes |
Description: The number of messages for each unique macro resolution, that will be let through (matched) by the filter each second.
template()
Type: | template |
Default: | empty string |
Description: The resolved template, that will be used to create unique rate-limit token buckets.