Al intentar iniciar el servicio de logstash con el puerto 514 en escucha podemos apreciar el siguiente problema.
[2022-11-29T10:30:18,202][ERROR][logstash.inputs.udp ][main][dec7ab89e06b39e0468c97b39e3a559eccb915944cc44830732c52de29f9852a] UDP listener died {:exception=>#<Errno::EACCES: Permission denied - bind(2) for "0.0.0.0" port 514>, :backtrace=>["org/jruby/ext/socket/RubyUDPSocket.java:200:in `bind'", "/usr/share/logstash/vendor/bundle/jruby/2.6.0/gems/logstash-input-udp-3.5.0/lib/logstash/inputs/udp.rb:129:in `udp_listener'", "/usr/share/logstash/vendor/bundle/jruby/2.6.0/gems/logstash-input-udp-3.5.0/lib/logstash/inputs/udp.rb:81:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:411:in `inputworker'", "/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:402:in `block in start_input'"]}
Para poder solventar este problema tenemos varias opciones: Iniciar logstrash como root, dar permisos al proceso mediante setcap para que este proceso pueda escuchar por este puerto o cambiar de puerto.
En este post vamos a ver la segunda opción, agregaremos el servicio java de logstrash para que pueda escuchar por el puerto 514
setcap CAP_NET_BIND_SERVICE=+eip /usr/share/logstash/jdk/bin/java
Intentamos iniciar el servicio
systemctl start logstrash
Al intentar levantar el servicio vemos que no inicia y apreciamos el sisuigente error en el fichero /var/log/syslog
Nov 29 10:42:38 localhost logstash[76782]: /usr/share/logstash/jdk/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
mapeamos la librería
ln -s /usr/share/logstash/jdk/lib/libjli.so /usr/lib/
Iniciamos el puerto
systemctl start logstrash
Comprobamos que iniciaron correctamente los puertos
lsof -i -n | egrep 'syslog'
rsyslogd 15918 syslog 10u IPv4 168710 0t0 UDP *:56584
java 98717 logstash 116u IPv4 860435 0t0 UDP *:syslog
En caso de querer quitar estos permisos, simplemente ejecutamos el siguiente comando:
setcap CAP_NET_BIND_SERVICE=-eip /usr/share/logstash/jdk/bin/java
:wq!