Lazy loaded image
Linux 日志管理
Words 2530Read Time 7 min
2025-9-29
2025-11-13
date
related_level
slug
linux_log
type
Post
relate_date
summary
journalctl 实时查询,rsyslog/logrotate 持久化与轮换,syslog-ng 解析并转发 RFC5424 格式日志
status
Published
tags
系统管理
实用教程
category
运维管理
last_updated
Nov 13, 2025 04:49 PM
是否已更新
orginal_page
是否推荐
journalctl 实施查询 systemd 日志
部分可用选项
  • -f 持续(following)显示日志输出
  • -n 仅显示最后 N 条日志
  • -k, --dmesg 显示内核相关消息
  • -b 显示启动信息
  • -u, --unit 筛选特定 UNIT
  • __UID, __PID, __SYSTEMD_UNIT 筛选特定 UID, PID 或 UNIT
  • -p <priority> 筛选消息优先级
    • -p err 显示到 error 级别
  • --since, --until 限制日志时间范围
    • --since yesterday 从昨天起
    • --until 15:00:00 到 15 点为止
  • -e 直接跳转到日志末尾
systemd-journal 日志持久化
  • 没有 /var/log/journal 目录时存放在 /run/log/journal
vim /etc/systemd/journald.conf
  • 添加配置项以持久化存储
    • Storage=persistent
  • 其他可用配置项
    • Storage=auto
      • 目录 /var/log/journal 存在时写入对应路径
    • Storage=volatile
      • 写入到 /run/log/journal 目录
  • mkdir -p /var/log/journal && \ chown root:systemd-journal /var/log/journal && \ chmod 2755 /var/log/journal
  • systemctl restart systemd-journal-flush
  • ls -al /var/log/journal
rsyslogd 用于持久化处理系统日志的守护进程
参考资料
配置文件位置
  • /etc/rsyslog.conf
  • /etc/rsyslog.d/*
logrotate 日志文件管理,如定期轮换、压缩和删除旧的日志文件
配置文件位置
  • /etc/logrotate.conf
  • /etc/logrotate.d/
定时执行
  • /etc/cron.daily/logrotate
手动轮换
  • logrotate -f /etc/logrotate.conf
    • 全部执行
  • logrotate -f /etc/logrotate.d/nginx
    • 执行特定软件配置
systemd 配置 journal, rsysloglogrotate 管理系统日志
  • journal 负责短时间内实时查询日志,rsyslogsyslog-ng 负责持久化日志存储,logrotate 负责日志存储轮询
  • apt install rsyslog logrotate
  • mkdir -p /etc/systemd/journald.conf.d /etc/rsyslog.d /var/log/journal
vim /etc/systemd/journald.conf.d/99-custom.conf
  • MaxLevelStore=info 自身仅记录到 info 级别
  • ForwardToSyslog=yes, MaxLevelSyslog=debug 转发日志到 syslog
vim /etc/rsyslog.conf
module(load="imuxsock") 依赖 journal 中的 ForwardToSyslog=Yes
  • SysSock.RateLimit.Interval="30" SysSock.RateLimit.Burst="1000" 防范日志爆破
    • RateLimit=1000, RateLimitIntervalSec=30s 相对应
module(load="imjournal") 读取 journal 数据库,比使用 imuxsock 时慢
  • 只有在需要结构化数据时才必须使用 imjournal,否则可以直接用 imuxsock 替换 imjournal
  • -/log/to/path 代表异步写入,优化性能
  • *.emerg :omusrmsg:* 将所有 emergency 级别的日志广播给所有已登录用户的终端(如 wall 命令效果)
vim /etc/logrotate.d/rsyslog
  • 测试 rsyslog
    • rsyslogd -N 1
边缘节点通过 syslog-ng 发送 RFC5424 格式日志至远程 alloy
  • 以 openwrt 或 alpine 为例
    • apk add syslog-ng
    • opkg install syslog-ng
  • 核心流程
    如果无法从 /dev/kern 读取内核日志, 自行调整日志来源
    • d_alloy 为 alloy 接口, 如果远程采用 rsyslog 收集日志可自行调整
    • d_backup 配置本地备份到 /var/log/backup.log
    vim /etc/syslog-ng/syslog-ng.conf
    • 采用 RFC5424 日志格式
    vim /etc/syslog-ng/syslog-ng.conf
    • 采用 RFC5424 日志格式
    • 本地备份到 /var/log/backup.log
    syslog-ng 收集 openwrt smartdns 日志
    • vim /etc/syslog-ng/conf.d/smartdns.conf
    syslog-ng 收集 alpine etcd json 格式日志
    • vim /etc/syslog-ng/conf.d/etcd.conf
     
    上一篇
    Jenkins 集成 Gitea 插件和 Webhook 使用
    下一篇
    Jenkin Pipeline 语法和 Jenkinsfile

    Comments
    Loading...