linux日誌管理

memos1發表於2019-05-12

1 常見的系統日誌

/var/log/message     記錄系統重要資訊日誌,非常重要

/var/log/cron     記錄系統定時任務日誌

/var/log/cups     記錄列印資訊日誌

/var/log/dmesg    系統開機時核心自檢資訊,也可以使用dmesg命令直接檢視核心自檢資訊    

/var/log/btmp     錯誤登陸資訊日誌,二進位制檔案,使用lastb命令檢視

/var/log/lastlog       系統所有使用者最後一次的登陸時間的日誌,二進位制檔案,使用lastlog命令檢視

     

/var/log/mailog     記錄郵件資訊的日誌

/var/log/secure     記錄驗證和授權方面的資訊,只要涉及賬戶和密碼的授權都會記錄,如,系統的登陸,ssh的登陸,su切換,sudo授權,甚至是新增使用者和修改使用者密碼

/var/log/wtmp     永久記錄所有使用者的登陸,登出資訊,同時記錄系統的啟動,重啟,關機事件,二進位制檔案,使用last檢視

/var/log/utmp     記錄當前已經登陸的使用者資訊,這個檔案隨著使用者的登入和登出而不斷變化,只記錄當前登入使用者的資訊,使用w,who,users等命令檢視

2 檢視日誌服務和自啟動狀態

[root@Darren log]# ps aux |grep rsyslogd

[root@Darren log]# chkconfig –list|grep rsyslog

3 日誌檔案內容的一般格式

時間發生的日期和時間

發生此事件的伺服器的主機名

啟動此事件的服務名或程式名

事件的具體資訊

如/var/llog/message日誌:

[root@Darren log]# cat messages

