日誌管理 —— rsyslog 系統日誌管理 logrotate 日誌輪轉

一、rsyslog 系統日誌管理

1、關心問題:哪類程序---》  產生的什麼日誌----》  放到什麼地方

2、處理日誌的進程
    (1) 第一類:
        rsyslogd: 系統專職日誌程序。 處理絕大部分日誌記錄,
        系統操作有關的信息,如登錄信息,程序啓動關閉信息,錯誤信息
   (2) 第二類:
        httpd/nginx/mysql: 各類應用程序,可以以自己的方式記錄日誌.

3、觀察 rsyslogd程序
        [[email protected] ~]# ps aux |grep rsyslogd
root 717 0.0 0.0 219752 3880 ? Ssl 09:05 0:00 /usr/sbin/rsyslogd -n

4、常見的日誌文件(系統、進程、應用程序)

# tail   -10   /var/log/messages         //系統主日誌文件
# tail -f /var/log/messages               //動態查看日誌文件的尾部
# tailf /var/log/secure                       //認證、安全
# tail /var/log/yum.log                      //yum
# tail /var/log/maillog                      //跟郵件postfix相關
# tail /var/log/cron                          //crond、at進程產生的日誌
# tail /var/log/dmesg                      //和系統啓動相關

5、rsyslogd 配置
    (1)相關程序
         yum install rsyslog   logrotate          默認已安裝
    (2)啓動程序
        systemctl  start    rsyslog.service
    (3)相關文件
        rpm -qc rsyslog    
            /etc/rsyslog.conf                   rsyslogd的主配置文件(關鍵)
            /etc/sysconfig/rsyslog           rsyslogd相關文件,定義級別(瞭解一下)
            /etc/logrotate.d/syslog          和日誌辦輪轉(切割)相關(任務二)
6、主配置文件——告訴rsyslogd進程什麼日誌,應該存到哪裏

# vim /etc/rsyslog.conf

RULES
    RULES:即規則,是一套生成日誌,以及存儲日誌的策略。
    RULES即規則,有三部分組成( 由設備+級別+存放位置 ) 
                                      RULES由FACILITY+LEVEL+FILE組成。
    authpriv.*         /var/log/secure(SSH信息)
    mail.*             -/var/log/maillog(發郵件)這裏有一個 - 符號, 表示是使用異步的方式記錄, 因爲日誌一般會比較大
    cron.*             /var/log/cron(創建任務)    
    *.info;mail.none;authpriv.none;cron.none                /var/log/messages   
          系統日誌排除了郵件,認證,計劃日誌。

關於程序和設備的聯繫問題,程序自身會決定將日誌交給哪類設備。如SSH程序會選擇安全類設備。這一點由開發者定義。

 

規則示意圖——目的:通過繪圖形式來理解日誌工作機制。

二、logrotate 日誌輪轉

1、將大量的日誌,分割管理,刪除舊日誌。、

2、簡介
    日誌  記錄了程序運行時各種信息。
    通過日誌可以分析用戶行爲,記錄運行軌跡,查找程序問題。
    可惜磁盤的空間是有限的
    日誌輪轉就像飛機裏的黑匣子,記錄的信息再重要也只能記錄最後一段時間發生的事。
    爲了節省空間和整理方便,日誌文件經常需要按!時間或!大小等維度分成多份,刪除時間久遠的日誌文件。
3、工作原理 —— 按照配置進行輪轉
        配置文件種類
            主配置文件:/etc/logrotate.conf                 ( 決定每個日誌文件如何輪轉 )
            子配置文件夾:/etc/logrotate.d/*                   自定義配置          便於管理
        觀察主文件和子文件 
            [[email protected] ~]# ls /etc/logrotate.conf /etc/logrotate.d/
/etc/logrotate.conf
/etc/logrotate.d/:
acpid cups iscsiuiolog ppp rpm subscription-manager up2date wpa_supplicant
conman httpd mgetty psacct setroubleshoot syslog vsftpd.log yum

4、主配置文件介紹

5、yum日誌輪轉實例

(1)輪轉的目標文件  /var/log/yum.log

(2)配置輪轉規則

# vim /etc/logrotate.d/yum 
           /var/log/yum.log {
           missingok        //丟失不執行
           # notifempty        //空文件不論轉
           # maxsize 30k        //達到30k輪轉, daily or  size
           # yearly        //或者一年一輪轉
           daily        //縮小週期到1天
           rotate 3        //輪轉保留3次
           create 0777 root root
           }

(3)測試
    錯誤示範
        # /usr/sbin/logrotate /etc/logrotate.conf         //手動輪轉
        # ls /var/log/yum*
        /var/log/yum.log                             文件只有一個。因爲日期沒變
    正確示範
        修改時間,手動觸發輪轉
        # date 04011000
            date  月日時分
            把時間向未來推移
        # /usr/sbin/logrotate      -s      /var/lib/logrotate/logrotate.status       /etc/logrotate.conf
        # ls /var/log/yum*                         日誌文件已經出現多個


    關於時間         # grep 'yum' /var/lib/logrotate/logrotate.status //記錄所有日誌文件最近輪轉的時間         "/var/log/yum.log" 2019-3-31-10:0:23             //如果沒有輪轉過,第一次只有記錄