linux-日志服务
linux-日志服务
- 一、rsyslog
-
- 1. 配置文件
- 2. 消息级别
- 3. 设备类型
- 二、日志轮转
-
- 1. 主配置文件
- 2. 配置日志轮转功能
- 3. 结合cron使用
- 总结
一、rsyslog
rsyslog
是 Linux/Unix 系统上的一款高性能、模块化的 日志管理服务,用于收集、处理、过滤和转发系统日志及应用程序日志。支持多种协议(如 TCP/UDP/TLS)、数据库存储(MySQL/PostgreSQL)、远程日志转发等高级功能
rsyslogd
是linux系统内部的一个专门记录日志的服务 --》程序
rsyslog daemon 守护进程:一直在运行的程序,随时都可以访问
[root@rocky-1 rsyslog.d]# ps aux|grep rsyslog
root 931 0.0 0.2 164880 17408 ? Ssl 09:21 0:01/usr/sbin/rsyslogd
-n
root 1655 0.0 0.0 6636 2176 pts/0 S+ 11:10 0:00 grep --color=auto rsyslog
1. 配置文件
/etc/rsyslog.conf
# The authpriv file has restricted access.authpriv.* /var/log/secure*.info;mail.none;authpriv.none;cron.none /var/log/messages
设备类型.消息级别
修改sshd_config 配置文件
[root@rocky-1 rsyslog.d]# vim /etc/ssh/sshd_config
# Logging
SyslogFacility AUTH
LogLevel INFO
[root@rocky-1 rsyslog.d]# service sshd restart
rsyslog根据sshd的要求记录日志
[root@rocky-1 rsyslog.d]# vim /etc/rsyslog.conf
auth,authpriv.* /var/log/ssh.log
[root@rocky-1 rsyslog.d]# service rsyslog restart
Redirecting to /bin/systemctl restart rsyslog.service
2. 消息级别
mail.info 记录info以上级别的日志,包括info
mail.none 排除所有来自 mail 设备的日志(无论级别)
*.info;mail.none;authpriv.none;cron.none /var/log/messages# /var/log/messages 会记录绝大多数的程序的日志
3. 设备类型
推荐
推荐
推荐
推荐
二、日志轮转
日志文件会随时间不断增大,会占用大量磁盘空间,因此需要日志轮转(自动切割、压缩、删除旧日志)
日志轮转功能 logrotate
--》定期去产生一个新的日志文件,将旧的日志文件保存
1. 主配置文件
/etc/logrotate.conf
[root@rocky-2 log]# cat /etc/logrotate.conf
# see “man logrotate” for details
# global options do not affect preceding include directives
# rotate log files weekly 每周执行一次
weekly
# keep 4 weeks worth of backlogs 保留4个日志文件
rotate 4
# create new (empty) log files after rotating old ones 创建空文件做为新的日志文件
create
# use date as a suffix of the rotated file 加日期后缀
dateext
# uncomment this if you want your log files compressed 压缩功能
compress
# packages drop log rotation information into this directory 加载次要的配置文件
include /etc/logrotate.d
# system-specific logs may be also be configured here.
2. 配置日志轮转功能
案例 - > 给monitor_nginx.log配置日志轮转功能
查看 nginx 日志的 logrotate 配置文件
[root@rocky-2 log]# cat /etc/logrotate.d/nginx/var/log/nginx/*.log { create 0640 nginx root daily rotate 10 missingok 作用:如果日志文件不存在,不报错,直接跳过。 notifempty 作用:如果日志文件为空(0 字节),不进行轮转。 compress sharedscripts postrotate /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true endscript}
给monitor_nginx.log配置日志轮转
[root@rocky-2 logrotate.d]# cd /etc/logrotate.d[root@rocky-2 logrotate.d]#vim monitor_nginx /var/log/monitor_nginx.log{ missingok sharedscripts postrotate /usr/bin/systemctl -s HUP kill rsyslog.service >/dev/null 2>&1 || true endscript}
调整下时间
[root@rocky-2 log]# date -s “2025-7-9 17:07”
Wed Jul 9 17:07:00 CST 2025
手工执行日志轮转
[root@rocky-2 log]#
logrotate /etc/logrotate.conf
[root@rocky-2 log]# ls monitor_nginx.log*
monitor_nginx.log monitor_nginx.log-20250709.gz
3. 结合cron使用
每天自动轮转系统日志
[root@rocky-2 cron.daily]# vim logrotate
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
授予logrotate脚本可执行权限
[root@rocky-2 cron.daily]# chmod +x logrotate
[root@rocky-2 cron.daily]# ll
total 4
-rwxr-xr-x 1 root root 82 Jul 1 17:03 logrotate
总结
rsyslog 和日志轮转是 Linux 系统中日志管理的两大核心组件,分别负责日志的收集 / 转发和存储 / 生命周期管理,二者配合确保系统日志高效、有序、可持续地运行