『學了就忘』Linux日誌管理 — 91、日誌服務rsyslogd說明
- 2021 年 12 月 23 日
- 筆記
- 測試基礎必會技能 - Linux系統
1、日誌文件格式
只要是由日誌服務rsyslogd
記錄的日誌文件,他們的格式是一樣的。
基本日誌格式包含以下內容:
- 事件產生的時間。
- 發生事件的伺服器的主機名。
- 產生事件的服務名或程式名。
- 事件的具體資訊(具體日誌資訊)。
我們以/var/log/messages
為例:
2、rsyslogd服務的配置文件
rsyslogd
服務是的配置文件是/etc/rsyslog.conf
。用來確定哪個服務的、什麼等級的日誌資訊,會被記錄在哪個位置。也就是說,rsyslogd
日誌服務/etc/rsyslog.conf
配置文件中主要定義了服務的名稱、日誌等級和日誌記錄位置。
(1)rsyslog.conf文件內容
rsyslog.conf
配置文件的位置在/etc/rsyslog.conf
配置文件說明。
# 查看/etc/rsyslog.conf配置文件的內容。
[root@localhost ~]# vim /etc/rsyslog.conf
# rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see //www.rsyslog.com/doc/troubleshoot.html
# 載入模組。是`rsyslogd`服務必備的模組。
#### MODULES ####
# 載入imuxsock模組,為本地系統登錄提供支援。
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
# 載入imklog模組,為內核登錄提供支援。
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
# 載入immark模組,提供標記資訊的能力。
#$ModLoad immark # provides --MARK-- message capability
# 如果你需要把日誌發送給其他的伺服器,
# 你就需要開啟下面的UPD或者TCP協議的網路服務。
# 載入UPD模組,允許使用UDP的514埠,接收採用UDP協議轉發的日誌。
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# 載入TCP模組,允許使用TCP的514埠,接收採用TCP協議轉發的日誌。
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
# 定義全局設置。
#### GLOBAL DIRECTIVES ####
# 定義日誌的時間,使用默認的時間戳格式。
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# 文件同步功能。默認沒有開啟,是注釋的。
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
# 包含/etc/rsyslog.d/目錄中所有的「.conf"子配置文件。
# 也就是說這個目錄中的所有子配置文件也同時生效。
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
# 日誌文件保存規則。
#### RULES ####
# kern服務.所有日誌級別保存在/dev/console。
# 這個日誌默認沒有開啟,如果需要,則取消注釋。
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# *.info;mail.none;authpriv.none;cron.none意思是:
# 所有服務.info以上級別的日誌,保存在/var/log/messages日誌中。
# 除了mail,authpriv,cron的日誌不記錄在/var/log/messages日誌文件中,因為它們都有自己的日誌文件。
# 所以/var/log/messages日誌,是最重要的系統日誌文件,需要經常查看!
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# 用戶認證服務所有級別的日誌,保存在/var/log/secure日誌中。
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# mail服務的所有級別的日誌保存在/var/log/maillog日誌中。
# 「-」號的含義是日誌先在記憶體之中保存,當日誌夠多之後,再向文件中保存。
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# 計劃任務的所有日誌保存在/var/log/cron日誌中。
# Log cron stuff
cron.* /var/log/cron
# 所有日誌服務的疼痛等級日誌對所有在線用戶廣播。
# Everybody gets emergency messages
*.emerg *
# uucp和news日誌服務的crit以上的日誌保存在/var/log/sppoler 日誌文件中。
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# loac17日誌服務的所有日誌寫入/var/log/boot.log日誌中。
# 會把開機時的檢測資訊在顯示到螢幕的同時,寫入/var/log/boot.log日誌中
# Save boot messages also to boot.log
local7.* /var/log/boot.log
# 定義轉發規則
# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$WorkDirectory /var/lib/rsyslog # where to place spool files
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList # run asynchronously
#$ActionResumeRetryCount -1 # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###
(2)rsyslog.conf配文件內容說明
1)/etc/rsyslog.conf
配置文件格式
格式:
#服務名稱[連接符號]日誌等級 日誌記錄位置
authpriv.* /var/log/secure
說明:
認證相關服務.所有日誌等級 記錄在/var/log/secure日誌中。
2)服務名稱
rsyslogd
服務可以識別以下服務的日誌,也可以理解為,以下這些服務委託了rsyslogd
服務來代為管理日誌。
服務名稱 | 說明 |
---|---|
auth (LOG_AUTH) |
安全和認證相關消息(不推薦使用authpriv 替代)。 |
authpriv (LOG_AUTHPRIV) |
安全和認證相關消息(私有的)。 |
cron (LOG_CRON) |
系統定時任務cront 和at 產生的日誌。 |
daemon (LOG_DAEMON) |
和各個守護進程相關的日誌。 |
ftp (LOG_FTP) |
ftp 守護進程產生的日誌。 |
kern (LOG_KERN) |
內核產生的日誌(不是用戶進程產生的)。 |
local0-local7 (LOG_LOCAL0-7) |
為本地使用預留的服務。 |
lpr (LOG_LPR) |
列印產生的日誌。 |
mail (LOG_MAIL) |
郵件收發資訊。 |
news (LOG_NEWS) |
與新聞伺服器相關的日誌。 |
syslog (LOG_SYSLOG) |
有syslogd 服務產生的日誌資訊(雖然服務名稱已經改為 rsyslogd ,但是很多配置都還是沿用了syslogd 的,這裡並沒有修改服務名)。 |
user (LOG_USER) |
用戶等級類別的日誌資訊。 |
uucp (LOG_UUCP) |
uucp 子系統的日誌資訊,uucр 是早Linux系統進行數據傳遞的協議,後來也常用在新聞組服務中。 |
3)連接符號
日誌服務連接日誌等級的格式是:
日誌服務[連接符號]日誌等級 日誌記錄位置
在這裡連接符號可以識別為:
.
代表只要比後面的等級高的(包含該等級)日誌都記錄下來。
比如:cron.info
代表cron
服務產生的日誌,只要日誌等級大於等於info
級別,就記錄。.=
代表只記錄所需等級的日誌,其他等級的都不記錄。
比如:*.=emerg
代表任何日誌服務產生的日誌資訊,只要等級是emerg
等級就記錄。(這種方式用的很少).!
代表不等於,也就是除了該等級的日誌外,其他等級的日誌都記錄。
4)日誌等級
等級名稱 | 說明 |
---|---|
debug (LOG_DEBUG) |
一般的調試資訊說明。 |
info (LOG_INFO) |
基本的通知資訊。 |
notice (LOG_NOTICE) |
普通訊息,但是有一定的重要性。 |
warning (LOG_WARNING) |
警告資訊,但是還不會影響到服務或系統的運行。 |
err (LOG_ERR) |
錯誤資訊,一般達到err 等級的資訊,已經可以影響到服務或系統的運行了。 |
crit (LOG_CRIT) |
臨界狀況資訊,比err 等級還要嚴重。 |
alert (LOG_ALERT) |
警告狀態資訊,比crit 還要嚴重。必須立即採取行動。 |
emerg (LOG_EMERG) |
疼痛等級的日誌資訊,系統已經無法使用了。 |
* |
代表所有日誌等級,比如:authpriv.* 代表authpriv 認證資訊服務產生的日誌,所有的日誌等級都記錄。 |
debug
日誌等級最低, emerg
日誌等級最高。日誌等級低,他記錄的日誌資訊可能就會多些。
提示:
日誌等級這裡還可以識別
none
,如果日誌等級是none
,就說明忽略這個日誌服務,該服務的所有日誌都不再記錄。
5)日誌記錄位置
日誌記錄位置就是當前日誌輸出到哪個日誌文件中保存,當然也可以把日誌輸出到印表機列印,或者輸出到遠程日誌伺服器上(當然日誌伺服器要允許接收才行)。日誌的記錄位置也是固定的,我們來學習下:
- 日誌文件的絕對路徑。這是最常見的日誌保存方法,如
/var/log/secure
就是保存系統驗證和授權資訊日誌的。 - 系統設備文件。如
/dev/lp0
代表第一台印表機,如果日誌保存位置是印表機設備的話,當有日誌時就會在印表機列印(現在基本上沒有這種情況了,請放棄)。 - 轉發給遠程主機。因為可以選擇使用TCP協議和UDP協議傳輸日誌資訊,所以有兩種發送格式。
如果使用@192.168.0.210:514
,就會把日誌內容使用UDP協議發送到192.168.0.210的UDP 514埠上
,
如果使用@@192.168.0.210:514
就會把日誌內容使用TCP協議發送到192.168.0.210的TCP 514埠上
。
其中514是日誌服務默認埠。(知道有這個功能即可)
當然只要192.168.0.210
伺服器同意接收此日誌,就可以把日誌內容保存在日誌伺服器上。 - 用戶名。如
root
,就會把日誌發送給root
用戶,當然root
要在在線,否則就收不到日誌資訊了。
發送日誌給用戶時,可以使用*
代表發送給所有在線用戶,如:mail.emerg *
就會把mail
服務產生的所有級別的日誌發送給所有在線用戶。
如果需要把日誌發送給多個在線用戶,用戶名之間用,
分隔。 ~
:忽略或丟棄日誌。如果接受日誌的對象是~
,代表這個日誌不會記錄,而被直接丟棄。
例如:local3.* ~
代表忽略local3
服務類型所有的日誌都不記錄。
(3)定義自己的日誌
為什麼需要自己定義日誌配置文件。
因為我們日常工作中,可能需要對某些日誌資訊做一些操作。有自定義的日誌資訊,按照自己習慣或者方便查看的方式定義日誌資訊格式,作為模板,我們能夠更好的操作日誌。
# 1.編輯/etc/rsyslog.conf配置文件。
[root@localhost ~]# vim /etc/rsyslog.conf
# 寫入如下日誌資訊配置。
# 把所有服務的「錯誤資訊」以上的錯誤都保存在/var/log/err.log日誌文件中。
*.err /var/log/err.log
# 2.重啟rsyslog服務。
[root@localhost ~]# service rsyslog restart
關閉系統日誌記錄器: [確定]
啟動系統日誌記錄器: [確定]
# 3.重啟rsyslog服務完成後,查看/var/log/目錄下,是否有err.log文件。
[root@localhost ~]# ll /var/log/err.log
-rw-------.1 root root 06月 6 16:33 /var/log/err.log
# 查看到了err.log日誌文件,說明上面配置的"*.err"自定義日誌生效了。