日誌管理
處理日誌的進程
rsyslogd:系統的專職日誌程序,將絕大部分操作系統相關的日誌記錄。(安全、認證、計劃任務..)
應用程序日誌:各類應用程序以自己的方式記錄的日誌。
常見日誌文件
# tail /var/log/messages //系統主日誌文件
# tail -20 /var/log/messages
# tail -f /var/log/messages //動態查看日誌文件的尾部
# tailf /var/log/secure //認證、安全
# tail /var/log/maillog //跟郵件postfix相關
# tail /var/log/cron //crond、at進程產生的日誌
# tail /var/log/dmesg //和系統啓動相關
# tail /var/log/audit/audit.log //系統審計日誌
# tail /var/log/yum.log //yum
# tail /var/log/mysqld.log //MySQL
# tail /var/log/xferlog //和訪問FTP服務器相關
# tail /var/log/wtmp //當前登錄的用戶(命令:w)
# tail /var/log/btmp //最近登錄的用戶(命令last )
# tail /var/log/lastlog //所有用戶的登錄情況(命令lastlog )
rsyslogd配置
相關程序
# yum install rsyslog logrotate (默認已安裝)
# systemctl start rsyslog.service //啓動
相關文件
# rpm -qc rsyslog //查找相關文件
/etc/rsyslog.conf //rsyslogd的主配置文件
/etc/sysconfig/rsyslog //rsyslogd相關文件,定義級別
/etc/logrotate.d/syslog //和日誌辦輪轉(切割)相關
日誌收集服務器
目的
- 集中日誌管理,簡化日誌分析工作。
- 日誌可存放於本地或(和)遠程服務器
步驟
1.發送日誌服務器
- 1
# vim /etc/ssh/sshd.config
#SyslogFacility AUTHPRIV
SyslogFacility LOCAL5
- 2
# vim /etc/rsyslog.conf
local5.* @192.168.2.131 <---此處填寫另一臺設備的IP地址。
另一臺設備是集中日誌服務器。
- 3
# systemctl restart sshd
# systemctl restart rsyslog
#systemctl stop firewalld
2.接受日誌服務器
- 1
# vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
local5.* /var/log/server152.log
- 2
# systemctl restart rsyslog
#systemctl stop firewalld
- 3
嘗試ssh登錄服務器1.
並觀察本地日誌
ll /var/log/server152.log
日誌輪轉logrotate
Linux系統默認安裝logrotate工具
Logrotate是基於cron來運行的,其腳本是/etc/cron.daily/logrotate,日誌輪轉是系統自動完成的。 實際運行時,Logrotate會調用配置文件/etc/logrotate.conf。
作用:
日誌記錄了程序運行的各種信息,通過日誌可以分析用戶行爲記錄運行軌跡,查找程序問題,但磁盤是有限的,因此需要記錄最後一段時間發生的記錄。
logrotate本身不是系統守護進程,他是通過計劃任務crond每天執行。
工作原理
被crond調動
# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf //日誌輪轉,按/etc/logrotate.conf
按配置進行輪轉
配置文件種類
logrotate 配置文件:
主文件:/etc/logrotate.conf (決定每個日誌文件如何輪轉)
子文件夾:/etc/logrotate.d/*
主配置文件
# vim /etc/logrotate.conf
全局設置
weekly 輪轉週期
rotate 保留4份
create 輪轉後創建新文件
dateext 使用日期作爲後綴
#compress 是否壓縮
include /etc/logrotate.d 包含該目錄下的子配置文件
對某日誌文件設置輪轉的方法
/var/log/wtmp{
monthly 一月輪轉一次
minsize 1M 最小達到1M才輪轉,monthly and minsize
create 0664 root utmp 最小達到1M才輪轉,monthly and minsize
rotate 1 保留一份
}
/var/log/btmp {
missingok //丟失不提示
monthly //每月輪轉一次
create 0600 root utmp //輪轉後創建新文件,並設置權限
rotate 1 //保留一份
}
子配置文件
# ls /etc/logrotate.d/*
/etc/logrotate.d/bootlog /etc/logrotate.d/messages /etc/logrotate.d/yum
/etc/logrotate.d/chrony /etc/logrotate.d/wpa_supplicant
logrotate.conf 才主要的配置文件,logrotate.d 是一個目錄,該目錄裏的所有文件都會被主動的讀入/etc/logrotate.conf中執行 。
如果 /etc/logrotate.d/ 裏面的文件中沒有設定一些細節,則會以/etc/logrotate.conf這個文件的設定來作爲默認值。
舉個栗子messages
目的
- 設置系統日誌輪轉
- 爲系統日誌文件增加屬性,用於保護日誌文件
準備工作
# vim /etc/logrotate.d/syslog
# 刪除 /var/log/messages(爲了避免不同規則互相影響。)
設置輪轉(腳本)
vim /etc/logrotate.d/messages
/var/log/messages {
prerotate
chattr -a /var/log/messages #減去chattr
endscript
#notifempty
daily
create 0600 root root
missingok
rotate 5
postrotate
chattr +a /var/log/messages #增加chattr
endscript
}
#修改時間重啓rsyslog即可進行輪轉測試
輪轉後需重啓
說明
輪轉後原日誌文件被改名,新日誌文件是創建的應用程序根據inode找到日誌文件進行書寫,如果不重啓,找尋的依舊是老的日誌文件。
配置
# vim /etc/logrotate.d/syslog
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}