导读:本期聚焦于小伙伴创作的《如何在Linux上设置系统日志集中管理》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上设置系统日志集中管理》有用,将其分享出去将是对创作者最好的鼓励。

在Linux服务器集群环境中,每台服务器都会产生大量系统日志,分散存储的日志不仅会增加排查故障的时间成本,还容易出现日志丢失的问题,设置系统日志集中管理可以有效解决这些痛点,实现所有节点日志的统一归集与管控。

集中管理的核心原理

Linux系统日志集中管理的核心是通过日志客户端和服务端的配合实现数据传输,常见的工作流程如下:

  • 客户端采集本地的系统日志,包括内核日志、服务日志、用户操作日志等
  • 客户端按照配置的规则将日志通过网络协议发送到指定的日志服务端
  • 服务端接收来自各个客户端的日志,按照规则分类存储、归档
  • 运维人员通过服务端的日志分析工具统一查询、检索所需日志

常用工具介绍

rsyslog

rsyslog是Linux系统默认的日志服务工具,支持多种日志传输协议,兼容传统syslog协议,同时具备高性能、模块化扩展的特点,是搭建集中日志管理最常用的工具。

systemd-journald

systemd-journald是systemd套件自带的日志管理组件,负责收集内核、系统服务、用户进程的日志,默认以二进制格式存储,支持结构化查询,也可以和rsyslog配合实现日志转发。

logrotate

logrotate是日志轮转工具,可以自动对日志文件进行切割、压缩、删除旧日志,避免日志占满磁盘空间,是日志管理体系中不可或缺的组成部分。

服务端配置步骤

首先在服务端服务器安装rsyslog,大部分Linux发行版默认已经安装,若未安装可以通过包管理器安装:

# CentOS/RHEL系统安装命令
yum install rsyslog -y
# Ubuntu/Debian系统安装命令
apt install rsyslog -y

安装完成后编辑rsyslog配置文件/etc/rsyslog.conf,开启UDP和TCP接收端口:

# 备份原始配置文件
cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
# 编辑配置文件,取消以下两行的注释,开启514端口的UDP和TCP监听
# 若文件中没有这两行,可以手动添加
module(load="imudp")  # 加载UDP接收模块
input(type="imudp" port="514")  # 监听514端口UDP请求
module(load="imtcp")  # 加载TCP接收模块
input(type="imtcp" port="514")  # 监听514端口TCP请求

接着添加日志存储规则,在/etc/rsyslog.d/目录下新建集中日志配置文件central.conf

# 创建日志存储目录,按客户端IP分类存储日志
$FileCreateMode 0644  # 日志文件权限
$DirCreateMode 0755  # 日志目录权限
$FileOwner root  # 日志文件所有者
$FileGroup root  # 日志文件所属组
# 所有接收到的日志按客户端IP存储到对应目录,文件名为当前日期
template(name="RemoteLogs" type="string" string="/var/log/remote/%FROMHOST-IP%/%$NOW%.log")
*.* ?RemoteLogs  # 所有日志类型都使用该模板存储
& ~  # 停止后续的日志处理,避免重复存储

配置完成后重启rsyslog服务并设置开机自启:

systemctl restart rsyslog
systemctl enable rsyslog
# 检查服务状态,确保服务正常运行
systemctl status rsyslog

同时需要开放服务端防火墙的514端口,允许客户端发送日志:

# firewalld防火墙开放端口
firewall-cmd --add-port=514/udp --permanent
firewall-cmd --add-port=514/tcp --permanent
firewall-cmd --reload
# iptables防火墙开放端口
iptables -A INPUT -p udp --dport 514 -j ACCEPT
iptables -A INPUT -p tcp --dport 514 -j ACCEPT
service iptables save

客户端配置步骤

客户端同样需要安装rsyslog服务,安装完成后编辑/etc/rsyslog.conf配置文件,添加日志发送规则:

# 在配置文件末尾添加以下内容,将日志发送到服务端的514端口
# 可以根据需要选择UDP或者TCP协议,TCP更可靠,UDP传输效率更高
# 替换为实际的服务端IP地址
*.* @@192.168.0.100:514  # 两个@代表使用TCP协议发送
# 若使用UDP协议,使用一个@即可
# *.* @192.168.0.100:514

如果需要同时转发systemd-journald的日志,还需要编辑/etc/systemd/journald.conf文件,设置转发规则:

# 将ForwardToSyslog设置为yes,开启日志转发到rsyslog
ForwardToSyslog=yes

配置完成后重启rsyslog和journald服务:

systemctl restart rsyslog
systemctl restart systemd-journald

日志轮转配置

为了避免集中存储的日志占满磁盘,需要配置logrotate对远程日志进行轮转,在/etc/logrotate.d/目录下新建remote-logs配置文件:

/var/log/remote/*/*.log {
    daily  # 每天轮转一次
    rotate 30  # 保留30天的日志
    compress  # 压缩旧日志
    delaycompress  # 延迟压缩,最近一次轮转的日志不压缩
    missingok  # 日志文件不存在时不报错
    notifempty  # 日志为空时不轮转
    create 0644 root root  # 新建日志文件的权限和所有者
    sharedscripts  # 所有日志轮转完成后执行一次脚本
    postrotate
        /bin/systemctl restart rsyslog > /dev/null 2>&1 || true
    endscript
}

验证配置效果

在客户端执行日志生成命令,测试日志是否能正常发送到服务端:

# 生成一条测试日志
logger "this is a test log for centralized log management"

在服务端查看对应的日志存储目录,确认是否存在对应的日志文件,以及文件内是否包含刚才发送的测试日志:

# 查看客户端IP对应的日志目录,替换为实际客户端IP
ls /var/log/remote/192.168.0.101/
# 查看当日日志内容
cat /var/log/remote/192.168.0.101/$(date +%Y-%m-%d).log | grep "test log"

常见问题排查

  • 若客户端日志无法发送到服务端,首先检查服务端514端口是否正常监听,使用ss -tulnp | grep 514命令查看端口状态
  • 检查防火墙规则是否生效,是否存在端口拦截的情况
  • 查看rsyslog服务日志/var/log/messages或者journalctl -u rsyslog,排查配置错误或者服务异常
  • 确认客户端配置的服务端IP和端口是否正确,协议是否匹配

rsysloglogrotatesystemd_journalsyslog_server修改时间:2026-06-22 09:04:05

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。