• linux 的日志管理介绍


    1,日志管理流程

     采集日志 (rsyslog)——>  滚动日志(logrotate)——> 自动化管理日志(cron、anacron)

    2、日志管理服务 rsyslog,采集日志进程  rsyslogd。

      systemd-journal是一个改进型的日志管理服务,可以收集来自内核、系统早期的启动阶段的日志、系统守护进程在启动和运行中的标准
      输出和错误信息、还有syslog的日志。
      该日志服务仅仅把日志集中保存在单一结构化的日志文件/run/log默认情况下并不会持久化保存日志、每次重启后,之前的日志都会丢失。
      另外,一些rsyslog无法收集的日志也会被jounral记录到

        【1】作用:主要用来采集日志,不产生日志

        【2】rsyslog的配置文件:/etc/rsyslog.conf

    3,在rsyslogd服务的控制下,会将系统日志 按照不同的类型采集整理在不同的文件中,在需要查看时,可以在对应的文件中找到相应的日志信息:

    系统日志
    /var/log/message          //绝大多数的系统日志都记录到文件
    /var/log/secure           //所有跟安全和认知授权等日志都会记录到此文件中  
    /var/log/maillog          //邮件服务日志
    /var/log/cron             //计划任务日志                            
    /var/log/boot.log         //系统启动相关的日志
    /var/log/demsg            //内核缓冲信息,系统启动时,硬件相关信息
    /var/log/audit/audit.log  //系统审计相关的日志
    
    程序日志
    /var/log/yum.log          //yum相关的日志                           
    /var/log/xferlog          //ftp文件上传下载日志
    /var/log/httpd/access_log //httpd访问日志                           
    /var/log/httpd/error_log  //httpd错误日志                            
    /var/log/mysql.log        //mysql日志                               
    
    
    特殊日志,二进制文件,不能直接查看
    /var/log/wtmp             //登录用户信息,使用w命令                     
    /var/log/btmp             //最近登录用户信息,使用last命令               
    /var/log/lastlog          //所有用户登录信息,使用lastlog命令

    4,linux日志分类linux系统中主要有三个日志子系统:连接时间日志,进程统计日志,错误日志。

    连接时间日志

    连接时间日志是有多个程序执行的,把日志记录到/var/log/wtmp     /var/run/utmp   /var/log/lastlog三个文件中,这三个文件记录了用户登录系统和退出的有关信息,utmp保存了当前用户的每个用户的信息,wtmp记录了每个用户登录注销和系统的启动,关机的事件,lastlog记录了每个用户最后登录的信息记录。

    wtmp和utmp文件都是二进制,不能使用cat和tail命令查看,但是可以使用who w users last等命令查看着两个文件的信息

    who [参数] 

    -a 显示全部信息

    -m 只显示当前终端的登录用户信息

    -q 只显示当前登录到系统中的用户名称和数量,和其他参数共同使用的时候,其他参数将被忽略

    日志文件

    多数日志文件存放在/var/log/目录下面,一下是各类日志文件和记录的内容

    assess-log 记录和HTTP/web的传输

    secure 记录登录系统存取资料的消息

    btmp 记录失败的消息

    lastlog 记录最近几次成功登录的事件和最后一次不成功的登录

    messages 从syslog中记录信息(有的是连接到syslog文件)

    sudolog 记录sudo发出的命令

    sulog 记录使用su命令的使用

    utmp 记录当前登录的每个用户

    wtmp 一个用户每次登录进入和退出的的永久记录

    syslog 通常连接到messages文件

    xferlog 记录了FTP会话中上传和下载的详细日志

    5,journal 的使用

    journalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。

    1、查看journal占用磁盘空间大小:
    journalctl --disk-usage
    
    2、指定journal占用磁盘空间大小:
    journalctl --vacuum-size=1G
    
    3、指定journal日志保存时间:
    journalctl --vacuum-time=1years
    
    4、查看具体服务的日志:
    journalctl -u nginx.service
    journalctl -u nginx.service -f   实时查看
    
    5、实时查看最新日志:
    journalctl -f
    
    6、查看尾部最新的n行日志:
    journalctl -n 20
    
    7、查看指定时间的日志:
    journalctl --since "20 min ago"
    journalctl --since yesterday
    journalctl --since 09:00 --until "1 hour ago"
    
    8、查看内核日志:
    journalctl -k
    
    9、查看系统启动日志:
    journalctl -b
    
    10、检查journal是否运行正常以及日志文件是否完整无损坏
    journalctl --verify
    
    所以这里我们只需要指定下journal占用空间大小和保存时间就好了。

    6、使用logrotae 切割,转储,删除日志。

    1,常用的文件和目录

    #查看logrotate的配置文件
    cat /etc/logrotate.conf
    #查看logrotate配置了什么日志的切割
    ll /etc/logrotate.d/

    logrotate最常用的三个方式为:
    logrotate /etc/logrotate.conf #重新读取配置文件,并对符合条件的文件文件进行rotate。
    logrotate -d /etc/logrotate.conf #调试模式,输出调试结果,但并不执行。
    logrotate -f /etc/logrotate.conf #强制模式,对所有相关文件进行rotate。

    2,转储的日志文件配置

    参数 功能
    compress 通过gzip 压缩转储以后的日志
    nocompress 不需要压缩时,用这个参数
    copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
    nocopytruncate 备份日志文件但是不截断
    create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
    nocreate 不建立新的日志文件
    delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
    nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
    errors address 专储时的错误信息发送到指定的Email 地址
    ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
    notifempty 如果是空文件的话,不转储
    missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。

    发送日志到邮箱的配置
    mail address 把转储的日志文件发送到指定的E-mail 地址
    nomail 转储时不发送日志文件

    olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
    noolddir 转储后的日志文件和当前日志文件放在同一个目录下

    sharescript   共享脚本、下边的postrotate<s>endscript只执行一次即可,同时设置多个日志时用到
    prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
    postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

    时间配置
    daily 指定转储周期为每天
    weekly 指定转储周期为每周
    monthly 指定转储周期为每月

    常用的两个配置:
    rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
    size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

    tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
    dateformat -%Y%m%d%s 设置后缀名格式,此格式是年月日和秒组成的后缀名。
    dateext 添加归档文件后缀名为日期格式。

     

  • 相关阅读:
    electron—Chromium有酒,Node有肉
    .NET 应用程序运行提示"!!0[] System.Array.Empty()找不到方法"的解决办法
    安装.Net Framework 4.6.2时出现“无法建立到信任根颁发机构的证书链”解决方法
    Electron入门
    npm使用淘宝镜像安装包
    MySQL Unable to convert MySQL date/time value to System.DateTime的解决办法
    axios无法在ie9,10,11环境下运行的问题解决
    解决ini-parser解析ini文件中文乱码问题
    git的tag,branch操作
    java类加载器
  • 原文地址:https://www.cnblogs.com/fengfengyang/p/15643835.html
Copyright © 2020-2023  润新知