目錄
- 日志系統rsyslog
- 一、處理日志的進程
- 二、常見的日志文件(系統、進程、應用程序)
- 日志優先級
- 三、logrotate日志輪轉
- 1、配置日志輪轉的路徑
- 2、日志配置路徑
- 四 、案例
日志系統rsyslog
Linux 系統內核和許多程序會產生各種錯誤信息、告警信息和其他的提示信息,
這些各種信息都應該記錄到日志文件中,完成這個過程的程序就是 rsyslog,rsyslog
可以根據日志的類別和優先級將日志保存到不同的文件中。
日志對于運維工程師的作用:用于排查錯誤 ,用于排查被攻擊的風險
日志管理基礎
rsyslog 日志管理
logrotate日志輪轉
一、處理日志的進程
ps aux |grep rsyslogd
二、常見的日志文件(系統、進程、應用程序)
tail -f /var/log/messages #動態查看日志文件的尾部,系統主日志文件tail -f /var/log/secure #記錄認證、安全的日志(誰登錄了我們的系統)tail /var/log/maillog #跟郵件postfix相關tail /var/log/cron #crond、at進程產生的日志 (計劃任務相關的)tail /var/log/dmesg #和系統啟動相關 tail /var/log/yum.log #yum的日志tail -f /var/log/mysqld.log #MySQL日志tail /var/log/xferlog #和訪問FTP服務器相關tail /var/log/boot.log #系統啟動過程日志記錄存放w #當前登錄的用戶 /var/log/wtmplast #最近登錄的用戶 /var/log/btmplastlog #最近登錄的用戶 /var/log/btmp
第一列,用戶名;
第二列,終端位置,/pts/0 (偽終端)意味著從諸如ssh或者telnet的遠程鏈接的用戶,
tty(teletypewriter)意味著直接連接到計算機或者本地鏈接的用戶;
第三列,登錄的ip或者內核。
第四列,開始時間;
第五列,結束時間(still login in 還未退出 down 直到正常關機 crash 直到強制關機);[root@linux-server ~]#lastlog #所有用戶的登錄情況 /var/log/lastlog
rsyslog
日志優先級
日志級別分為:7種日志級別代號0-70 debug #有調試信息的,日志信息最多1 info #一般信息的日志,最常用2 notice #最具有重要性的普通條件的信息3 warning #警告級別4 err #錯誤級別,阻止某個功能或者模塊不能正常工作的信息5 crit #嚴重級別,阻止整個系統或者整個軟件不能工作的信息6 alert #需要立刻修改的信息7 emerg #內核崩潰等嚴重信息none #什么都不記錄
三、logrotate日志輪轉
因為日志的數量巨大,日志程序會把日志切割成多分,把舊的刪除
這樣處理,對于磁盤儲存,大文件的讀寫,都更為合理
1、配置日志輪轉的路徑
/etc/logrotate.conf
2、日志配置路徑
配置日志輪轉
[root@linux-server ~]# vim /etc/logrotate.conf /var/log/qianfeng{
#daily weekly monthly yearly
prerotate # 輪轉之前執行中間的命令chattr -a /var/log/qianfeng # 用于
endscript # 表達式解決 開始進行輪轉 missingok #丟失不提示 daily 安天輪轉dateext 使用日期作為后綴 weekly #輪轉的周期,一周輪轉,單位有年,月,日 #daily(天) weekly(周) monthly(月) yearly(年)compress delaycompress 轉儲的日志 在下一次轉儲的時候壓縮rotate 5 轉儲了五份missingok 丟失不通知size 50M 達到五十兆 就輪轉notifempty 空文件不輪轉postrotate # 輪轉結束 再其實 這個文件里的權限chattr +a /var/log/qianfeng
endscript # 表達式結束
}
四 、案例
手動輪轉
/usr/sbin/logrotate /etc/logrotate.conf
/usr/sbin/logrotate 為輪轉命令
/etc/logrotate.conf 輪轉文件
logrotate -f /etc/logrotate.conf # -f 是強制輪轉
# 指定日志的位置
/var/log/newbee{
# 在日志輪轉前要做的事
prerotate# 取消隱藏權限achattr -a /var/log/newbee
# 結束腳本
endscript
# weekly daily monthly yearly
# 以日期為后綴
dateext
# 輪轉周期為 1天
daily
# 保留5份日志
rotate 5
# 設置屬主屬組 權限
create 0644 root root
# 設置壓縮
compress
# 輪轉之后要做的事情
postrotate# 再次添加a權限 (注意制表符)chattr +a /var/log/newbee
# 結束腳本
endscript
}例1:輪轉文件/var/log/yum.log[root@linux-server ~]# vim /etc/logrotate.d/yum
/var/log/yum.log {missingok #丟失不提醒#notifempty #空文件不輪轉 #size 30k #只要到了30k就輪轉#yearlydaily #每天輪轉一次 rotate 3 create 0644 root root
}測試:
[root@linux-server ~]# /usr/sbin/logrotate /etc/logrotate.conf #手動輪轉
[root@linux-server ~]# ls /var/log/yum*
/var/log/yum.log /var/log/yum.log-20191110[root@linux-server ~]# grep yum /var/lib/logrotate/logrotate.status #查看記錄所有日志文件最近輪轉的時間
"/var/log/yum.log" 2019-11-10-21:26:142:日志安全,操作日志的隱藏權限
[root@localhost log]# cd /etc/logrotate.d/
[root@localhost logrotate.d]# vim syslog
建議測試時先把/etc/logrotate.d/syslog中messages刪除,然后在下面添加如下:
/var/log/messages{prerotatechattr -a /var/log/messagesendscript#notifemptydailycreate 0600 root rootmissingokrotate 3postrotatechattr +a /var/log/messagesendscript
}/usr/sbin/logrotate /etc/logrotate.conf #手動輪轉cd /var/log/
ls mess*
messages messages-20200805 messages-20200806參數解釋:
prerotate/endscript - 在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
postrotate/endscript - 在轉儲以后需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行size
觸發分割的條件是:1.日志大小達到這個值,和時間周期沒有關系。
minsize
觸發分割的條件是:1.時間周期到了,2.日志大小達到這個值;兩個條件都要滿足。
maxsize
觸發分割的條件是:1.時間周期到了,2. 日志大小大于這個值;兩個條件任何一個滿足。