使用rsyslog将多个服务的日志合并

一、前言

最近想把多个服务的日志集中到一个日志文件里,选中了 rsyslog

二、过程

我这里有两个日志文件目录分别为

/www/wwwroot/guowang/jar
/www/wwwroot/guowang8183/jar

1、编写配置文件

vim /etc/rsyslog.d/guowang-all.conf

加入如下配置

module(                    # 开启 rsyslog 的「文件监控」功能,让它能读取普通文本日志
    load="imfile"          # input file 的缩写,加载文件读取模块
    Mode="polling"         # 轮询,每隔一小段时间主动去看一下文件有没有新内容
    PollingInterval="1"    # 这里是每秒一次
)

# 对应服务的 system.log
# guowang
input(
    type="imfile"
    File="/www/wwwroot/guowang/jar/system.log"
    Tag="guowang"  # 服务名,为了看清哪条日志来自哪个服务
    Facility="local0"  # rsyslog 给自定义业务用的
    PersistStateInterval="1"  # 实时保存读取位置,重启不失效
    # readFromLast="on"  # 重启后从最后一行开始读,不重复、不丢失,我这里可能是系统问题,不能加这个
)

# guowang8183
input(
    type="imfile"
    File="/www/wwwroot/guowang8183/jar/system.log"
    Tag="guowang8183"
    Facility="local1"
    PersistStateInterval="1"
    # readFromLast="on"
)

# 统一输出
local0.*;local1.* /var/log/guowang-all.log  # 没有特殊要求就放到 /var/log 目录下

在这里插入图片描述

保存退出

2 、开放权限

给 rsyslog 开放日志目录权限

chmod -R 755 /www/wwwroot/guowang/
chmod -R 755 /www/wwwroot/guowang8183/

在这里插入图片描述

给 system.log 读权限

chmod 644 /www/wwwroot/guowang/jar/system.log
chmod 644 /www/wwwroot/guowang8183/jar/system.log

在这里插入图片描述

3、重启 rsyslog

停止

systemctl stop rsyslog

在这里插入图片描述

启动

systemctl start rsyslog

在这里插入图片描述

或者直接使用重启命令

systemctl restart rsyslog

在这里插入图片描述

可能会没有生成合并文件,这里手动创建一下

touch /var/log/guowang-all.log

在这里插入图片描述

4、按天切割配置(logrotate)

vim /etc/logrotate.d/guowang-all

加入如下配置文件

/var/log/guowang-all.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0644 root root
    sharedscripts
    postrotate
        systemctl restart rsyslog > /dev/null 2>&1 || true
    endscript
}

这是带注释的

/var/log/guowang-all.log {                                    # 要切割的文件路径
    daily                                                     # 每天切割,每天凌晨(默认 3:00~4:00)自动把今天的日志归档
    missingok                                                 # 日志文件不存在也不报错,如果文件不小心删了,logrotate 不会抛出错误信息,更稳定、不扰民
    rotate 7                                                  # 保留最近 7 天
    compress                                                  # 自动压缩老日志,压缩后体积只有原来的 10%~20%
    delaycompress                                             # 延迟一天再压缩,避免正在写入的日志被压缩导致异常,最安全的写法
    notifempty                                                # 空日志不切割,今天没日志 → 不生成空文件,干净、不浪费
    create 0644 root root                                     # 切割后自动新建日志文件,权限:0644(可读可写,安全),归属:root 用户 + root 组,保证 rsyslog 能继续写入日志
    sharedscripts                                             # 所有日志切割完,统一执行一次脚本,配合下面的重启命令使用
    postrotate                                                # 切割完日志后,重启一下 rsyslog,让 rsyslog 重新写入新的日志文件,下面三行
        systemctl restart rsyslog > /dev/null 2>&1 || true    # > /dev/null 2>&1 || true:不输出错误、不抛异常
    endscript
}

保存退出,然后重启一下 rsyslog

systemctl restart rsyslog

在这里插入图片描述

隔天观察 /var/log 目录

在这里插入图片描述

可以看到日志已经切分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值