LINUX日誌採集及遠端日誌同步
一、系統日誌
程序和作業系統核心需要能夠為發生的事件記錄日誌 , 這些日誌可用於系統稽核和問題的故障排除 , 一般這些日誌永久儲存 /var/log 目錄中
1.日誌型別
auth ###pam產生的日誌
authpriv ###ssh、ftp等登陸資訊的驗證資訊
cron ###時間任務相關
kern ###核心
lpr ###列印
mail ###郵件
mark(syslog)-rsyslog ###服務內部訊息,時間標識
news ###新聞組
user ###使用者程式產生相關資訊
uucp ###unix to unix copy(unix主機之間相關通訊)
local 1~7 ###自定義日誌裝置
2.日誌級別
debug ###有調式資訊的,日誌資訊最多
info ###一般資訊的日誌,最常用
notice ###最具有重要性的普通條件的資訊
warning ###警告級別
err ###錯誤級別,阻止某功能或模組不能正常工作的資訊
crit ###嚴重級別,阻止整個系統或整個軟體不能正常工作的資訊
alert ###需要立刻修改的資訊
emerg ###核心崩潰等嚴重資訊
none ###什麼都不記錄
注:
3.日誌儲存檔案
日誌永久儲存於 /var/log 目錄中。各系統檔案記錄資訊如下:
var/log/messages ###大多數系統日誌資訊記錄在此處
/var/log/secure ###安全和身份認證相關的訊息和錯誤的日誌檔案(系統登陸)
/var/log/maillog ###與郵件伺服器相關的日誌檔案
/var/log/cron ###與定時任務相關的日誌檔案
/var/log/boot.log ###與系統啟動有關的日誌檔案
二、日誌採集
1.系統日誌採集服務rsyslog
此服務是用來採集服務的,他不產生日誌,只是採集
2.日誌採集規則
1)指定日誌採集路徑
rsyslog 服務的主配置檔案為/etc/rsyslog.conf 。在此檔案中指定日誌採集路徑的格式為:
日誌型別 . 日誌級別 /var/log/file(日誌存放檔案)
測試步驟:
vim /etc/rsyslog.conf ##檢視並修改採集日誌檔案配置,為了讓我們把日誌採用到指定位置
*.* /var/log/westos #將所有日誌的所有除錯資訊放到/var/log/westos(這個檔案會自動生成)
systemctl restart rsyslog.service #重啟rsyslog系統
> /var/log/westos ###清空日誌
logger test
cat /var/log/westos ###檢視日誌
2)指定日誌採集格式
vim /etc/rsyslog.conf
$template 格式名稱 , “日誌採集格式”
日誌型別 . 日誌級別 /etc/log/file(日誌儲存檔案);格式名稱
%timegenerated% #日誌生成時間
%FROMHOST-IP% #日誌來源主機的IP
%syslogtag% #日誌生成程式(記錄目標)
%msg% #日誌內容
\n #換行
測試步驟:
vim /etc/rsyslog.conf
$template STUDENT,"%FROMHOST-IP% %syslogtag% %msg%\n" ###不採集時間
*.* /var/log/westos;STUDENT
systemctl restart rsyslog.service
> /var/log/westos ###清空日誌
logger student
cat /var/log/westos ###檢視日誌
三、日誌的遠端同步及採集格式設定
1.遠端日誌同步
1)在日誌傳送方
vim /etc/rsyslog.conf
*.* @接受IP *.* ##‘@’表示udp協議傳送,‘@@’表示tcp協議傳送 ##將所有日誌的所有除錯資訊傳送到接收方地址
systemctl restart rsyslog.service ###重啟rsyslog伺服器
2)在日誌接收方
vim /etc/rsyslog.conf
15 $ModLoad imudp ###日誌接收模組
16 #$UDPServerRun 514 ###開啟接收埠
systemctl restart rsyslog
systemctl stop firewalld ###關閉防火牆
systemctl disable firewalld #關閉防火牆對接收的遮蔽
測試步驟:
傳送方server(172.25.254.248):
vim /etc/rsyslog.conf
systemctl restart rsyslog.service
接收方desktop(172.25.254.168):
vim /etc/rsyslog.conf
systemctl restart rsyslog
systemctl stop firewalld
在傳送方:
在接收方:
注意排錯:防火牆關閉;網路暢通;服務開啟;介面開啟
四、時間同步
1.時間同步服務名稱 chronyd
在伺服器端共享時間:
vim /etc/chrony.conf
22 allow IP/24 ##允許那些客戶端來訪問本機共享的時間
29 local stratum 10 ##本機不同步任何時間,本機作為時間源
systemctl restart chronyd.server ##重啟chronyd服務
在客戶端:
vim /etc/chrony.conf
server 主機IP iburst ##本機立即同步ip主機的時間
systemctl restart chronyd ##重啟chronyd
chronyc sources -v
改為
出現“^* ”就說明試驗成功,已經和172.25.254.248的時間同步
^ ##172.25.254.248的伺服器
* ##current synced已完成同步
2.修改時間
1)timedatectl 命令
timedatectl ##檢視時間
timedatectl list-timezones ##查詢所有時區時間
timedatectl set-timezone Asia/Shanghai ##修改時間為上海時間
timedatectl status ##顯示當前時間資訊
timedatectl set-time "2018-10-13 22:15:00" ##更改當前時間
2)設定硬體時間
timedatectl set-local-rtc 0 ##使用UTC(倫敦)時間
timedatectl set-local-rtc 1 ##使用當地時間
vim /etc/adjtime ###檢視硬體時間配置檔案
五、日誌檢視
1. journalctl ##日誌檢視工具,直接檢視記憶體中的日誌(暫時)
journalctl -n 3 ##檢視最近日誌的前三行
journalctl -p err ##檢視日誌中的錯誤
journalctl --since 時間點 --until 時間點
journalctl -o verbose ##檢視日誌詳細引數
journalctl _COMM=sshd _PID=10171
測試:systemctl status sshd ##檢視pid
systemctl restart sshd ##重開啟一個sshd,每重啟一次PID就會不一樣
2.如何使用systemd-journald永久儲存日誌
預設此程式只負責對日誌進行檢視而不對日誌進行儲存和採集,那麼關機後再開機,對日誌進行檢視,只能檢視到開機後的日誌
系統之前的日誌因為是儲存在記憶體中的,所以關機後就被清空了,那麼在開機是用journalctl看不到
讓systemd-journald儲存日誌到硬碟:
mkdir /var/log/journal
chown root.systemd-journal /var/log/journal ##更改檔案所有人及所有組
chmod g+s /var/log/journal ##在目錄中建立的檔案都自動歸屬到目錄所在組
killall -1 systemd-journald ##訊號1,重新載入配置而不重啟
法二:
測試:
journalctl -n 3 ##檢視日誌前三行內容
reboot ##退出系統
重新登陸
cd /mnt ###隨便執行一條命令
journalctl ##檢視日誌