首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >日志系统:rsyslog / journald 等日志系统的配置与使用

日志系统:rsyslog / journald 等日志系统的配置与使用

原创
作者头像
智维攻城狮
发布2025-09-09 11:00:00
发布2025-09-09 11:00:00
15400
代码可运行
举报
文章被收录于专栏:Linux运维Linux运维
运行总次数:0
代码可运行

日志系统:rsyslog / journald 等日志系统的配置与使用

1️⃣ 前言

在 Linux 系统运维与开发中,日志是定位问题、审计安全事件、分析系统状态的核心依据。

在 Linux 系统环境下,rsyslog 和 journald 是两款应用最为广泛的日志系统,前者以灵活的转发机制和丰富的过滤规则著称,后者则凭借与 systemd 的深度集成和高效的二进制日志存储特性成为主流选择。本文将从日志系统的基础认知出发,详细讲解 rsyslog 与 journald 的配置方法、常用操作,并对比两者的核心差异,帮助运维人员根据实际场景选择合适的日志解决方案。

日志系统的核心作用

日志系统的核心价值体现在以下四个方面:

  • 故障排查:当系统出现服务崩溃、网络中断、权限错误等问题时,日志可提供事件发生的时间、进程 ID、错误代码等关键信息,帮助定位问题根源(例如通过 SSH 登录失败日志排查暴力破解行为)。
  • 系统监控:通过分析日志中的资源占用(如 CPU、内存使用率)、进程启停记录,可实时掌握系统运行状态,提前发现潜在风险(如频繁重启的服务可能存在内存泄漏)。
  • 安全审计:日志记录了用户登录、文件修改、权限变更等操作,可用于追溯违规行为(如某用户删除关键配置文件的操作轨迹),满足合规审计需求(如金融行业的安全日志留存要求)。
  • 性能分析:通过长期收集的日志数据(如数据库查询耗时、网络请求响应时间),可分析系统性能瓶颈,为架构优化提供数据支撑(如优化高频访问的数据库索引)。

2️⃣ 日志系统概览

特性

rsyslog

journald

日志存储

文本文件(/var/log/)

二进制日志(journal 文件)

性能

高性能,支持异步写入

内存+磁盘混合存储

过滤与路由

强大规则引擎,支持条件转发

基本过滤,需配合 journalctl

网络传输

支持 TCP/UDP、加密传输

不直接支持

兼容性

兼容 syslog 协议

systemd 环境原生支持

适用场景

集中日志、跨主机收集

本地日志管理、systemd 服务调试


3️⃣ journald 配置与使用

3.1 配置文件位置

代码语言:javascript
代码运行次数:0
运行
复制
/etc/systemd/journald.conf

常用配置项:

代码语言:javascript
代码运行次数:0
运行
复制
[Journal]
Storage=persistent       # 持久化到磁盘(/var/log/journal)
Compress=yes             # 压缩旧日志
SystemMaxUse=1G          # 限制总占用空间
MaxFileSec=1month        # 单文件最大保存时间

修改后重启:

代码语言:javascript
代码运行次数:0
运行
复制
systemctl restart systemd-journald

3.2 常用命令

代码语言:javascript
代码运行次数:0
运行
复制
# 查看所有日志
journalctl
​
# 查看指定服务日志
journalctl -u nginx
​
# 实时跟踪日志
journalctl -f
​
# 查看指定时间段
journalctl --since "2025-09-01" --until "2025-09-08"

4️⃣ rsyslog 配置与使用

4.1 配置文件位置

代码语言:javascript
代码运行次数:0
运行
复制
/etc/rsyslog.conf
/etc/rsyslog.d/*.conf

4.2 基本配置示例

代码语言:javascript
代码运行次数:0
运行
复制
# 接收本地日志
module(load="imuxsock")   # Unix socket
module(load="imklog")     # 内核日志
​
# 保存不同类型日志
authpriv.*    /var/log/secure
mail.*        -/var/log/maillog
*.info;mail.none;authpriv.none;cron.none   /var/log/messages
​
# 远程日志转发
*.* @@192.168.1.100:514   # TCP

重启服务:

代码语言:javascript
代码运行次数:0
运行
复制
systemctl restart rsyslog

5️⃣ rsyslog + journald 协同工作

在大多数 systemd 系统中,journald 会先收集日志,再转发给 rsyslog,由 rsyslog 进行持久化或转发。 配置转发:

代码语言:javascript
代码运行次数:0
运行
复制
# /etc/systemd/journald.conf
ForwardToSyslog=yes

这样可以:

  • journald 提供统一入口(包括 systemd 服务日志)
  • rsyslog 提供灵活的存储与网络转发

6️⃣ 日志优化与安全建议

  • 持久化策略:journald 默认存内存,建议开启 Storage=persistent
  • 日志轮转:rsyslog 配合 logrotate 定期压缩、删除旧日志
  • 访问控制:限制 /var/log/ 权限,防止敏感信息泄露
  • 集中化收集:使用 rsyslog + TCP/TLS 将日志集中到 ELK、Graylog 等平台
  • 过滤无用日志:减少磁盘占用与分析成本

7️⃣ 实战案例:集中收集 Nginx 日志到日志服务器

客户端(Web 服务器)配置:

代码语言:javascript
代码运行次数:0
运行
复制
# /etc/rsyslog.d/nginx.conf
module(load="imfile")
input(type="imfile"
      File="/var/log/nginx/access.log"
      Tag="nginx-access"
      Severity="info"
      Facility="local7")
​
local7.* @@logserver.example.com:514

日志服务器配置:

代码语言:javascript
代码运行次数:0
运行
复制
# /etc/rsyslog.conf
module(load="imtcp")
input(type="imtcp" port="514")
local7.* /var/log/nginx_access.log

8️⃣ 总结

  • journald:适合本地调试、统一 systemd 服务日志
  • rsyslog:适合复杂路由、集中化收集、跨主机传输
  • 两者结合可兼顾 易用性灵活性
  • 生产环境建议配合 日志分析平台(如 ELK、Grafana Loki)实现可视化与告警

日志系统是 Linux 运维的 “眼睛”,rsyslog 与 journald 作为主流方案,分别代表了传统文本日志与现代二进制日志的技术方向。rsyslog 以兼容性强、远程转发灵活的优势,在分布式日志收集场景中不可或缺;journald 则凭借结构化查询、systemd 深度集成的特性,成为单机运维的高效工具。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 日志系统:rsyslog / journald 等日志系统的配置与使用
    • 1️⃣ 前言
      • 日志系统的核心作用
    • 2️⃣ 日志系统概览
    • 3️⃣ journald 配置与使用
      • 3.1 配置文件位置
      • 3.2 常用命令
    • 4️⃣ rsyslog 配置与使用
      • 4.1 配置文件位置
      • 4.2 基本配置示例
    • 5️⃣ rsyslog + journald 协同工作
    • 6️⃣ 日志优化与安全建议
    • 7️⃣ 实战案例:集中收集 Nginx 日志到日志服务器
    • 8️⃣ 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档