# CentOS8中怎么配置Rsyslog服务器 ## 前言 Rsyslog是Linux系统中最常用的日志管理工具之一,它提供了高性能、高安全性的日志处理能力。在CentOS8中配置Rsyslog服务器可以帮助我们集中管理多台服务器的日志,便于监控和故障排查。本文将详细介绍在CentOS8系统中配置Rsyslog服务器的完整步骤。 ## 一、Rsyslog简介 ### 1.1 什么是Rsyslog Rsyslog("Rocket-fast SYStem for LOG processing")是syslog协议的增强实现,具有以下特点: - 支持TCP、UDP、TLS加密传输 - 支持MySQL、PostgreSQL等数据库存储 - 支持日志内容过滤和重定向 - 高性能,每秒可处理百万级日志消息 ### 1.2 Rsyslog基本架构
[客户端] –> (网络传输) –> [Rsyslog服务器] –> (存储/转发)
## 二、环境准备 ### 2.1 系统要求 - CentOS8操作系统 - 至少1GB可用内存 - root或sudo权限 ### 2.2 检查系统版本 ```bash cat /etc/centos-release
# 临时关闭防火墙 systemctl stop firewalld # 或开放514端口(UDP/TCP) firewall-cmd --permanent --add-port=514/tcp firewall-cmd --permanent --add-port=514/udp firewall-cmd --reload
CentOS8默认已安装Rsyslog,可通过以下命令验证:
rsyslogd -v
dnf install rsyslog
systemctl start rsyslog systemctl enable rsyslog
/etc/rsyslog.conf /etc/rsyslog.d/*.conf
编辑主配置文件:
vim /etc/rsyslog.conf
取消以下注释以启用TCP/UDP监听:
module(load="imudp") input(type="imudp" port="514") module(load="imtcp") input(type="imtcp" port="514")
在文件末尾添加:
# 接收所有设备的日志 $template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?RemoteLogs & ~
# 按IP地址分类存储 $template IpTemplate,"/var/log/%FROMHOST-IP%/%PROGRAMNAME%.log" *.* ?IpTemplate # 过滤特定程序的日志 if $programname == 'nginx' then /var/log/nginx/access.log
vim /etc/rsyslog.conf
添加以下内容(替换192.168.1.100为服务器IP):
*.* @192.168.1.100:514 # UDP传输 *.* @@192.168.1.100:514 # TCP传输
systemctl restart rsyslog
dnf install logrotate
vim /etc/logrotate.d/remote_logs
添加以下内容:
/var/log/*/*.log { daily missingok rotate 30 compress delaycompress sharedscripts postrotate /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true endscript }
openssl req -x509 -newkey rsa:2048 -keyout /etc/rsyslog.key -out /etc/rsyslog.crt -days 365 -nodes
module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1") input(type="imtcp" port="6514" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="anon")
*.* @@(o)server.example.com:6514;RSYSLOG_TLS
# 只允许特定IP访问 $AllowedSender UDP, 192.168.1.0/24 $AllowedSender TCP, 192.168.1.0/24
logger "This is a test message from client"
ls /var/log/client-hostname/ tail -f /var/log/client-hostname/root.log
systemctl status rsyslog netstat -tulnp | grep rsyslog
chmod -R 755 /var/log/ semanage fcontext -a -t var_log_t "/var/log/.*" restorecon -Rv /var/log
# 启用批量处理 $ActionQueueSize 100000 $ActionQueueFileName queue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1
dnf install rsyslog-mysql
module(load="ommysql") *.* :ommysql:DB_HOST,DB_NAME,DB_USER,DB_PASSWORD
module(load="omelasticsearch") template(name="json-template" type="list" option.json="on") { constant(value="{") constant(value="\"timestamp\":\"") property(name="timereported" dateFormat="rfc3339") constant(value="\",\"message\":\"") property(name="msg") constant(value="\",\"host\":\"") property(name="hostname") constant(value="\",\"severity\":\"") property(name="syslogseverity-text") constant(value="\"}") } action(type="omelasticsearch" server="elasticsearch.example.com" serverport="9200" template="json-template" searchIndex="syslog" bulkmode="on")
通过本文的详细指导,您应该已经成功在CentOS8上配置了Rsyslog服务器。Rsyslog的强大功能可以帮助您构建企业级的日志管理系统,结合其他工具如Logstash、Grafana等可以打造完整的监控解决方案。
命令 | 说明 |
---|---|
systemctl status rsyslog | 查看服务状态 |
rsyslogd -N1 | 测试配置文件 |
logger "test message" | 发送测试日志 |
tail -f /var/log/messages | 实时查看日志 |
”`
这篇文章共计约2100字,采用Markdown格式编写,包含了CentOS8中配置Rsyslog服务器的完整指南,从基础安装到高级配置,并提供了常见问题解决方案和进阶建议。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。