Linux Rsyslog配置(日志管理服务)(RELP传输方式、TCP传输方式、UDP传输方式)

本文介绍了Linux Rsyslog作为日志管理服务的优势,包括其多线程、多种协议支持和数据库集成。讨论了UDP、TCP和RELP三种传输方式的优缺点,并提供了配置示例,推荐线上服务器使用RELP协议以确保日志传输的可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Rsyslog

可以简单的理解为syslog的超集 在老版本的Linux中 Red Hat Enterprise Linux3/4/5默认是使用的syslog作为系统的日志工具 从RHEL 6开始系统默认使用Rsyslog

 

ryslog是一个快速处理收集系统日志的程序 支持C/S架构 可通过UDP/TCP协议提供日志集中管理服务

 

为什么要使用Rsyslog

WEB服务器多的时候检查日志是一件痛苦的事情

准备弄一台统一的日志服务 将登录认证 系统日志等全部发送到这台日志服务器上

可以做监控分析 也能即时获取最新日志

rsyslog和syslog-ng都可以 系统一般默认安装前者

 

Rsyslog的特性

多线程的服务 并发性能好

可以使用udp tcp ssl tls relp 等协议完成信息收集

将日志可以存储在mysql pgsql oracle 等数据库管理系统中

强大的自定义过滤器 实现过滤日志信息中任何部分内容

自定义输出格式

 

Rsyslog日志集中管理

C/S架构 客户端将其日志上传到服务器端 通过对服务器端日志的查询 来实现对其他 客户端的日志进行集中管理

在服务器端配置

编辑配置文件vim /etc/rsyslog.conf

日志传输方式:UDP、TCP、RELP

UDP传输 但信息有损耗

基于TCP明文的传输 只在特定情况下丢失信息 并被广泛使用

RELP传输 不会丢失信息 但只在rsyslogd 3.15.0及以上版本中可用

 

UDP 传输协议

基于传统UDP协议进行远程日志传输 也是传统syslog使用的传输协议

  可靠性比较低 但性能损耗最少

在网络情况比较差 或者接收服务器压力比较高情况下 可能存在丢日志情况

 

TCP传输协议

基于传统TCP协议明文传输 需要回传进行确认 可靠性比较高

但在接收服务器宕机或者两者之间网络出问题的情况下 会出现丢日志情况

 

RELP传输协议

RELP(Reliable Event Logging Protocol)是基于TCP封装的可靠日志消息传输协议是为了解决TCP与UDP协议的缺点而在应用层实现的传输协议 也是三者之中最可靠的对于线上服务器 为了日志安全起见 建议

