温馨提示×

Linux FetchLinux的日志记录功能如何设置

小樊
32
2026-01-01 05:54:56
栏目: 智能运维

Linux 日志记录功能设置指南

一 核心组件与关键配置

  • 系统日志由两大组件构成:内核与早期引导日志的systemd-journald,以及面向文本日志与网络转发的rsyslog。journald 默认将日志写入易失性的**/run/log/journal**,可通过修改**/etc/systemd/journald.confStorage=persistent将其持久化到/var/log/journal**;常用查看命令为journalctl(如:journalctl -u 服务名 -f 实时查看)。rsyslog 的配置文件通常为**/etc/rsyslog.conf/etc/rsyslog.d/.conf**,常见日志路径包括**/var/log/messages**、/var/log/secure(安全事件,如 SSH)、以及部分发行版的**/var/log/syslog**;日志选择器语法为“facility.level action”,例如将警告及以上级别写入自定义文件:.warning /var/log/warning_Log;远程日志使用“@”表示UDP,“@@”表示TCP,如:. @192.0.2.10;日志级别从低到高依次为:debug、info、notice、warning、err、crit、alert、emerg(数值通常对应 0–7,数值越小输出越详细)。

二 快速配置步骤

  • 持久化 journald 日志
    • 编辑配置文件:sudo vim /etc/systemd/journald.conf,设置:Storage=persistent
    • 创建目录并重启服务:sudo mkdir -p /var/log/journal && sudo systemctl restart systemd-journald
  • 自定义本地日志文件
    • 在 /etc/rsyslog.d/ 下新建 50-custom.conf,示例:
      • 将 authpriv 的 warning 及以上记录到安全专用文件 authpriv.warning /var/log/auth-warn.log
      • 将内核日志单独记录 kern.* /var/log/kernel.log
    • 重启 rsyslog:sudo systemctl restart rsyslog
  • 配置远程日志服务器(服务端)
    • 在 /etc/rsyslog.conf 或 /etc/rsyslog.d/ 中启用接收:
      • 模块加载(常见发行版默认已启用):module(load=“imudp”) 或 module(load=“imtcp”)
      • 监听端口:input(type=“imudp” port=“514”) 或 input(type=“imtcp” port=“514”)
    • 防火墙放行:sudo firewall-cmd --add-port=514/{udp,tcp} --permanent && sudo firewall-cmd --reload
    • 重启 rsyslog:sudo systemctl restart rsyslog
  • 配置远程日志客户端
    • 在客户端将需要的 facility.level 转发到日志服务器,例如:
      • 全部日志:. @@192.0.2.10:514
      • 仅安全相关:authpriv.* @@192.0.2.10:514
    • 重启 rsyslog:sudo systemctl restart rsyslog
  • 日志轮转与保留
    • 使用 logrotate 管理日志体积与保留期,编辑 /etc/logrotate.d/custom: /var/log/auth-warn.log { daily rotate 30 compress missingok notifempty create 0640 root root }
    • 测试与强制执行:sudo logrotate -d /etc/logrotate.d/custom(干跑),sudo logrotate -f /etc/logrotate.d/custom(强制执行)

三 验证与常用查询

  • 本地与实时查看
    • 查看系统日志:sudo tail -f /var/log/messages 或(若发行版使用)sudo tail -f /var/log/syslog
    • 查看安全日志:sudo tail -f /var/log/secure
    • 查看服务日志:sudo journalctl -u sshd.service -f
    • 查看内核日志:dmesg -w
  • 远程日志连通性测试
    • 在客户端触发一条可识别日志(如执行:logger -p authpriv.warning “test remote log”),随后在服务器检查 /var/log/auth-warn.log 是否收到
    • 使用 netstat/ss 确认 514 端口监听:ss -lunpt | grep 514 或 ss -luntp | grep 514
  • 按时间与优先级筛选
    • 例如:journalctl --since “2025-03-01 00:00:00” --until “2025-03-01 12:00:00” -p warning
    • 例如:journalctl -u nginx.service -p err -b(本次启动的错误)

四 安全与维护建议

  • 访问控制:限制对日志文件的访问权限(如 /var/log/secure 建议仅 root 可读),并审计对日志目录的修改
  • 合理级别:生产环境建议默认记录到WARNING/ERROR,开发或排障阶段可临时提升到INFO/DEBUG,问题恢复后回落,避免日志洪泛
  • 容量与保留:结合磁盘空间设置logrotate的轮转周期与保留份数,关键日志可单独配置更长的保留期与压缩
  • 远程日志可靠性:优先使用**TCP(@@)**或配置可靠传输队列,避免因网络抖动导致日志丢失
  • 变更管理:修改配置前先备份,变更后逐步验证,确保关键服务日志不受影响

0