rsyslog的三种传输协议

rsyslog的三种传输协议

 

debian rsyslog 传输协议

简介

rsyslog 可以理解为多线程增强版的syslog。 
在syslog的基础上扩展了很多其他功能,如数据库支持(Mysql、PostgreSQL、Oracle等)、日志内容筛选、定义日志格式模板等。

目前大多数linux发行版默认也是使用rsyslog进行日志记录。这里主要介绍rsyslog的几种传输协议。


协议

rsyslog提供了三种远程传输协议,分别是:

  • UDP 传输协议 
    基于传统UDP协议进行远程日志传输,也是传统syslog使用的传输协议; 
    可靠性比较低,但性能损耗最少, 在网络情况比较差, 
    或者接收服务器压力比较高情况下,可能存在丢日志情况。 
    在对日志完整性要求不是很高,在可靠的局域网环境下可以使用。

  • TCP 传输协议 
    基于传统TCP协议明文传输,需要回传进行确认,可靠性比较高; 
    但在接收服务器宕机或者两者之间网络出问题的情况下,会出现丢日志情况。 
    这种协议相比于UDP在可靠性方面已经好很多,并且rsyslog原生支持,配置简单, 
    同时针对可能丢日志情况,可以进行额外配置提高可靠性,因此使用比较广。

  • RELP 传输协议 
    RELP(Reliable Event Logging Protocol)是基于TCP封装的可靠日志消息传输协议; 
    是为了解决TCP 与 UDP 协议的缺点而在应用层实现的传输协议,也是三者之中最可靠的。 
    需要多安装一个包rsyslog-relp以支持该协议。

对于线上服务器,为了日志安全起见,建议使用还是使用 RELP 协议进行传输。 
以下是man手册中对RELP的描述:

ManPage 
RELP can be used instead of UDP or plain TCP syslog to provide reliable delivery of syslog messages. Please note that plain TCP syslog does NOT provide truly reliable delivery, with it messages may be lost when there is a connection problem or the server shuts down. RELP prevents message loss in those cases.

关于RELP的更多详细资料,可以参考一下链接:


配置

rsyslog的主配置文件是:/etc/rsyslog.conf 
但通常并不会去修改主配置文件,而是在include目录中创建自定义的配置文件, 
当加载主配置文件后,会自动到加载其他子配置文件(/etc/rsyslog.d/)。

因此,对于自定义的配置,一般都是在/etc/rsyslog.d目录下创建新的配置文件, 
关联不大的配置内容尽量独立配置文件,方便管理。

下面介绍三种协议一些简单的配置


UDP传输配置

在服务端创建配置文件:/etc/rsyslog.d/udp.conf, 
并按照以下内容进行配置,完成后重启rsyslog(/etc/init.d/rsyslog restart) 
另外需要确保iptables没有封禁相应端口。

# server configure
$ModLoad imudp # 加载模块
$UDPServerRun 10514 # 指定监听端口
$AllowedSender UDP, 10.0.0.0/16 # 设置白名单

# 根据客户端IP存放到不同目录下,以日期命名文件
$template location,/data/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log
# 自定义日志格式
$template uformat,"%fromhost-ip% %msg%\n"

# 把非本地传输的日志按照指定的文件路径及格式保存
:fromhost-ip, !isequal, "127.0.0.1" -?location;uformat
# & 表示已经匹配处理的内容,~ 表示不再进行其他处理
& ~

在客户端创建配置文件:/etc/rsyslog.d/udp_send.conf

# client configure
*.* @10.0.0.1:10514 # 表示所有日志都发送到指定server

配置完成后,需要重启rsyslog,然后就可以到服务端检查日志是否发送成功。


TCP传输配置

服务端配置:/etc/rsyslog.d/tcp.conf

# server configure
$ModLoad imtcp # 加载模块
$UDPServerRun 20514 # 指定监听端口
$AllowedSender TCP, 10.0.0.0/16 # 设置白名单

# 根据客户端IP存放到不同目录下,以日期命名文件
$template location,/data/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log
# 自定义日志格式
$template uformat,"%fromhost-ip% %msg%\n"

# 把非本地传输的日志按照指定的文件路径及格式保存
:fromhost-ip, !isequal, "127.0.0.1" -?location;uformat
# & 表示已经匹配处理的内容,~ 表示不再进行其他处理
& ~

客户端配置:/etc/rsyslog.d/tcp_send.conf

