当前位置: 首页 > web >正文

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. 消息级别

数值级别名称含义说明典型场景
0emerg系统不可用(最高级别)系统崩溃、严重硬件故障 emergency
1alert需要立即采取行动关键服务停止、磁盘满 alert
2crit严重错误数据库崩溃、认证失败 critcal
3err一般错误(不影响系统运行)服务启动失败、网络连接超时 error
4warning警告信息磁盘空间不足(未满)、配置参数已过期
5notice正常但重要的事件(默认记录级别)用户登录、服务正常启动
6info一般信息(调试或运行日志)请求处理完成、状态变更 information
7debug调试信息(最低级别,通常不记录)开发阶段的详细日志

mail.info 记录info以上级别的日志,包括info

mail.none 排除所有来自 mail 设备的日志(无论级别)

*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# /var/log/messages 会记录绝大多数的程序的日志
优先级匹配规则
*匹配所有设备和级别
none排除指定设备(如 mail.none)
=精确匹配(如 =error 仅匹配 err 级别)
!否定匹配(如 !info 排除 info 级别)

3. 设备类型

数值关键字说明典型日志来源
0kern内核消息内核启动日志、硬件驱动错误 kernel —》推荐
1user用户级程序消息(默认值)普通应用程序日志
2mail邮件系统Postfix、Sendmail 的收发日志 —》推荐
3daemon系统守护进程Nginx、MySQL、Rsyslog 自身的日志
4auth安全/认证日志SSH 登录、sudo 命令、PAM 认证 —》推荐
5syslog syslogd内部日志Rsyslog 自身的调试信息
6lpr打印系统CUPS 打印服务日志
7news新闻组系统(已废弃)极少使用
8uucpUUCP 系统(历史遗留) 几乎不用
9cron计划任务cron 作业执行日志 --》推荐
10authpriv私有认证日志(更敏感)sudo 的详细审计日志
11ftpFTP 服务vsftpd、ProFTPD 日志
12ntp时间同步服务NTP 或 chrony 日志
13security安全事件(部分系统等同于 auth)SELinux 审计日志
14console控制台输出物理终端消息
15solaris-cronSolaris 的 cron(Linux 通常用 cron)兼容性字段
16local0自定义日志(0-7)常用于第三方应用(如 HAProxy、Nginx 自定义日志)
local1-7保留给用户自定义数据库、中间件等专用日志

二、日志轮转

日志文件会随时间不断增大,会占用大量磁盘空间,因此需要日志轮转(自动切割、压缩、删除旧日志)

日志轮转功能 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 rootdailyrotate 10missingok   作用:如果日志文件不存在,不报错,直接跳过。notifempty   作用:如果日志文件为空(0 字节),不进行轮转。compresssharedscriptspostrotate/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || trueendscript
}

给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
{missingoksharedscriptspostrotate/usr/bin/systemctl -s HUP kill rsyslog.service >/dev/null 2>&1 || trueendscript
}

调整下时间

[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 系统中日志管理的两大核心组件,分别负责日志的收集 / 转发和存储 / 生命周期管理,二者配合确保系统日志高效、有序、可持续地运行

http://www.xdnf.cn/news/16155.html

相关文章:

  • SQLAlchemy 2.0简单使用
  • Linux 使用 screen 窗口会话稳定挂载jar包到后台运行
  • 初识opencv01——基本api操作
  • 解决pip指令超时问题
  • Android AppCompat:实现Material Design向后兼容的终极指南
  • TTL+日志的MDC实现简易链路追踪
  • 【Java SE】Object类
  • 高并发场景下的缓存问题与一致性解决方案(技术方案总结)
  • day059-zabbix自定义监控与自动发现
  • 哔哩哔哩视觉算法面试30问全景精解
  • 【Pytorch】数据集的加载和处理(一)
  • 从效率瓶颈到自动化:火语言 RPA 在日常工作中的技术实践
  • (Arxiv-2025)HiDream-I1:一种高效图像生成基础模型,采用稀疏扩散Transformer
  • Android Surface创建流程
  • CSS自适应布局实战指南
  • Selenium+Java 自动化测试入门到实践:从环境搭建到元素操作
  • TIM定时中断
  • 一些Avalonia与WPF内容的对应关系和不同用法
  • Java从入门到精通!第十一天(Java常见的数据结构)
  • 数据库设计mysql篇
  • 嵌入式学习-土堆目标检测(3)-day27
  • 【iOS】SideTable
  • 【深度解析】从AWS re_Invent 2025看云原生技术发展趋势
  • C语言(20250722)
  • 网络编程---TCP协议
  • 跨越语言壁垒!ZKmall开源商城多语言架构如何支撑电商全球化布局
  • libgmp库(GNU高精度算术库)介绍
  • mac实现sudo命切换node版本
  • netty的编解码器,以及内置的编解码器
  • OpenCV 零基础到项目实战 | DAY 1:图像基础与核心操作