Centos7使用rsyslog收集日志

本文介绍了如何在Centos7系统中设置rsyslog,将server02的日志通过UDP/TCP发送到server01作为日志收集服务器。详细步骤包括修改rsyslog配置文件,创建日志目录,以及在客户端通过bashrc文件记录命令行操作到日志。最终验证了配置成功。

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

虚机ip:10.0.2.15(server01)、10.0.2.16(server02)

使用server01做日志收集服务器,server02做客户端

确保两台服务器rsyslog开启并运行

默认安装,如未安装

yum install rsyslog -y

systemctl enable rsyslog

systemctl restart rsyslog

systemctl status rsyslog

服务端(server01)

vim /etc/rsyslog.conf

$ModLoad imudp

$UDPServerRun 514

$ModLoad imtcp

$InputTCPServerRun 514

将以上4行的注释取消,并添加行:

$template RemoteLogs,"/var/log/devicelog/%$YEAR%-%$MONTH%/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"

*.* ?RemoteLogs

& ~

& ~ 表示的是重定向规则,丢弃,告知rsyslog进程无需后续处理日志消息,无需写入本地日志文件

 

保存退出

mkdir -p /var/log/devicelog

systemctl restart rsyslog

客户端(server02&#

<think>好的,我现在需要帮助用户在CentOS 7上配置Rsyslog服务器,收集多台云主机的日志使用TCP和UDP协议,并存储到名为cloud_rsyslog的数据库中。首先,我得回忆一下相关的步骤和可能遇到的问题。 用户提到了参考引用中的几个资料,特别是引用[3]和[4],其中提到CentOS 7配置rsyslog接收日志,包括启用TCP和UDP模块,以及动态生成日志文件。但用户的需求还涉及数据库存储,而引用[2]提到rsyslog支持数据库存储,可能需要配置输出到数据库。 首先,确认rsyslog的版本是否支持数据库模块。CentOS 7默认的rsyslog版本可能较旧,可能需要升级或安装额外的模块。比如,可能需要安装rsyslog-mysql或rsyslog-pgsql等包,具体取决于使用的数据库类型。用户提到的数据库名是cloud_rsyslog,可能是指MySQL/MariaDB或PostgreSQL,但用户没有明确说明,可能需要假设为MySQL。 接下来,步骤可能包括: 1. 安装并更新rsyslog,确保支持需要的模块。 2. 配置rsyslog以启用TCP和UDP监听,如引用[3]中的$ModLoad imtcp和$InputTCPServerRun 514,同样需要UDP部分。 3. 配置日志接收规则,可能需要模板来定义存储格式,如动态文件名或数据库字段。 4. 安装并配置数据库,创建cloud_rsyslog数据库及相应的表结构,可能需要使用rsyslog提供的SQL脚本。 5. 配置rsyslog日志写入数据库,可能需要设置模块ommysql或ompgsql。 6. 设置防火墙规则,开放514端口(TCP和UDP)。 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、付费专栏及课程。

余额充值