87 lines
2.5 KiB
Markdown
87 lines
2.5 KiB
Markdown
# UDP listener service input plugin
|
|
|
|
The UDP listener is a service input plugin that listens for messages on a UDP
|
|
socket and adds those messages to InfluxDB.
|
|
The plugin expects messages in the
|
|
[Telegraf Input Data Formats](https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md).
|
|
|
|
### Configuration:
|
|
|
|
This is a sample configuration for the plugin.
|
|
|
|
```toml
|
|
[[inputs.udp_listener]]
|
|
## Address and port to host UDP listener on
|
|
service_address = ":8092"
|
|
|
|
## Number of UDP messages allowed to queue up. Once filled, the
|
|
## UDP listener will start dropping packets.
|
|
allowed_pending_messages = 10000
|
|
|
|
## Data format to consume.
|
|
## Each data format has it's own unique set of configuration options, read
|
|
## more about them here:
|
|
## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
|
|
data_format = "influx"
|
|
```
|
|
|
|
## A Note on UDP OS Buffer Sizes
|
|
|
|
Some OSes (most notably, Linux) place very restricive limits on the performance
|
|
of UDP protocols. It is _highly_ recommended that you increase these OS limits to
|
|
at least 8MB before trying to run large amounts of UDP traffic to your instance.
|
|
8MB is just a recommendation, and can be adjusted higher.
|
|
|
|
### Linux
|
|
Check the current UDP/IP receive buffer limit & default by typing the following
|
|
commands:
|
|
|
|
```
|
|
sysctl net.core.rmem_max
|
|
sysctl net.core.rmem_default
|
|
```
|
|
|
|
If the values are less than 8388608 bytes you should add the following lines to
|
|
the /etc/sysctl.conf file:
|
|
|
|
```
|
|
net.core.rmem_max=8388608
|
|
net.core.rmem_default=8388608
|
|
```
|
|
|
|
Changes to /etc/sysctl.conf do not take effect until reboot.
|
|
To update the values immediately, type the following commands as root:
|
|
|
|
```
|
|
sysctl -w net.core.rmem_max=8388608
|
|
sysctl -w net.core.rmem_default=8388608
|
|
```
|
|
|
|
### BSD/Darwin
|
|
|
|
On BSD/Darwin systems you need to add about a 15% padding to the kernel limit
|
|
socket buffer. Meaning if you want an 8MB buffer (8388608 bytes) you need to set
|
|
the kernel limit to `8388608*1.15 = 9646900`. This is not documented anywhere but
|
|
happens
|
|
[in the kernel here.](https://github.com/freebsd/freebsd/blob/master/sys/kern/uipc_sockbuf.c#L63-L64)
|
|
|
|
Check the current UDP/IP buffer limit by typing the following command:
|
|
|
|
```
|
|
sysctl kern.ipc.maxsockbuf
|
|
```
|
|
|
|
If the value is less than 9646900 bytes you should add the following lines
|
|
to the /etc/sysctl.conf file (create it if necessary):
|
|
|
|
```
|
|
kern.ipc.maxsockbuf=9646900
|
|
```
|
|
|
|
Changes to /etc/sysctl.conf do not take effect until reboot.
|
|
To update the values immediately, type the following commands as root:
|
|
|
|
```
|
|
sysctl -w kern.ipc.maxsockbuf=9646900
|
|
```
|