# client configure
*.* @@10.0.0.1:20514 # 表示所有日志都发送到指定server

配置完分别在服务端及客户端上重启rsyslog服务即可:

/etc/init.d/rsyslog restart

关于TCP与UDP传输的对比,官网上的推荐:Using the syslog receiver module


RELP传输配置

使用RELP协议需要rsyslog-relp包,需要在服务端及客户端都安装:

apt-get update
apt-get -y install rsyslog-relp

接下来就对服务端进行配置(/etc/rsyslog.d/relp.conf

# server configure
$ModLoad imrelp # 加载模块
$UDPServerRun 30514 # 指定监听端口

# 根据客户端IP存放到不同目录下,以日期命名文件
$template location,/data/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log
# 自定义日志格式
$template uformat,"%fromhost-ip% %msg%\n"

# 把非本地传输的日志按照指定的文件路径及格式保存
:fromhost-ip, !isequal, "127.0.0.1" -?location;uformat
# & 表示已经匹配处理的内容,~ 表示不再进行其他处理
& ~

客户端配置(/etc/rsyslog.d/relp_send.conf

# client configure
*.* :omrelp:10.0.0.1:30514 # 表示所有日志都发送到指定serve

配置完分别在服务端及客户端上重启rsyslog服务即可:

/etc/init.d/rsyslog restart
### 回答1: Linux rsyslog是一种高性能的日志管理工具,它可以收集、处理和转发各种类型的日志数据。它支持多种日志协议和格式,包括syslog、JSON、XML等。rsyslog还提供了强大的过滤、分析和转换功能,可以帮助管理员更好地管理和监控系统日志。同时,rsyslog还支持多种输出方式,包括文件、数据库、网络等,可以满足不同场景下的需求。 ### 回答2: Linux rsyslog是一种高性能的系统日志管理工具,可以用于收集、存储和分析各种系统事件和错误消息。 rsyslog的主要功能包括:日志的收集和传输、过滤和处理、存储和归档、以及实时监控和告警。 在日志的收集和传输方面,rsyslog支持多种协议,比如UDP、TCP、TLS和REL TCP等,可以从远程服务器、网络设备和应用程序等多个来源收集日志,并将其传输到指定的目的地。 rsyslog的过滤和处理功能很强大,可以根据配置文件中定义的规则,对收集到的日志进行过滤、分类和处理。这些规则可以根据日志的来源、内容和级别等进行设置,以实现针对性的日志管理。 存储和归档是rsyslog的重要功能之一,它可以将收集到的日志按照指定的方式和格式保存到本地文件或者远程存储服务器上。同时,rsyslog还支持归档和压缩等操作,帮助用户有效管理和存储大量的日志数据。 实时监控和告警是rsyslog的关键特性之一,通过实时监控日志的产生和变化,用户可以迅速发现系统中的异常情况,并及时采取措施。同时,rsyslog还支持通过邮件、短信或者其他方式发送告警通知,及时通知用户发生的重要事件和错误。 总之,Linux rsyslog是一款功能强大的系统日志管理工具,其灵活的配置和高性能的特性,使得它成为了广泛应用于各种Linux环境中的首选工具。 ### 回答3: Linux rsyslog是一种强大而灵活的系统日志管理工具。它是Linux操作系统中的标准日志处理程序,可用于收集、处理和存储系统日志。rsyslog支持各种日志协议,包括Syslog、TCP、UDP和TLS,并支持日志的过滤、转发和存储。 rsyslog的功能非常丰富,使管理员能够对日志进行详细的配置和控制。它可以实现日志的中央化管理,通过配置服务器和客户端,将分散在多台计算机上的日志集中到一个地方进行集中存储和分析。这对于大型网络环境下的集中日志管理非常有用。 rsyslog还支持灵活的日志过滤功能,可以根据不同的条件过滤和筛选日志。管理员可以根据需求设置过滤规则,将特定类型或级别的日志集中处理或存储,从而提高系统安全性和效率。 此外,rsyslog还支持插件和模块的扩展。它可以通过插件来支持各种日志格式和处理方式,例如JSON、数据库、邮件等。管理员可以根据自己的需求选择适合的插件来实现定制化的日志处理功能。 总之,rsyslog是一个功能强大且高度可配置的系统日志管理工具,通过它,管理员可以方便地收集、处理和存储系统日志。它的灵活性和可扩展性使其成为Linux系统中不可或缺的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值