一、rsyslog介紹
rsyslog是一個快速處理日志的程序,提供了高性能、安全功能和模塊化設計,將多種來源輸入輸出轉換結果到目的地
優點:多線程、支持加密協議(ssl、relp等)、多種數據庫(mysql)等。
可以監控錄入每個用戶的鍵入命令
1.1、rsyslog架構圖
Rsyslog架構,這是rsyslog官網 上的一張圖,用來介紹rsyslog的架構, rsyslog的消息流是從輸入模塊->預處理模塊->主隊列->過濾模塊- >執行隊列->輸出模塊。
在這個流程圖中,輸入、輸出、過濾三個部分稱為module,輸入模塊有imklg、imsock、 imfile. 輸出模塊有omudp、omtcp、 omfile、 omprog、 ommysql. omruleset 。
過濾模塊研究不多,只會提到mmnormalize.預處理模塊主要解決各種syslog協議實現間的差異,舉例說明如果日志系統client端使用rsyslog、server端使用syslog-ng,如果自己不做特殊處理syslog-ng是無法識別的。但是反過來,rsyslog的server端就可以識別syslog-ng發過來的消息。
Input模塊,包括imklg、 imsock. imfile、 imtcp等, 是消息來源。
Filetr模塊,處理消息的分析和過濾,rsyslog可以根據消 息的任何部分進行過濾,后面會介紹到具體的做法。
Output模塊,包括omfile、 omprog. omtcp、 ommysq|等。 是消息的目的地。
Queue模塊,負責消啟的存儲,從Input傳入的未經過濾的消啟放在主隊列中,過濾后的消息放入到不同
action queue中,再由action queue送到各個輸出模塊。
二、實踐部署
2.1、環境:
CentOS7.4 2m2g server client1 client2
2.2、server上部署操作
安裝rsyslog程序(rsyslog默認已經在發行版安裝,如果系統中沒有的話,可以yum安裝)
# yum install rsyslog -y
grep -v "^#" /etc/rsyslog.conf | grep -v "^$" $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal $ModLoad immark # provides --MARK-- message capability $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514 $WorkDirectory /var/lib/rsyslog $AllowedSender tcp, 192.168.37.100/24 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" :fromhost-ip, !isequal, "127.0.0.1" ?Remote $IncludeConfig /etc/rsyslog.d/*.conf $OmitLocalLogging on $IMJournalStateFile imjournal.state *.info;mail.none;authpriv.none;cron.none /data/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:* uucp,news.crit /var/log/spooler local7.* /var/log/boot.log
1、$AllowedSender tcp, 192.168.37.100/24 允許37.0網段內的主機以 tcp 協議來傳輸
2、 $template Remote,"/data/log/ %fromhost-ip%/ %fromhost-ip%_ %$YEAR%- %$MONTH%-%$DAY%.log"定義模板,接受日志文件路徑,區分了不同主機的日志
3、 :fromhost-ip, !isequal, "127.0.0.1" ?Remote過濾server本機的日志。
4、$InputTCPServerRun 514開啟tcp,tcp和udp可以共存的
創建日志目錄,盡量選擇系統內比較大的區域創建,因為考慮到要存放很多服務器的日志文件。
mkdir -pv /data/log
修改完后,重啟rsyslog服務,並查看監聽端口,514是否是tcp協議
2.3、client端部署操作
先修改兩台機器的配置文件
# grep -v "^$" /etc/rsyslog.conf | grep -v "^#" $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal $WorkDirectory /var/lib/rsyslog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $template myFormat,"%timestamp% %fromhost-ip% %msg%\n" $ActionFileDefaultTemplate myFormat $IncludeConfig /etc/rsyslog.d/*.conf $OmitLocalLogging on $IMJournalStateFile imjournal.state *.info;mail.none;authpriv.none;cron.none @@192.168.37.100 authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:* uucp,news.crit /var/log/spooler local7.* /var/log/boot.log
修改完后 wq! restart
2.4、驗證
在服務器上進到 /data/log 目錄下,進行查看,會發現這樣的文件結構
[root@node ~]# tree /data/log/ /data/log/ ├── 192.168.37.101 │ └── 192.168.37.101_2020-07-23.log ├── 192.168.30.57 │ └── 192.168.37.102_2020-07-23.log └── messages
在server上操作查看日志
tail -f /data/log/192.168.37.101/192.168.37.101_2020-07-23.log
三、收集系統其它服務日志,在客戶端上操作
3.1、修改配置文件,在尾部添加幾行參數
module(load="imfile" PollingInterval="5")
#加載imfile模塊,並5秒刷新一次 $InputFileName /var/log/http/access.log
#要監控的日志文件路徑 $InputFileTag Apache1:
#定義文件標簽,注意最后是冒號: $InputFileStateFile state-Apache1
#定義狀態文件 $InputRunFileMonitor
#激活讀取,可以設置多組日志讀取,每組結束時設置本參數
3.2、老樣子 wq! systemctl restart rstslog
3.3、查看server端的日志收集
四、總結
最近發現系統有自己用戶的操作輸入內容,很好奇,於是收集了一下類似的博客,發現確實有這個服務,這樣可以監控其他人員的操作,方便不時之需造成失誤時錯誤環境的演示以及排錯