rsyslog日誌總結
一 rsyslog介紹
syslogd被rsyslog取代
將日誌寫入資料庫 可以利用模組和外掛控制輸入輸出
rsyslog程式管理本地和遠端日誌
安裝軟體
根據需求修改配置檔案
啟動服務
測試驗證
日誌:
歷史事件:時間,地點,人物,事件
日誌級別:事件的關鍵性程度,Loglevel
系統日誌服務:
sysklogd :CentOS 5之前版本
syslogd: system application 記錄應用日誌
klogd: linux kernel 記錄核心日誌
事件記錄格式:
日期時間 主機 程式[pid]: 事件內容
C/S架構:通過TCP或UDP協議的服務完成日誌記錄傳送,將分佈在不同主機的日誌實現集中管理
rsyslog特性:CentOS6和7
多執行緒
UDP, TCP, SSL, TLS, RELP
MySQL, PGSQL, Oracle實現日誌儲存
強大的過濾器,可實現過濾記錄日誌資訊中任意部分
自定義輸出格式
ELK:elasticsearch, logstash, kibana
非關係型分散式資料庫
基於apache軟體基金會jakarta專案組的專案lucene
Elasticsearch是個開源分散式搜尋引擎
Logstash對日誌進行收集、分析,並將其儲存供以後使用
kibana 可以提供的日誌分析友好的 Web 介面
二系統日誌檔案介紹
日誌格式 文字日誌/二進位制日誌/資料庫日誌
常見日誌檔案
/var/log/boot.log 系統引導日誌,記錄開機啟動資訊
/var/log/dmesg 核心的啟動日誌 (硬體相關)
/var/log/messages 系統的日誌檔案
/var/log/maillog 郵件服務的日誌
/var/log/xferlog ftp服務的日tmp志
/var/log/secure 網路連線及系統登入的安全資訊
/var/log/cron 定時任務的日誌
/var/log/wtmp 記錄所有的登入和登出 last -f 檢視
/var/log/btmp 記錄失敗的登入嘗試
三:日誌級別
# man syslog
日誌資訊分為以下級別,從上到下級別依次降低
none 不算是一個等級,它表示不記錄服務的所有資訊
0 emerg 系統不可用
1 alert 特別留意的報警資訊
2 crit 非常嚴重的狀況
3 err 錯誤資訊
4 warning 警告資訊
5 notice 稍微要注意的資訊
6 info 正常資訊
7 debug 除錯資訊,開發人員使用
四.日誌配置
1.日誌定義相關符號
配置檔案中常見的表示符號
. <--- 用來分隔服務和級別
* <--- 任何服務,或者任何級別
= <---有等號表示等於某一級別,沒有等號表示或者等於某一級別 mail.=info
mail.info
! <--- 排除操作,前面有相同服務的表示式,這個操作才有意義
代表從前面表示式所包含的內容中排除某些內容
; <--- 用於分隔不同的服務,級別組合
cron.=info;mail.info
, <--- 用於分隔不同的服務 cron,mail.=info
- <--- 用於指定目標檔案時,代表非同步寫入 -/var/log/maillog
舉例:
cron.err 0123
cron.=info 6
cron.!=info 0123457
mail,cron,ftp=err 3
cron.info;cron.!err
0123456 4567
456 #取交集
mail.info;mail.!=err
0123456 0124567
012456 #取交集
配置檔案詳解
/etc/rsyslog.conf rsyslog日誌的主配置檔案
/etc/rsyslog.d/*.conf rsyslog日誌的輔助配置檔案
/var/log/ 日誌檔案的目錄
cat /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
#記錄所有服務產生的日誌,除了mail/驗證/任務計劃相關日誌都記錄/
authpriv.* /var/log/secure
telnet ssh 裝置載體
#記錄所有跟驗證有關日誌資訊 mail.* -/var/log/maillog #記錄所有跟郵件有關日誌資訊
cron.* /var/log/cron
#記錄所有跟任務計劃有關日誌資訊
*.emerg :omusrmsg:*
#把所有級別為emerg的資訊傳送給所有登入到系統上的使用者
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
#記錄所有跟啟動相關的日誌
1.修改sshd的配置檔案
vim /etc/ssh/sshd_config
SyslogFaclity local1
2.修改rsyslog程式的配置檔案
vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none;local1.none
authpric.*;local1.none
local1.*
3.重啟服務測試驗證
總結:
本地日誌管理:服務的日誌和系統的日誌
服務日誌:
1.服務本身可以做管理自己的日誌,比如ftp服務。----->服務的配置檔案,vsftpd.conf
2.使用rsyslog程式管理服務的日誌。rsyslog.conf--->日誌裝置載體.info /var/log/ftp.log
五遠端日誌管理
目的:把多臺伺服器的日誌遠端記錄到其中一臺日誌伺服器集中化管理,方便對其統一分析和管理;
需求:
將ssh服務的日誌遠端記錄到日誌管理伺服器上儲存
環境準備
ssh-server 10.1.1.250(管理端)
log-server:10.1.1.1
ssh-server:10.1.1.3
client:10.1.1.2
思路:
1.在ssh-server上將ssh服務的日誌單獨記錄
2.在ssh-server上通過修改rsyslog.conf檔案來將本地ssh服務日誌遠端傳送到log-server伺服器上
3.在log-server上開啟514埠等待客戶來傳送日誌
4.測試驗證
步驟:
ssh-server
1.在日誌伺服器端完成以下事情
1)安裝rsyslog檔案
rpm -qa rsyslog
2)在log-server上開啟514埠
vim /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
systemctl restart rsyslog
netstat -tnulp|grep 514
2.在ssh-server上將ssh服務的日誌單獨記錄
修改sshd的配置檔案
vim /etc/ssh/sshd_config
SyslogFaclity local1
1)ssh服務的日誌載體定義為local1
2)刪除原來的本地儲存
#local1.* /var/log/sshd.log
local1.* @@10.1.1.1:514
第一個@代表UDP協議傳送;@@代表tcp協議傳輸
3)重啟rsyslog服務
systemctl restart rsyslog
useradd stu1
echo 123|passwd --stdin stu1
日誌輪轉
日誌輪轉介紹
日誌輪換
logrotate 日誌輪換的工具
日誌存放的地方: /var/log/*
常見的日誌檔案:
/var/log/messages
/var/log/wtmp
/var/log/btmp
輪換工具的配置檔案: /etc/logrotate.conf
/var/log/wtmp { <---需要輪換的日誌的據對路徑
monthly <---採用每個月輪換一次的設定
minsize 1M <----日誌輪換的時候日誌檔案必須不少於1M,儘管輪換的時間到了,如果檔案達不到1M也不去輪換
create 0664 root utmp <----新建的日誌檔案許可權是什麼?擁有者是誰,組是誰?
rotate 1
}
size 512k <---儘管輪換的時間還沒到,如果日誌檔案達到512kb,也進行輪換
對ssh服務日誌進行輪轉
要求:
1.每天進行輪轉,保留5天的日誌檔案
2.日誌檔案大小大於5M進行輪轉,不管是否到輪轉週期
思路:
修改logrotate程式的主配置檔案或者在/etc/logrotate.d/目錄建立一個檔案
步驟:
log-server
vim /etc/rsyslog.conf
local1.* /var/log/sshd.log
#local1.* @@10.1.1.1:514
find /var/log -type f -exec rm -f {} \;
find /var/log/ -type f -delete
systemctl restart rsyslog
方法1:修改主配置檔案
vim /etc/logrotate.conf
...
/var/log/sshd.log {
daily
rotate 5
size 5M
}
測試驗證
logrotate -f /etc/logrotate.conf
方法2:建立子配置檔案
vim /etc/logrotate.d/sshd
/var/log/sshd.log {
missingok
daily
rotate 5
size 5M
}
nodateext //不以日期作為字尾
find /var/log/ -type f -delete
systemctl restart rsyslog
logrotate -f /etc/logrotate.conf
對FTP服務日誌進行輪轉
要求:
1.每個月輪轉1次,保留一個月的日誌
2.日誌檔案大小超過500M不管有沒有到輪轉週期必須輪轉
3.如果日誌檔案不存在也不報錯
思路:
1.首先得在當前系統中有ftp服務的日誌
ftp服務自己本身管理日誌(/var/log/xferlog)
交給rsyslog程式管理(vsftpd.conf--->syslog_enable=YES;裝置載體預設是FTP);rsyslog.conf
----->ftp.* /var/log/ftp.log
log-server
yum install vsftpd -y
systemctl restart vsftpd
systemctl enable vsftpd
vim /etc/rsyslog.conf
ftp.* /var/log/ftp.log
vim /etc/vsftpd/vsftpd.conf
lftp localhost
vim /etc/logrotate.d/vsftpd
新增
/var/log/ftp.log {
missingok
monthly
rotate 1
size 500M
}
logrotate -f /etc/logrotate.conf