rsyslog 是實現日誌功能的服務,用來採集日誌信息。 主配置文件/etc/rsyslog.conf中,可以設置日誌的處理方式。 MODULES 預設開啟的兩個 imuxsock、imjournal imuxsock 提供對本地系統日誌記錄的支持 imjournal 提供對systemd日誌的訪問 ...
rsyslog 是實現日誌功能的服務,用來採集日誌信息。
主配置文件/etc/rsyslog.conf
中,可以設置日誌的處理方式。
MODULES
-
預設開啟的兩個 imuxsock、imjournal
-
imuxsock
提供對本地系統日誌記錄的支持 -
imjournal
提供對systemd日誌的訪問 -
imudp
提供 UDP 方式系統日誌接收 -
imtcp
提供 TCP 方式系統日誌接收
RULES
-
規則設置的格式是
filter action
-
將
filter
過濾後的日誌,送到action
處理 -
多個 rule 用分號隔開
*.info;mail.none
過濾器 filter
-
基於
設施.優先順序
的過濾器。例:kern.* /dev/console
-
kern
是產生日誌的設施,*
是日誌優先順序 -
設施類型(facility)
kern
內核信息
user
用戶程式產生的相關信息
mail
郵件系統信息
daemon
守護進程產生的信息
auth
pam認證系統信息
syslog
日誌系統自身信息
authpriv
ssh、ftp等登錄信息
cron
系統執行定時任務產生的信息
lpr
列印相關信息
mark
服務內部的信息,時間標識
uucp
Unix-to-Unix Copy 兩個unix之間的相關通信
local0-local7
保留,本地使用-
多個設施用
,
隔開 -
*
表示所有設施
-
-
日誌優先順序(priority)
-
debug (7) , info (6) , notice (5) , warning (4) , err (3) , crit (2) , alert (1) , emerg (0)
-
none
會記錄沒有指定級別的信息 -
*
記錄所有級別信息 -
多個級別用
,
隔開
-
-
記錄日誌內容的設置
.
等級高於符號後面的信息會記錄
.=
只有符號後面等級的信息會記錄
.!
除了符號後面等級,其他的都會記錄(註意前面需要先有其他過濾規則,否則什麼不記錄)
-
-
基於屬性的過濾器。例
:msg, contains, "error"
-
:msg
是要比較的日誌屬性,contains
是要執行的比較操作,"error"
是比較的值 -
比較操作
contains
匹配提供的字元串值是否是屬性的一部分,如果不區分大小寫,使用contains_iisequal
比較屬性和值是否相等startswith
屬性是否以指定字元串開始(startswith_i)regex
正則表達式(POSIX BRE 基本正則)匹配ereregex
正則表達式(POSIX ERE 擴展正則)匹配isempty
判斷屬性是否為空,不需要 value
-
-
基於表達式的過濾器
- 使用了 rsyslog 自定義的腳本語言
RainerScript
構建複雜的 filter。
- 使用了 rsyslog 自定義的腳本語言
執行操作 action
多個 action 用&
連接
action 後面加;模板名
可以使用模板格式化日誌
-
日誌保存到日誌文件。例
cron.* /var/log/cron.log
-
表示所有 cron 執行的日誌都放在 cron.log 中
-
通常生成日誌時會同步到日誌文件。前面加
-
則忽略同步 -
可以動態生成日誌文件,用預定義輸出路徑模板,併在文件名前加
?
-
-
通過網路發送日誌信息
*.* @192.168.0.1 # 使用 UDP 發送,預設埠514 *.* @@example.com:18 # 使用 TCP 發送到埠18, 預設10514 *.* @(z9)[2001:db8::1] # UDP, ipv6,使用zlib級別9壓縮
-
@
表示用 UTP 協議發送 -
@@
表示用 TCP 協議發送 -
z9
表示用 zlib 壓縮日誌級別,可設置 1-9。可以不設置壓縮
-
-
丟棄日誌,例
cron.* ~
- 使用
~
- 使用
模板 template
所有系統日誌都可以用指定模板進行格式化
-
創建模板
$template TEMPLATE_NAME,"text %PROPERTY% more text", [OPTION]
-
TEMPLATE_NAME
為模板名稱 -
"text %PROPERTY% more text"
為模板內容 -
OPTION
為模板功能,可設置sql
和stdsql
,資料庫存儲時用到
-
-
生成動態文件名
$template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log" *.* ?DynamicFile
timegenerated
屬性從日誌信息中提取出信息時間戳
-
屬性
-
屬性放在兩個
%
之間,可以取得日誌信息中的內容。 -
可用的屬性列表
man rsyslog.conf
-
服務確認
-
修改配置後重啟服務
systemctl restart rsyslog.service
-
寫入測試 log
logger -p syslog.info -t test "this is a test log."
-
在系統日誌文件
/var/log/messages
中確認寫入的測試 log
rsyslog 能滿足幾乎所有的日誌處理。
以後有用到其他內容再來補充