一、實驗環境 | |||
---|---|---|---|
主機名 | 系統 | 網絡適配器 | IP地址 |
servera | rhel9 | NAT模式 | 172.25.254.11/24 |
serverb | rhel9 | NAT模式 | 172.25.254.22/24 |
二、Rsyslog的基本參數
(1)安裝rsyslog
(2)rsyslog的服務名稱
(3)rsyslog的主配置文件
rsyslog
?的主配置文件通常位于?/etc/rsyslog.conf
,并包含其他子配置(如?/etc/rsyslog.d/*.conf
)。
(4)tcp/udp的514端口(默認未開啟)
在 rsyslog 中,TCP/UDP 的 514 端口默認未開啟,若要開啟可通過修改 rsyslog 配置文件來實現,具體操作如下:
1. 打開 rsyslog 配置文件,命令如下:
vim /etc/rsyslog.conf
2. 在文件中添加以下內容以啟用 UDP 514 端口監聽:
module(load="imudp")
input(type="imudp" port="514")
3. 添加以下內容以啟用 TCP 514 端口監聽:
module(load="imtcp")
input(type="imtcp" port="514")
4. 保存并關閉配置文件,然后重啟 rsyslog 服務使配置生效,命令如下:
systemctl restart rsyslog
此外,還需注意檢查防火墻設置,確保防火墻允許 TCP 和 UDP 的 514 端口流量通過,否則可能無法正常使用該端口進行日志傳輸。
三、自定義日志路徑
默認日志路徑
/var/log/boot.log? ? ? ? ? ? ? ? ? #系統啟動信息
/var/log/cron? ? ? ? ? ? ? ? ????????#系統中周期化任務日志
/var/log/maillog? ? ? ? ? ? ????????#郵件日志
/var/log/messages? ? ? ? ? ? ? ?#服務常規信息,服務啟動報錯
/var/log/secure? ? ? ? ? ? ? ? ? ? ?#系統認證日志
如何更改日志存放路徑
#1.設置日志存儲位置為/var/log/timinglee[root@servera ~]# vim /etc/rsyslog.conf
#### RULES ##### Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console#下一行命令的作用是,所有類型的所有級別日志存放到/var/log/timinglee 第一個*標識日志類型 第二個*標識日志級別
*.* /var/log/timinglee[root@servera ~]# systemctl restart rsyslog.service#測試1:
[root@servera ~]# > /var/log/timinglee #清空日志文件
[root@servera ~]# logger test message #生成測試日志的內容
[root@servera ~]# cat /var/log/timinglee #查看日志內容
Jul 14 12:09:09 servera root[4118]: test message#2.設定采集日志的種類,(把系統中除服務認之外的日志記錄在/var/log/timinglee)
[root@servera ~]# vim /etc/rsyslog.conf
#### RULES ##### Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console#authpriv.none 的作用是指定服務認證類型的日志不采集
*.*;authpriv.none /var/log/timinglee#測試2:
[root@serverb ~]# ssh -l root 172.25.254.11
#默認在/var/log/timinglee中有認證信息
[root@servera ~]# tail -f /var/log/timinglee
Jul 14 12:09:09 servera root[4118]: test message
Jul 14 12:15:15 servera sshd[4155]: Accepted password for root from 172.25.254.22 port 41582 ssh2
Jul 14 12:15:15 servera systemd-logind[870]: New session 6 of user root.
Jul 14 12:15:15 servera systemd[1]: Started Session 6 of User root.
Jul 14 12:15:15 servera sshd[4155]: pam_unix(sshd:session): session opened for user root(uid=0) by root(uid=0)
Jul 14 12:15:15 servera systemd[1]: Starting Hostname Service...
Jul 14 12:15:15 servera systemd[1]: Started Hostname Service.
Jul 14 12:15:45 servera systemd[1]: systemd-hostnamed.service: Deactivated successfully.#重啟rsyslog服務,等配置生效后,再次進行ssh登錄
[root@servera ~]# > /var/log/timinglee
[root@servera ~]# systemctl restart rsyslog.service
[root@serverb ~]# ssh -l root 172.25.254.11
[root@servera ~]# tail -f /var/log/timinglee
Jul 14 12:21:53 servera rsyslogd[4297]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="4297" x-info="https://www.rsyslog.com"] start
Jul 14 12:21:53 servera systemd[1]: Started System Logging Service.
Jul 14 12:21:53 servera rsyslogd[4297]: imjournal: journal files changed, reloading... [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ]
Jul 14 12:22:00 servera systemd[1]: session-7.scope: Deactivated successfully.
Jul 14 12:22:00 servera systemd-logind[870]: Session 7 logged out. Waiting for processes to exit.
Jul 14 12:22:00 servera systemd-logind[870]: Removed session 7.
Jul 14 12:22:03 servera systemd-logind[870]: New session 8 of user root.
Jul 14 12:22:03 servera systemd[1]: Started Session 8 of User root.
Jul 14 12:22:04 servera systemd[1]: Starting Hostname Service...
Jul 14 12:22:04 servera systemd[1]: Started Hostname Service.
?
tail -f
?是 Linux 系統中一個非常實用的命令,用于實時監控文件的更新內容。它會持續跟蹤文件的變化,并在文件有新內容添加時立即顯示出來,特別適合查看正在寫入的日志文件或實時數據流。
測試1:
測試2:
日志類型
auth? ? ? ? ? ?#用戶認證,比如用戶登錄系統
authpriv ?? ?#服務認證,比如ssh遠程登錄
cron? ? ? ? ? ?#時間任務
kern? ? ? ? ? ?#內核類型
mail? ? ? ? ? ?#郵件
news? ? ? ? ?#系統更新信息
user? ? ? ? ? #用戶
日志級別
none? ? ? ? ? ? #不采集
debug? ? ? ? ? #程序排錯信息
info? ? ? ? ? ? ? #程序常規運行信息
notice? ? ? ? ? #重要信息的普通日志
waring ?? ??? ?#程序警告
err? ? ? ? ? ? ? ?#程序報錯
crit? ? ? ? ? ? ? ?#嚴重級別會導致系統軟件不能正常工作
alert? ? ? ? ? ? ?#系統中立即要更改的信息
emerg? ? ? ? ? #系統的嚴重問題日志
四、日志同步
在企業中,服務器系統數量不唯一,那多個操作系統對于日志的查詢分析難度和時效性非常大,為了解決此問題,我們可以把所有主機的日志同步到一臺主機中來進行集中存儲。
1.設定日志接收服務器servera
#這里我沒有加載tcp模塊,只使用了udp模塊來作為示例
[root@servera ~]# vim /etc/rsyslog.conf
module(load="imudp") # needs to be done just once #加載日志接收模塊
input(type="imudp" port="514") #指定模塊端口[root@servera ~]# systemctl restart rsyslog.service#測試:
[root@servera ~]# netstat -antlupe | grep rsyslog
udp 0 0 0.0.0.0:514 0.0.0.0:* 0 45647 4297/rsyslogd
udp6 0 0 :::514 :::* 0 45648 4297/rsyslogd#這里可以選擇關閉防火墻,也可以讓防火墻開放udp和tcp的514端口
[root@servera ~]# systemctl disable --now firewalld
servera 的rsyslog主配置文件的配置:
2.日志發送方serverb
[root@serverb ~]# vim /etc/rsyslog.conf
*.* @172.25.254.11 # @標識udp協議[root@serverb ~]# systemctl restart rsyslog.service
serverb 的rsyslog主配置文件的配置:
3.測試
[root@servera ~]# > /var/log/messages
[root@serverb ~]# > /var/log/messages[root@servera ~]# tail -f /var/log/messages[root@serverb ~]# logger test message
#只要在servera中看到日志出現標識日志同步成功#servera中同步出現了一條serverb的日志說明同步成功了
[root@servera ~]# tail -f /var/log/messages
Jul 14 12:36:40 serverb root[3503]: test message
五.如何定義日志的采集格式
#編輯日志采集格式模板
[root@servera ~]# vim /etc/rsyslog.conf
$template CUSTOM_LOGFRMAT,"%FROMHOST-IP% %timegenerated% %syslogtag% %msg%\n"*.*;authpriv.none /var/log/timinglee;CUSTOM_LOGFRMAT#如何向修改默認日志格式
[root@servera ~]# vim /etc/rsyslog.conf
#module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
module(load="builtin:omfile" Template="CUSTOM_LOGFRMAT")[root@servera ~]# systemctl restart rsyslog.service#####對于參數的解釋#########
#%FROMHOST-IP% #生成日志的ip
#%timegenerated% #生成日志的時間
#%syslogtag% #生成日志的程序
#%msg% #生成日志的內容
#\n #換行
原本的日志采集格式模板:
修改后的日志采集格式模板:
測試:
經過測試發現日志采集的格式已經改變,說明測試成功