Nov 14 11:34:05 Darren rsyslogd: [origin software=”rsyslogd” swVersion=”5.8.10″ x-pid=”1282″ x-info=”http://www.rsyslog.com”] rsyslogd was HUPed

Nov 14 11:36:04 Darren dhclient[1178]: DHCPREQUEST on eth0 to 192.168.91.254 port 67 (xid=0x483caad7)

Nov 14 11:36:04 Darren dhclient[1178]: DHCPACK from 192.168.91.254 (xid=0x483caad7)

4 日誌配置檔案/etc/rsyslog.conf

[root@Darren log]# cat /etc/rsyslog.conf |grep -v `#`

#記錄所有資訊,但是忽略mail,authpri,cron的資訊

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

authpriv.*                                              /var/log/secure

#mail產生的日誌過多,-表示先儲存記憶體中,批量刷盤

mail.*                                                  -/var/log/maillog

cron.*                                                  /var/log/cron

#當嚴重級別為emerg時,以廣播的形式發個所有使用者

*.emerg                                                 *

uucp,news.crit                                          /var/log/spooler

local7.*                                                /var/log/boot.log

/etc/rsyslog.conf的格式:

服務名稱;連線符號;日誌等級;日誌記錄位置

(1)服務名稱

authpriv 主要與認證有關的機制,如login,ssh,su等需要賬號/密碼

cron 定時任務cron和at產生的日誌

daemon和各個守護程式相關的日誌

kern 核心產生的程式

lpr 列印產生的日誌

mail 郵件收發資訊

news 與新聞伺服器相關的日誌

user 使用者等級類別的日誌資訊

syslog 就是rsyslogd服務產生的資訊

local0-local7 本地使用預留的服務

uucp 子系統的日誌資訊

(2)連線符號

* 代表所有日誌等級

mail.info 表示郵件資訊大於等於info級別的資訊

.=info表示等於info級別的資訊

.!info表示不等於info等級的資訊

(3)日誌等級

none 忽略某些服務資訊

debug 一般除錯資訊說明

info 基本的通知資訊

warning 警告資訊

err 錯誤資訊,可能影響服務或系統執行

crit 臨界點狀況資訊,比err嚴重

alert 警告狀態資訊,比crit嚴重

emerg 疼痛等級資訊,系統已經無法使用

(4)日誌記錄位置

日誌記錄的檔案位置

設定chattr +a 只能往日誌例寫資料,不能修改日誌,防止root使用者誤操作

[root@Darren log]# chattr +a cron

[root@Darren log]# lsattr cron

—–a——-e- cron

例:自定義cron服務的日誌

[root@Darren log]# vim /etc/rsyslog.conf

cron.*    /var/log/test.log    –新增cron服務的所有日誌,並記錄到/var/log/test.log檔案中

[root@Darren log]# /etc/init.d/rsyslog restart   –重啟rsyslog服務

做個定時任務,測試一下,最後生成日誌檔案:

[root@Darren log]# crontab -e           

*/2 * * * * echo “this is test!”>>/tmp/root.txt

[root@Darren log]# ll /var/log/test.log

-rw——- 1 root root 2395 Nov 15 10:17 /var/log/test.log

5 搭建日誌伺服器

(1)環境

CentOS release 6.8 (Final)

client:192.168.91.5

server:192.168.91.3

client和server防火牆要關閉,並且要ping的通

[root@zhishutang log]#  /etc/init.d/iptables stop 

[root@Darren log]# /etc/init.d/iptables stop

 

(2)client配置

編輯客戶端檔案/etc/rsyslog.conf,指定寫日誌的主機IP:

[root@zhishutang log]# vim /etc/rsyslog.conf

新增:

*.* @@192.168.91.3:514 

重啟rsyslog服務:

[root@zhishutang log]# /etc/init.d/rsyslog restart

(3)server配置

編輯服務端檔案/etc/rsyslog.conf,開通tcp協議和埠:

[root@Darren log]# vim /etc/rsyslog.conf

$ModLoad imtcp

$InputTCPServerRun 514


重啟rsyslog服務:

[root@zhishutang log]# /etc/init.d/rsyslog restart


檢視514埠:

[root@Darren log]# netstat -nltup |grep 514

tcp        0      0 0.0.0.0:514                 0.0.0.0:*                   LISTEN      13721/rsyslogd     

tcp        0      0 :::514                      :::*                        LISTEN      13721/rsyslogd   


(4)測試

client:

在客戶端生成日誌

[root@zhishutang log]# logger `hello word!`       

[root@zhishutang log]# cat /var/log/messages|grep `hello word!`

Nov 14 17:39:20 zhishutang root: hello word!

server:

客戶端的日誌成功的寫入日誌服務端

[root@Darren log]# cat /var/log/messages|grep `hello word!`

Nov 14 17:39:20 zhishutang root: hello word!



6 日誌檔案輪替logrotate

(1)配置檔案

/etc/logrotate.conf

/etc/logrotate.d/

[root@Darren log]# cat /etc/logrotate.conf

weekly 預設每週輪替一次

rotate 4  預設保留四個日誌檔案

create  新建一個空日誌檔案

dateext 以日期作為後罪名

#compress 舊日誌是否被壓縮,預設不壓縮

#大括號中的設定可以取代預設設定生效:

/var/log/wtmp {            –指定日誌檔案

    monthly                 –每月輪替

    create 0664 root utmp   –許可權0644,所有者root,所屬組utmp

        minsize 1M            –大於1M才會輪替

    rotate 1                    –保留一箇舊日誌檔案

}

/var/log/btmp {

    missingok

    monthly

    create 0600 root utmp

    rotate 1

}

/usr/local/apache2/logs/access_log {

        daily

        create

        rotate 30

}


目錄下的檔案:

[root@Darren logrotate.d]# ll /etc/logrotate.d/

-rw-rw-r– 1 root root 135 1月  18 2016 ConsoleKit

-rw-r–r– 1 root root  71 5月  11 2016 cups

-rw-r–r– 1 root root 139 5月  12 2016 dracut

-rw-r–r– 1 root root 185 7月  12 19:00 httpd

-rw-r–r– 1 root root 329 7月  17 2012 psacct

-rw-r–r– 1 root root 210 12月 10 2014 syslog

-rw-r–r– 1 root root  87 7月  13 00:45 yum


[root@Darren logrotate.d]# cat /etc/logrotate.d/syslog

/var/log/cron

/var/log/maillog

/var/log/messages

/var/log/secure

/var/log/spooler

{

    sharedscripts

    postrotate

        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

    endscript

}



(2)logrotate命令

-v 顯示輪替執行過程

-f 強制輪替

[root@Darren /]# logrotate -v /etc/logrotate.conf  –顯示輪替過程

[root@Darren /]# logrotate -vf /etc/logrotate.conf  –強制輪替

#檢視日誌發生了什麼變化:

[root@Darren log]# ls

anaconda.ifcfg.log    btmp-20161115  dmesg.old               maillog-20161114   samba             spooler-20161115

anaconda.log          cluster        dracut.log              maillog-20161115   secure            tallylog

anaconda.program.log  ConsoleKit     dracut.log-20160920.gz  messages           secure-20161101   wtmp

anaconda.storage.log  cron           dracut.log-20161114     messages-20161101  secure-20161107   wtmp-20161115

anaconda.syslog       cron-20161101  httpd                   messages-20161107  secure-20161114   yum.log

anaconda.xlog         cron-20161107  lastlog                 messages-20161114  secure-20161115   yum.log-20160920

anaconda.yum.log      cron-20161114  mail                    messages-20161115  spooler           yum.log-20161114

audit                 cron-20161115  maillog                 ntpstats           spooler-20161101

boot.log              cups           maillog-20161101        prelink            spooler-20161107

btmp                  dmesg          maillog-20161107        sa                 spooler-20161114


可以發現這五種日誌

/var/log/cron

/var/log/maillog

/var/log/messages

/var/log/secure

/var/log/spooler

原本是每週進行一次輪替,但是強制輪替後,及時生效。


相關文章