<think>好的,我现在需要帮助用户在CentOS 7上配置Rsyslog服务器,收集多台云主机的日志,使用TCPUDP协议,并存储到名为cloud_rsyslog的数据库中。首先,我得回忆一下相关的步骤和可能遇到的问题。 用户提到了参考引用中的几个资料,特别是引用[3]和[4],其中提到CentOS 7配置rsyslog接收日志,包括启用TCPUDP模块,以及动态生成日志文件。但用户的需求还涉及数据库存储,而引用[2]提到rsyslog支持数据库存储,可能需要配置输出到数据库。 首先,确认rsyslog的版本是否支持数据库模块。CentOS 7默认的rsyslog版本可能较旧,可能需要升级或安装额外的模块。比如,可能需要安装rsyslog-mysql或rsyslog-pgsql等包,具体取决于使用的数据库类型。用户提到的数据库名是cloud_rsyslog,可能是指MySQL/MariaDB或PostgreSQL,但用户没有明确说明,可能需要假设为MySQL。 接下来,步骤可能包括: 1. 安装并更新rsyslog,确保支持需要的模块。 2. 配置rsyslog以启用TCPUDP监听,如引用[3]中的$ModLoad imtcp和$InputTCPServerRun 514,同样需要UDP部分。 3. 配置日志接收规则,可能需要模板来定义存储格式,如动态文件名或数据库字段。 4. 安装并配置数据库,创建cloud_rsyslog数据库及相应的表结构,可能需要使用rsyslog提供的SQL脚本。 5. 配置rsyslog将日志写入数据库,可能需要设置模块ommysql或ompgsql。 6. 设置防火墙规则,开放514端口(TCPUDP)。 7. 测试配置,确保客户端日志能正确发送并存储到数据库。 需要注意的点: - 数据库模块是否已安装,如rsyslog-mysql。 - 数据库的用户权限,确保rsyslog能连接并写入。 - SELinux和防火墙设置是否正确,避免拦截连接。 - 日志模板是否与数据库表结构匹配。 - 是否启用了必要的模块,如imtcp、imudp和ommysql。 可能遇到的问题: - 如果rsyslog版本过低,可能不支持某些功能,需要添加第三方仓库(如epel)或升级。 - 数据库连接错误,比如权限问题或驱动问题。 - 日志无法写入数据库,可能由于表结构不匹配或模板配置错误。 需要检查的配置文件和指令: - /etc/rsyslog.conf 主配置文件 - /etc/rsyslog.d/ 下的自定义配置文件,比如启用数据库输出 - 使用rsyslog-doc查看数据库配置示例 - 数据库的创建和用户授权 现在,按照这些思路整理步骤,确保每个部分都正确,并参考用户提供的引用内容中的相关部分,比如启用TCP/UDP,动态日志存储等。同时,确保数据库存储部分正确配置,可能需要创建数据库表,使用rsyslog提供的SQL脚本,如通常在/usr/share/doc/rsyslog-mysql-*/目录下。 最后,测试步骤,包括发送测试日志,检查数据库是否有记录,以及处理可能出现的错误信息。</think>### 分步配置指南 #### 一、安装必要软件包 1. 更新系统并安装rsyslog及数据库模块: ```bash yum update -y yum install -y rsyslog rsyslog-mysql # 假设使用MySQL/MariaDB数据库 ``` 2. 安装数据库服务(如未安装): ```bash yum install -y mariadb-server mariadb systemctl start mariadb systemctl enable mariadb ``` #### 二、配置数据库存储 1. 创建数据库和表结构: ```bash mysql -u root -p CREATE DATABASE cloud_rsyslog; GRANT ALL ON cloud_rsyslog.* TO 'rsyslog'@'localhost' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; ``` 2. 导入rsyslog提供的表结构: ```bash mysql -u root -p cloud_rsyslog < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql # 路径可能因版本不同而变化 ``` #### 三、配置rsyslog服务端 1. 启用TCP/UDP模块: ```bash # 修改/etc/rsyslog.conf,添加以下内容 module(load="imtcp") # TCP模块 module(load="imudp") # UDP模块 input(type="imtcp" port="514") input(type="imudp" port="514") ``` 2. 配置数据库输出: ```bash # 在/etc/rsyslog.d/mysql.conf中添加 module(load="ommysql") # 加载MySQL输出模块 template(name="sql_format" type="string" string="insert into SystemEvents (Message, FromHost, SysLogTag) values ('%msg%', '%hostname%', '%syslogtag%')") # 适配表结构 action(type="ommysql" server="localhost" db="cloud_rsyslog" uid="rsyslog" pwd="your_password" template="sql_format") ``` 3. 设置日志接收规则(可选): ```bash # 在/etc/rsyslog.d/remote.conf中添加 $template DynamicFile,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log" # 引用动态路径配置[^4] *.* ?DynamicFile & stop # 停止后续处理(避免重复写入) ``` #### 四、防火墙与SELinux设置 1. 开放514端口: ```bash firewall-cmd --permanent --add-port=514/tcp firewall-cmd --permanent --add-port=514/udp firewall-cmd --reload ``` 2. 调整SELinux策略: ```bash setsebool -P rsyslog_export_db 1 semanage port -a -t syslogd_port_t -p tcp 514 semanage port -a -t syslogd_port_t -p udp 514 ``` #### 五、重启服务并验证 ```bash systemctl restart rsyslog # 测试日志发送(客户端执行) logger -n 服务器IP -P 514 -T "Test TCP message" logger -n 服务器IP -P 514 -d "Test UDP message" # 检查数据库记录 mysql -u root -p -e "SELECT * FROM cloud_rsyslog.SystemEvents LIMIT 1;" ``` ### 客户端配置示例(Linux) 1. 编辑客户端`/etc/rsyslog.conf`: ```bash *.* @@(o)服务器IP:514 # TCP发送 *.* @服务器IP:514 # UDP发送 ``` 2. 重启客户端服务: ```bash systemctl restart rsyslog ``` ### 注意事项 1. 数据库表结构需与模板字段匹配,可通过修改`sql_format`调整映射关系[^2] 2. 高并发场景建议分开TCP/UDP端口或使用RELP协议提升可靠性[^1] 3. Windows客户端需使用evtsys等工具发送syslog日志[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值