首頁 > linux教程 > Linux系統日志管理 閱讀:0更新時間:2020-03-28 01:03:38

rsyslogd配置文件格式及其內容詳解

rsyslogd 服務是依賴其配置文件 /etc/rsyslog.conf 來確定哪個服務的什么等級的日志信息會被記錄在哪個位置的。也就是說,日志服務的配置文件中主要定義了服務的名稱、日志等級和日志記錄位置。

/etc/rsyslog.conf配置文件的格式

該配置文件的基本格式如下所示:

authpriv.* /var/log/secure
#服務名稱[連接符號]日志等級 日志記錄位置
#認證相關服務.所有日志等級 記錄在/var/log/secure日志中

服務名稱

我們首先需要確定 rsyslogd 服務可以識別哪些服務的日志,也可以理解為以下這些服務委托 rsyslogd 服務來代為管理日志。這些服務如表 1 所示。

表 1 日志服務名稱
服務名稱 說 明
auth(LOG AUTH) 安全和認證相關消息 (不推薦使用authpriv替代)
authpriv(LOG_AUTHPRIV) 安全和認證相關消息(私有的)
cron (LOG_CRON) 系統定時任務cront和at產生的日志
daemon (LOG_DAEMON) 與各個守護進程相關的曰志
ftp (LOG_FTP) ftp守護進程產生的曰志
kern(LOG_KERN) 內核產生的曰志(不是用戶進程產生的)
Iocal0-local7 (LOG_LOCAL0-7) 為本地使用預留的服務
lpr (LOG_LPR) 打印產生的日志
mail (LOG_MAIL) 郵件收發信息
news (LOG_NEWS) 與新聞服務器相關的日志
syslog (LOG_SYSLOG) 存syslogd服務產生的曰志信息(雖然服務名稱己經改為reyslogd,但是很多配罝依然沿用了 syslogd服務的,所以這里并沒有修改服務名稱)
user (LOG_USER) 用戶等級類別的日志信息
uucp (LOG_UUCP> uucp子系統的日志信息,uucp是早期linux系統進行數據傳遞的協議,后來 也常用在新聞組服務中

這些日志服務名稱是rsyslogd服務自己定義的,并不是實際的Linux的服務。當有服務需要由rsyslogd服務來幫助管理日志時,只需要調用這些服務名稱就可以實現日志的委托管理。

這些日志服務名稱大家可以使用命令“man 3 syslog”來查看。雖然我們的日志管理服務已經更新到rsyslogd,但是很多配置依然沿用了syslogd服務,在幫助文檔中仍然查看syslog服務的幫助信息。

連接符號

日志服務連接日志等級的格式如下:

日志服務[連接符號]日志等級 日志記錄位置

在這里,連接符號可以被識別為以下三種。
  1. “.”代表只要比后面的等級高的(包含該等級)日志都記錄。比如,“cron.info”代表cron服務產生的日志,只要日志等級大于等于info級別,就記錄。
  2. “.=”代表只記錄所需等級的日志,其他等級的日志都不記錄。比如,“*.=emerg”代表人和日志服務產生的日志,只要等級是emerg等級,就記錄。這種用法極少見,了解就好。
  3. “.!”代表不等于,也就是除該等級的日志外,其他等級的日志都記錄。

日志等級

每個日志的重要性都是有差別的,比如,有些日志只是系統的一個日常提醒,看不看根本不會對系統的運行產生影響;但是有些日志就是系統和服務的警告甚至報錯信息,這些日志如果不處理,就會威脅系統的穩定或安全。如果把這些日志全部寫入一個文件,那么很有可能因為管理員的大意而忽略重要信息。

比如,我們在工作中需要處理大量的郵件,筆者每天可能會接收到200多封郵件。而這些郵件中的絕大多數是不需要處理的普通信息郵件,甚至是垃圾郵件。所以筆者每天都要先把這些大量的非重要郵件刪除之后,才能找到真正需要處理的郵件。但是每封郵件的標題都差不多,有時會誤刪除需要處理的郵件。這時筆者就非常懷念Linux的日志等級,如果郵件也能標識重要等級,就不會誤刪除或漏處理重要郵件了。

郵件的等級信息也可以使用“man 3 syslog”命令來查看。日志等級如表 2 所示,我們按照嚴重等級從低到高排列。

表 2 日志等級
等級名稱 說 明
debug (LOG_DEBUG) 一般的調試信息說明
info (LOG_INFO) 基本的通知信息
nolice (LOG_NOTICE) 普通信息,但是有一定的重要性
warning(LOG_WARNING) 警吿信息,但是還不會影響到服務或系統的運行
err(LOG_ERR) 錯誤信息, 一般達到err等級的信息已經可以影響到服務成系統的運行了
crit (LOG_CRIT) 臨界狀況信思,比err等級還要嚴®
alert (LOG_ALERT) 狀態信息,比crit等級還要嚴重,必須立即采取行動
emerg (LOG_EMERG) 疼痛等級信息,系統已經無法使用了
* 代表所有日志等級。比如,“authpriv.*”代表amhpriv認證信息服務產生的日志,所有的日志等級都記錄

日志等級還可以被識別為“none”。如果日志等級是none,就說明忽略這個日志服務,該服務的所有日志都不再記錄。

日志記錄位置

日志記錄位置就是當前日志輸出到哪個日志文件中保存,當然也可以把日志輸出到打印機打印,或者輸出到遠程日志服務器上(當然,遠程日志服務器要允許接收才行)。日志的記錄位置也是固定的:
  • 日志文件的絕對路徑。這是最常見的日志保存方法,如“/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.**”就會把 mail 服務產生的所有級別的日志發送給所有在線用戶。如果需要把日志發送給多個在線用戶,則用戶名之間用“,”分隔。
  • 忽略或丟棄日志。如果接收日志的對象是“~”,則代表這個日志不會被記錄,而被直接丟棄。如“local3.* ~”代表忽略 local3 服務類型所有的日志都不記錄。
  • 忽略或丟棄日志。如果接收日志的對象是“~”,則代表這個日志不會被記錄,而被直接丟棄。如“local3.* ~”代表忽略 local3 服務類型所有的日志都不記錄。

/etc/rsyslog.conf配置文件的內容

我們知道了/etc/rsyslog.conf 配置文件中日志的格式,接下來就看看這個配置文件的具體內容。

[root@localhost ~]# vi /etc/rsyslog.conf
#查看配置文件的內容
#rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.beylze.com/d/file/20190907/vvbsphprziv.html /> *### MODULES ###
#加載棋塊
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
#加載imixsock模塊,為本地系統登錄提供支持
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#加載imklog模塊,為內核登錄提供支持
#$ModLoad immark # provides --MARK-- message capability
#加載immark模塊,提供標記信息的能力
# Provides UDP syslog reception
#$ModLoad imudp
#SUDPServerRun 514
#加載UPD模塊,允許使用UDP的514端口接收采用UDP協議轉發的日志
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
#加栽TCP摸塊,允許使用TCP的514編口接收采用TCP協議轉發的日志
#### 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
#文件同步功能。默認沒有開啟,是注釋的
#Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
#包含/etx/tsyslog.d/目錄中所有的".conf"子配置文件。也就是說,這個目錄中的所有子配置文件也同時生效
#### RULES ####
#日志文件保存規則
#Log all kernel messages to the console.
#Logging much else clutters up the screen.
#kern.* /dev/console
#kern服務.所有曰志級別 保存在/dev/console
#這個日志默認沒有開啟,如果需要,則取消注釋
#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
#所有服務.info以上級到的日志保存在/var/log/messages日志文件中
#mail, authpriv^ cron的B志不記錄在/var/log/messages曰志文件中,因為它們部有自己的曰志文件
#所以/var/log/messages日志是最重要的系統日志文件,需要經常查看
#The authpriv file has restricted access.
authpriv.* /var/log/secure
#用戶認證服務所有級別的日志保存在/vai/1og/secure日志文件中
#Log all the mail messages in one place.
mail.* -/var/log/maillog
#mail服務的所有級別的日志保存在/var/log/maillog 日志文件中
#"-"的含義是日志先在內存中保存.當曰志足夠多之后.再向文件中保存
# Log cron stuff
cron.* /var/log/cron
#計対任務的所有日志保存在/var/log/cron日志文件中
# Everybody gets emergency messages
#所有日志服務的疼痛等級日志對所有在線用戶廣播
#Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler
#uucp和news曰志服務的crit以上級別的日志保存在/var/log/sppoler曰志文件中
#Save boot messages also to boot.log
local7.* /var/log/boot.log
#loacl7 日志服務的所有日志寫入/var/log/boot.log 日志文件中 #會把開機時的檢測信息在顯示到屏幕的同時寫入/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. #SWorkDirectory /var/lib/rsyslog # where to place spool files #$ActionQueueFileName fwdRulel # 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 t 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 #*•* @6remote-host:514
# ### end of the forwarding rule ##

其實系統已經非常完善地定義了這個配置文件的內容,系統中重要的日志也已經記錄得非常完備。如果是外來的服務,如 apache、Samba 等服務,那么這些服務的配置文件中也詳細定義了日志的記錄格式和記錄方法。所以,日志的配置文件基本上不需要我們修改,我們要做的僅僅是查看和分析系統記錄好的日志而已。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