• 【Linux】日志 日志管理服务 日志轮替


    日志简介以及常用日志

    日志是重要的系统信息文件,记录了许多重要的系统事件。在检查错误和受攻击时常用。
    绝大多数的日志文件放在 /var/log/ 下

    在这里插入图片描述

    常用日志:

    • boot.log 系统启动日志
    • cron 系统定时任务日志
    • lastlog 记录所有用户最后一次登录的日志 该二进制文件需要直接用lastlog命令查看
    • mailog 记录邮件信息日志
    • message 系统重要消息日志 系统出错时首先查看
    • secure 记录验证和授权方面的信息 涉及系统登录 ssh用户 su切换用户 sudo授权
    • ulmp 记录当前用户的信息 需要用w.who.user等命令直接查看

    日志管理服务rsyslogd

    该服务是记录日志的一个后台程序

    基本指令
    • ps -aux | grep rsyslogd查询rsyslogd是否启动
    • systemctl list-unit-files | grep rsyslog查询rsyslogd的自启动状态

    在这里插入图片描述

    配置文件

    /etc/rsyslogd.conf 配置文件 这里记录了rsyslogd服务信息以及日志级别
    编辑文件的格式为:*.*第一个*表示日志类型,第二个*表示日志级别

    在这里插入图片描述
    可以看到左半边是需要记录的日志内容 右半边是记录的日志文件地址

    日志类型:

    • auth:pam产生的日志
    • authpriv:ssh ftp等登录信息的验证信息
    • corn:时间任务相关
    • kern:内核相关
    • lpr:打印
    • mail:邮件
    • mark(syslog)-rsyslog:服务内部信息 时间标识
    • news:新闻组
    • user:用户程序产生的相关信息
    • uucp:unix to nuix copy主机之间相关的通信
    • loc 1-7:自定义的日志设备

    日志级别:(从上到下级别逐渐增高 记录信息逐渐减少)

    • debug:调试信息
    • info:一般信息日志 最常用
    • notice:最具有重要性的普通条件的信息
    • warning:警告级别
    • err:错误级别 阻止某个功能或者模块不能正常工作的信息
    • crit:严重级别 阻止整个系统或者整个软件不能正常工作的信息
    • alert:需要立刻修改的信息
    • emerg:内核崩溃等重要信息
    • none:什么都不记录
    日志文件信息详解

    日志文件格式主要包含以下四列:

    • 事件产生的时间
    • 产生事件的服务器的主机名
    • 产生事件的服务名或程序名
    • 事件的具体信息

    在这里插入图片描述

    自定义日志服务

    了解了日志配置文件和日志服务的相关信息,我们就可以自定义日志服务,将自己关心的日志放入指定的日志文件里了。

    步骤:

    • 在/var/log/ 中新建一个日志文件wrssh.log
    • 打开 /etc/rsyslogd.conf 按照配置文件的格式 添加一行*.* /var/log/wrssh.log保存并退出 (当然也可以直接执行第二步 它会自动创建一个日志文件同第一步 )

    日志轮替logrotate

    就是按照一定的规则,将一些不需要的旧的文件删掉。

    配置文件

    /etc/logrotate.conf 配置文件 可以对logrotate进行管理

    在这里插入图片描述

    这里有几个重要的默认参数:

    • weekly:表示每周轮替一次
    • rotate 4:表示同一个日志文件最多保存四个版本 多了会产出
    • create:产生轮替之后生成一个新的空白的文件放在其后
    • dateext:日志轮替文件名字的命名方式
      • 如果配置文件中有dateext参数:日志会用日期作为日志文件的后缀,例如“message-20220801”
      • 如果没用dateext:日志需要进行改名,当第一次日志轮替时,当前的“secure”改名为“secure.1”,然后新建“secure”日志用来保存新的日志。第二次日志轮替时,当前的“secure.1”会自动更名为“secure.2”,“secure”更名为“secure.1”,新建“secure”以保存新的日志。以此类推。
    • include /etc/logrotate.d:可以将自定义的日志轮替规则写到这个文件里去
    自定义日志轮替规则

    格式:

    日志文件地址 {
    	参数
    }
    
    • 1
    • 2
    • 3

    参数:

    • daily:轮替周期 每天
    • weekly:轮替周期 每周
    • monthly:轮替周期 每月
    • rotate [num]:保存日志文件的个数
    • compress:轮替时对旧日志进行压缩
    • create mode owner group:建立新日志的同时指定权限 所有者 所属组
    • mail address:日志轮替时输出内容通过邮件发送到指定的邮件地址
    • missingok:如果日志不存在则忽略日志的警告信息
    • notifempty:如果日志为空文件则不进行日志轮替
    • minsize [size]:日志轮替的最小值 即超过该大小才会轮替 否则到达轮替周期也不会轮替
    • size [size[:日志达到指定大小进行轮替 而不是按照轮替的时间周期
    • dateext:使用日期作为日志轮替文件的后缀
    • sharedscripts:在此关键字之后的脚本只执行一次
    • prerotate/endscripts:在日志轮替之前执行脚本命令
    • postrotate/endscripts:在日志轮替之后执行脚本命令

    例如:

    /var/log/btmp{
    	missingok  # 如果日志不存在则忽略该日志的警告信息
    	montly  # 每月轮替一次
    	creat 0664 zzz abc  # 建立新的日志文件 权限是0664 所有者zzz 所属组abc
    	minsize 1M  # 文件最小轮替大小为1M 
    	rotate 1  # 仅保留一个日志备份
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    日志轮替的机制原理

    日志轮替在指定的时间备份日志,依赖于系统定时任务。
    可以在 /etc/cron.daily/ 中发现一个可执行文件logrotate
    在这里插入图片描述

    内存日志

    一些日志是先写到内存日志里,还未写到文件里。重启之后会清空。

    • journalctl查看所有的内存日志
    • journalctl -n 3查看最新3条
    • journal --since 00:00 --until 00:10查看区间时间内的日志 可加日期
    • journalctl -p err查看报错日志
    • journalctl -o verbose日志详细内容
    • journalctl _PID=1245 _COMM=sshd查看符合条件的日志

    在这里插入图片描述

  • 相关阅读:
    SpringBoot + JWT + Redis 开源知识社区系统
    企业微信获取客户群里用户的unionid;企业微信获取客户详情
    使用CMake将OpenCV4.5.4编译成Windows下Debug x86版本
    阿里云Redis
    实用篇-Ribbon负载均衡
    汽车驾驶自动化分级L1~L5
    云计算-Linux-小综合实验
    2023年09月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
    【QT】QTableView或QTableWidget 搭配QLineEdit实现数据的搜索显示
    苹果Mac优化清理工具CleanMyMac X2023版本
  • 原文地址:https://blog.csdn.net/Genevieve_xiao/article/details/126099928