rsyslog使用:omrelp:方式配置远程转发

目录

基本介绍 

UDP和TCP转发方式

RELP转发方式

配置日志服务器

配置client端

FAQ

服务器端问题

客户端问题 


基本介绍 

rsyslog有三种转发消息的方式
UDP传输:它的损耗很大,但很标准;
TCP传输:它只在某些情况下丢失消息,但大多数情况下是正常的;
RELP传输:而RELP传输不会丢失消息,但目前仅作为rsyslogd 3.15.0及以上版本的一部分可用。
要通过UDP将消息转发到另一个主机,请在主机名前面加上at符号(“@”)。要通过普通tcp转发,请在前面加上两个@号(“@@”)。要通过RELP转发,请在主机名前面加上字符串“:omrelp:”。

UDP和TCP转发方式

# 发送到udp端口
*.info  @loghost.example.com
*.*     @192.168.0.1


在上面的例子中,消息通过UDP转发到机器192.168.0.1,目标端口默认为514。由于UDP的特性,您可能会在传输过程中丢失一些消息。如果您预期流量很大,那么您可能会损失相当可观的消息数量(流量越大,消息丢失的可能性越大,情况也就越严重)。
可以使用omfwd模块的"device"选项将转发消息的套接字绑定到特定的设备。
Example:
    action(type="omfwd" Target="192.168.0.1" Device="eth0" Port=514 Protocol="udp")
在上面的例子中,消息通过UDP通过设备eth0在端口514上转发到机器192.168.0.1。在上面的例子中,如果要使用TCP可以将Protocol设置为“TCP”。对于支持VRF的Linux, device选项用于指定发送消息的VRF。

# 发送到ipv6
auth,authpriv.*         @[2409:8080:5a0a:102f:0:4::11]:514

# 发送到tcp端口
*.*     @@loghost.example.com

RELP转发方式

场景:日志服务器接收user.notice输出级别的日志,当然可以配置成任何其他级别。在日志服务器我们做了配置:user.notice  /var/log/remote-operation.log。在client端,我们通过logger命令发送日志,其默认输出级别就是user.notice,如果要输出其他级别可以使用-p参数指定。

 -p, --priority < facility.level>    将指定消息标记为此优先级。For example, -p local3.info logs the message as informational in the local3 facility. The default is user.notice.

配置完成后的验证就不赘述了。

配置日志服务器

# selinux添加端口信任
semanage port -a -t syslogd_port_t -p tcp 40888
semanage port -a -t syslogd_port_t -p udp 40888

# 安装relp支持库
yum -y install rsyslog-relp

# 编辑rsyslog配置文件
vi /etc/rsyslog.conf 
module(load="imrelp")
input(type="imrelp" port="40888")
# 不配置,日志会写入到/var/log/message中
user.notice                                             /var/log/remote-operation.log
& stop

# 重启rsyslog
systemctl restart rsyslog  

# 注意查看rsyslog守护进程的日志,确保无报错
systemctl status rsyslog
或
journalctl -f -u rsyslog

配置client端

# selinux添加端口信任
semanage port -a -t syslogd_port_t -p tcp 40888

# 编辑rsyslog配置文件
vi /etc/rsyslog.conf 
$ModLoad omrelp
user.notice                                             :omrelp:192.168.11.41:40888

# 重启rsyslog
systemctl restart rsyslog  


export PROMPT_COMMAND='user=$(whoami);user_id=$(id -ur $user);login=$(who -m | awk "{print $ 2\" \"$ NF}");msg=$(history 1 | { read x y; echo "$y"; });result_str="return code=[$?]";logger -t "[${SHELL}]" "[${msg}]" "${result_str}" "by [${user}(uid=$user_id)] from [$login]"' 

FAQ

服务器端问题

 # 问题:journalctl -f -u rsyslog输出如下错误日志:
imjournal: fopen() failed for path: '/imjournal.state.tmp': Permission denied [v8.2102.0-5.el8 try https://www.rsyslog.com/e/2013 ]
# 原因:selinux启动,40888/tcp端口没有权限
# 解决:执行semanage port -a -t syslogd_port_t -p tcp 40888

# 问题:journalctl -f -u rsyslog输出如下错误日志:
imrelp: no RELP listener defined, module can not run. [v8.2102.0-5.el8 try https://www.rsyslog.com/e/2172 ]
 activation of module imrelp failed [v8.2102.0-5.el8 try https://www.rsyslog.com/e/-3 ]
# 原因:只配置了module(load="imrelp"),没有配置input(type="imrelp" port="40888") 

# 问题:journalctl -f -u rsyslog输出如下错误日志:
could not load module 'imrelp', errors: trying to load module /usr/lib64/rsyslog/imrelp.so: /usr/lib64/rsyslog/imrelp.so: cannot open shared object file: No such file or directory [v8.2102.0-5.el8 try https://www.rsyslog.com/e/2066 ]

# 原因:缺少/usr/lib64/rsyslog/imrelp.so文件
# 解决
yum -y install rsyslog-relp

# 问题:journalctl -f -u rsyslog输出如下错误日志:
error during parsing file /etc/rsyslog.conf, on or before line 17: invalid character '0' in object definition - is there an invalid escape sequence somewhere? [v8.2102.0-5.el8 try https://www.rsyslog.com/e/2207 ]

# 原因,配置参数错误

# 问题:journalctl -f -u rsyslog输出如下错误日志:
服务器端日志:
rsyslogd[5133]: No UDP socket could successfully be initialized, some functionality may be disabled.  [v8.2102.0-5.el8]
客户端日志:
rsyslogd[13946]: librelp error 10008 forwarding to server 192.168.11.41:40888 - suspending  [v8.2102.0-101.el9 try https://www.rsyslog.com/e/2291 ]
# 原因:selinux启动,40888/udp端口没有权限
# 解决:执行semanage port -a -t syslogd_port_t -p udp 40888

客户端问题 

# 问题:journalctl -f -u rsyslog输出如下错误日志:
omrelp[192.168.11.41:40888]: error 'error connecting: 'Permission denied'', object  'conn to srvr 192.168.11.41:40888' - action may not work as intended [v8.2102.0-101.el9 try https://www.rsyslog.com/e/2353 ]
omrelp[192.168.11.41:40888]: error 'error opening connection to remote peer', object  'conn to srvr 192.168.11.41:40888' - action may not work as intended [v8.2102.0-101.el9 try https://www.rsyslog.com/e/2353 ]

解决:客户端也要放开色Linux访问端口。。。
semanage port -a -t syslogd_port_t -p tcp 40888

你可能感兴趣的:(操作系统,服务器,rsyslog,omrelp)