Linux 日志相关服务(rsync、rsyslog、logrotate)的搭建和使用

# 1. rsync

rsync 是 Linux/Unix 系统下广泛使用的高效文件同步工具,支持:

  • 增量备份
  • 断点续传
  • 权限保持
  • 压缩传输

# 搭建 rsync 服务

# 第一步:安装 rsync 软件(通常系统已预装, 若没有安装执行以下命令)

apt-get install rsync # Debian/Ubuntu

yum install rsync  / dnf install rsync # RHEL/CentOS

# 第二步:创建并编辑配置文件(配置文件:/etc/rsyncd.conf)

# 全局配置

uid = nobody  # 运行 rsync 进程的用户,通常为 nobody

gid = nobody  # 运行 rsync 进程的用户组,通常为 nobody

use chroot = yes  # 是否锁定在模块目录(增强安全性)

max connections = 10  # 最大并发连接数

pid file = /var/run/rsyncd.pid  # pid 文件路径

lock file = /var/run/rsync.lock  # 锁文件路径

log file = /var/log/rsyncd.log  # 服务运行日志路径

# 模块配置

[backup]  # 定义一个共享模块

path = /data/backup  # 共享模块对应的路径

comment = Backup Directory  # 模块描述

read only = no  # 是否为只读  

auth users = backupuser  # 允许访问的用户(多个用户用逗号分隔)

secrets file = /etc/rsyncd.secrets  # 密码文件路径

hosts allow = 192.168.1.0/24  # 允许访问的 IP 或网段

# 第三步:配置认证文件(需配置文件中指定 secrets file 参数)

echo "backup-user:backup-password" | tee /etc/rsyncd.secrets

chmod 600 /etc/rsyncd.secrets

# 第四步:启动服务

systemctl start rsync

systemctl enable rsync

# 客户端验证

echo "backup-password" > ./rsync.pass

chmod 600 ./rsync.pass

echo "rsync test" > ./test-file

rsync -av --password-file=./rsync.pass test-file rsync://backup-user@backup-host/backup/

# rsync 两种传输模式的对比

 

# 2. rsyslog

rsyslog 是 Linux 系统日志服务,提供:

  • 本地日志收集
  • 远程日志接收
  • 日志过滤和分类
  • 高性能日志处理

# 搭建 rsyslog 服务

# 第一步:安装 rsyslog 软件(通常系统已预装, 若没有安装执行以下命令)

apt-get install rsyslog # Debian/Ubuntu

yum install rsyslog / dnf install rsyslog # RHEL/CentOS

# 第二步:编辑配置文件 (主配置文件:/etc/rsyslog.conf  子配置文件:/etc/rsyslog.d/*.conf )

# 模块加载

module(load="imuxsock") # 本地系统日志

module(load="imklog") # 内核日志

module(load="imudp") # UDP接收

module(load="imtcp") # TCP接收

# 全局设置

global(
    workDirectory="/var/lib/rsyslog"
)

# 规则集

*.info;mail.none;authpriv.none;cron.none /var/log/messages

authpriv.* /var/log/secure

mail.* -/var/log/maillog

cron.* /var/log/cron

*.emerg :omusrmsg:*

local7.* /var/log/boot.log

# 远程接收配置

input(type="imudp" port="514")  # 监听 UDP 514端口

input(type="imtcp" port="514")  # 监听 TCP 514端口

# 模板定义

template(name="RemoteLogs" type="string" string="/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")

# 远程日志存储

if $fromhost-ip != '127.0.0.1' then {

    action(type="omfile" dynaFile="RemoteLogs")

}

 

# 第三步:创建远程目录

mkdir -p /var/log/remote

# 第四步:启动服务

systemctl restart rsyslog

systemctl enable rsyslog

# 发送日志并验证

logger "This is a test log message"(执行该命令后也可通过 dmesg 查看日志信息)

# 查看日志

tail -f /var/log/messages

journalctl -u rsyslog

# 日志级别

 

 

 

# 3. logrotate

logrotate 用于自动轮转、压缩和删除日志文件,防止日志文件过大。功能包括:

  • 按时间或大小轮转
  • 日志压缩
  • 旧日志定期删除
  • 轮转后执行自定义命令

#  搭建 logrotate 服务

#  第一步:安装 logrotate 软件(通常系统已预装, 若没有安装执行以下命令)

apt-get install logrotate # Debian/Ubuntu

yum install logrotate / dnf install logrotate # RHEL/CentOS

# 第二步:创建并编辑配置文件(主配置文件:/etc/logrotate.conf  子配置文件: /etc/logrotate.d/*)

# 全局设置

weekly  # 轮转周期(常用值有 daily/weekly/monthly )

rotate N  # 保留 N 个旧日志

create  # 轮转后立即创建一个新的空日志文件,替代原始文件。某些服务(如 Nginx)要求日志文件始终存在,否则会报错

dateext  # 使用日期后缀命名旧日志文件

compress  # 使用 gzip 压缩旧日志文件(文件扩展名为 .gz)

delaycompress  # 延迟压缩,本次轮转的日志在下一次轮转时才压缩。某些服务(如 MySQL)可能需要在日志轮转后继续写入旧文件,延迟压缩可避免问题

missingok  # 如果日志文件不存在,不报错,直接跳过

notifempty  # 如果日志文件为空,不执行轮转

# 包含其他配置文件

include /etc/logrotate.d/*

# 特定日志配置

/var/log/wtmp {

    monthly  # 每月轮转一次

    create 0664 root utmp  # 轮转后创建新文件,权限0664,属主 root,属组 utmp

    minsize 1M  # 文件大小超过1MB才触发轮转

    rotate 1  # 保留1个旧日志

}

/var/log/btmp {

    missingok  # 如果文件不存在,不报错

    monthly  # 每月轮转一次

    create 0600 root utmp  # 轮转后创建新文件,权限0600,属主 root,属组 utmp

    rotate 1  # 保留1个旧日志

}

# 第三步:启动服务

systemctl restart logrotate

systemctl enable logrotate

# 测试配置文件是否正常

logrotate -d /etc/logrotate.conf

# 手动轮转

logrotate -vf /etc/logrotate.conf

# 查看轮转状态

cat /var/lib/logrotate/logrotate.status

posted @ 2025-04-03 11:49  demoduan  阅读(653)  评论(0)    收藏  举报