• rsyslogd 以及日志轮替 logrotate


    rsyslog

    1. 日志类型
      auth :(authpriv) 主要与认证有关的机制,例如 login, ssh, su 等需要帐号/密码的咚咚;
      cron: 就是例行性工作排程 cron/at 等产生讯息记录的地方;
      daemon: 与各个 daemon 有关的讯息;
      kern: 就是核心 (kernel) 产生讯息的地方;
      lpr: 亦即是列印相关的讯息啊!
      mail: 只要与邮件收发有关的讯息纪录都属于这个;
      news: 与新闻群组伺服器有关的东西;
      syslog: 就是 syslogd 这支程式本身产生的资讯啊!
      user, uucp, local0 ~ local7 与 Unix like 机器本身有关的一些讯息。
      

    1. 日志等级

      debug:调试信息
      info:
      notice
      warning
      err
      crit
      alert
      emerg
      * :所有日志等级的信息
      .none :忽略日志服务,不记录
      

    1. rsyslog.conf

      *.info;mail.none;authpriv.none;cron.none /var/log/messages
      #除了mail、authpriv、cron之外的任何服务产生日志等级为info的信息都记录在message之内
      
      authpriv.* /var/log/secure
      #authpriv服务发生的任何等级的日志都记录在secure中 
      
      mail.* -/var/log/maillog
      #同理,是Mail服务发生的日志都记录在maillog中
      
      $ModLoad ommysql #引用mysql模块 mail.* :ommysql:localhost,Syslog,rsyslog,password    
      #将mail的任何信息记入:本地mysql中的Syslog库中,用户为rsyslog,密码为:password 
      

    1. 赋值方法

      . :代表大于等于指定的等级的日志会记录到指定的日志里面
      .= :代表日志等级等于指定的等级会记录
      .! :除了指定等级之外的日志会被记录
      



    logrotate

    1. 关于logrotate
    • 程序:/usr/sbin/logrotate
    • 配置:/etc/logrotate.conf 和/etc/logrotate.d/

    crontab 耦合: /etc/cron.daily/logrotate

    1. logrotate.conf

      #每个礼拜滚一次
      weekly
      
      #保留4个档,比如第5次更替,那第一次的就没了
      rotate 4
      
      #建立新的日志来继续存储
      create
      
      # 将日期作为轮替日志的结尾,比如:maillog-20160701
      dateext
      
      # 是否压缩日志,压缩工具gzip,比如:maillog-20160701.gz
      compress
      
      # 子配置文件的包含目录
      include /etc/logrotate.d
      
      /var/log/wtmp {
          monthly
          create 0664 root utmp
          minsize 1M
          rotate 1
      }
      

    1. logrotate.d/*

      /var/log/maillog
      {
          daily #每天执行
          rotate 7 #保留7份轮替日志
          dateext #以日期作为轮替日志的标识 
          create #创建新文件
          minsize 1G #日志最小1G,不到1G不轮替
      
          postrotate #在启动logrotate前,执行下面的动作
          /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
          /bin/kill -HUP `cat /var/run/fail2ban/fail2ban.pid 2> /dev/null` 2> /dev/null || true
          endscript #结束脚本
          compress #压缩
      }
      

    1. 手动日志轮替命令
    $ /usr/sbin/logrotate /etc/logrotate.conf
    



    cron、rsyslog、logratate 之间的关系

    • rsyslog:负责将产生的日志分类,打到各个日志文件中
    • logrotate:负责切割日志
    • crontab:定时任务在/etc/下面有 cron.hourly cron.daily cron.weekly cron.monthly 等目录,在对应目录下的程序,会按其给定的时间执行一次,比如cron.daily下的程序会每天都执行一次。

    /etc/cron.daily/logrotate:

    #!/bin/sh
    /usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
    EXITVALUE=$?
    if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
    fi
    exit 0
    
  • 相关阅读:
    Python 字符串
    python 元组用法
    python 字典用法
    环境配置
    桥式整流以及电容作用
    三角序列的正交性
    MDS
    ISOMAP
    randperm
    数据库~Mysql里的Explain说明
  • 原文地址:https://www.cnblogs.com/tiantiandas/p/rsyslog.html
Copyright © 2020-2023  润新知