导读:本期聚焦于吴凌云创作的《如何搭建Fedora集中日志管理?rsyslog与Loki方案详解》,敬请观看详情。服务器数量一多,排查问题时挨个登录机器翻日志的效率就太低了。Fedora默认自带rsyslog,其实稍加配置就能把多台机器的日志统一汇聚到一台日志服务器上,配合firewalld放行端口即可完成远程收集。本文先讲清楚syslog协议、设施和优先级这些基础概念,再手把手演示Fedora下rsyslog服务端与客户端的完整配置,包括TCP与UDP两种传输方式的取舍、日志按主机分文件存储等实用技巧,最后补充日志轮转和ELK、Loki这类可视化方案的衔接思路,帮你把散落各处的日志真正管起来。

Fedora作为一款更新激进、软件包新颖的发行版,默认已经集成了rsyslog(或者在新版本中以systemd-journald为主的日志体系),这让搭建集中日志管理变得相对容易。所谓集中日志管理,就是把多台服务器、网络设备上的日志统一发送到一台专门的日志服务器,运维人员只需在这一台机器上检索、分析,就能掌握全局状况。本文将从日志协议基础讲起,给出Federa下完整的rsyslog服务端与客户端配置,并延伸到日志轮转与大文件检索的优化方案。

如何搭建Fedora集中日志管理?rsyslog与Loki方案详解

一、先搞懂syslog的设施与优先级

集中日志的核心是syslog协议。一条syslog消息由两部分关键信息组成:facility(设施)和severity(优先级)。facility标识日志来源的类型,比如kernel(内核消息)、auth(认证相关)、mail(邮件系统)、cron(定时任务)等;severity则表示严重程度,从debug、info、notice、warning一直到err、crit、alert、emerg。两者组合成一个数值,rsyslog通过这个数值决定日志往哪里写。

在rsyslog的配置文件中,你会经常看到类似*.* @@log-server:514这样的规则。开头的*.*表示匹配所有设施、所有优先级;一个@表示用UDP协议传输,两个@@表示用TCP协议传输。理解了这一层语法,后面的配置就只是按需组合了。

另外需要区分的是,Fedora上systemd-journald与rsyslog是配合关系。journald负责接收systemd服务日志并写入二进制journal文件,rsyslog则可以读取这些内容转存为传统文本日志或转发到远端。也就是说,即使你不装任何额外软件,日志链路已经在工作了,我们要做的只是把它延伸到网络上。

二、Fedora下搭建rsyslog日志服务器

假设我们有一台机器作为日志服务器,IP为192.168.1.10。首先确认rsyslog已安装并运行:

sudo dnf install rsyslog -y
sudo systemctl enable --now rsyslog</code>

接着编辑/etc/rsyslog.conf,开启远程接收模块。找到以下两行并取消注释,它们分别对应UDP和TCP的接收:

# 提供 UDP 514 端口接收
module(load="imudp")
input(type="imudp" port="514")

# 提供 TCP 514 端口接收,可靠性更高
module(load="imtcp")
input(type="imtcp" port="514")

然后配置日志按客户端主机名分文件存放。新建/etc/rsyslog.d/remote.conf,写入如下规则:

$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
# 防止远端日志重复写入本地文件
& stop

这段配置使用了模板语法,把每台客户端的日志按主机名建目录、按程序名分文件。& stop的意思是匹配到远端日志后不再往下继续匹配本地规则,避免日志重复落盘。改完配置后用rsyslogd -N1做语法检查,再重启服务。

别忘了防火墙。Fedora默认使用firewalld,需要放行对应端口:

sudo firewall-cmd --permanent --add-port=514/tcp
sudo firewall-cmd --permanent --add-port=514/udp
sudo firewall-cmd --reload

关于TCP与UDP的选择:UDP开销小、速度快,但丢包不重传,适合内网低价值日志;TCP保证送达,适合审计类、安全类日志。生产环境建议两者都开,按日志类型分流使用。

三、客户端配置与日志轮转

客户端的配置非常简单,在每台Fedora客户端的/etc/rsyslog.d/目录下新建一个转发规则即可:

# 将所有日志通过 TCP 转发到日志服务器
*.* @@192.168.1.10:514

# 也可以只转发认证日志,用 UDP
authpriv.* @192.168.1.10:514

重启客户端rsyslog后,在服务器的/var/log/remote/目录下就能看到按主机名归档的日志文件了。这里有个细节值得注意:如果客户端主机名重复(比如批量装机时都叫localhost),日志会混在一起。建议提前规划主机名,或在客户端配置$LocalHostName web-01显式指定。

集中收集之后,单机日志量会成倍增长,日志轮转必须跟上。rsyslog自带的轮转可以借助logrotate完成,新建/etc/logrotate.d/remote-logs

/var/log/remote/*/*.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    postrotate
        /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
    endscript
}

这份策略是每天轮转一次、保留14天、压缩历史文件,并通过HUP信号通知rsyslog重新打开文件句柄。保留天数要根据磁盘容量和合规要求调整,审计场景可能需要保留180天以上,此时建议把历史日志归档到独立存储。

四、从文本日志到可检索的日志平台

纯文本日志用grep、awk检索在小规模下够用,但当机器超过几十台、日志量达到每天几个GB时,效率会成为瓶颈。此时有两个主流方向:一是ELK体系(Elasticsearch加Logstash或Filebeat加Kibana),功能全面但资源消耗大;二是Grafana Loki,轻量得多,它只索引标签不索引全文,配合Promtail采集,非常适合中小团队。

rsyslog可以直接对接这些后端,例如通过omelasticsearch模块把日志直接写入Elasticsearch,或者转发给Loki的指定端口。这样客户端完全不需要改动,只在日志服务器上加一层输出即可平滑升级,这也是rsyslog方案的最大优势:链路上每一环都可以独立替换。

总结一下,Fedora的集中日志管理核心思路是利用自带的rsyslog,服务端开imtcp/imudp模块接收并按模板分文件,客户端一行规则转发,配合logrotate控制磁盘占用,最后视规模决定是否上Loki或ELK做检索层。整个过程不需要引入复杂中间件,就能把散落各处的日志收拢到一处,排查问题时再也不用逐台登录翻找了。

Fedora日志管理rsyslog集中日志修改时间:2026-09-03 06:42:32

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