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

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.lryc.cn/news/595914.html

相关文章:

  • 同步本地文件到服务器上的Docker容器
  • 跨维智能:全新一代人形机器人 DexForce W1 Pro
  • 大模型后训练——DPO实践
  • Mosaic数据增强介绍
  • 使用ubuntu:20.04和ubuntu:jammy构建secretflow环境
  • android模拟器手机打开本地网页
  • Tailwind CSS快速上手 Tailwind CSS的安装、配置、使用
  • J2EE模式---拦截过滤器模式
  • Vite:下一代前端构建工具的革命
  • C语言---VSCODE的C语言环境搭建
  • RISC-V基金会Datacenter SIG月会圆满举办,探讨RAS、PMU性能分析实践和经验
  • vs2017 c++ 使用sqlite3数据库
  • 末日期权的双买和单买策略区别是什么?
  • 双向链表详解及实现
  • C++_Hello算法_队列
  • 基于Java+MySQL实现(Web)文件共享管理系统(仿照百度文库)
  • 188粉福
  • Spring快速整合Mybatis
  • 技术与情感交织的一生 (十)
  • nodejs:告别全局安装,npx 命令详解及其与 npm 的区别
  • 从零开始学CTF(第二十五期)
  • Gitlab-CI实现组件自动推送
  • n8n - 为技术团队提供安全的自动化工作流
  • 基于Kubernetes的微服务CI/CD:Jenkins Pipeline全流程实践
  • 知识库搭建之Meilisearch‘s 搜索引擎 测评-东方仙盟测评师
  • STL学习(一、string容器)
  • 暑假算法训练.6
  • 深入浅出Python函数:参数传递、作用域与案例详解
  • 根据数据,判断神经网络所需的最小参数量
  • 设计模式七:抽象工厂模式(Abstract Factory Pattern)