rsyslog
1. 什么是 rsyslog
rsyslog 是一個高性能的日志處理程序,能夠接收、處理并轉發日志消息。它被廣泛應用于 UNIX 和 Linux 系統中,用于系統日志記錄和管理。
2. rsyslog 的主要功能
- 高性能:能夠處理大量日志消息,適用于大規模的日志管理需求。
- 模塊化架構:支持多種輸入和輸出模塊,可以靈活地擴展功能。
- 日志過濾和重寫:支持復雜的日志過濾和重寫規則,便于精確控制日志流。
- 支持多種協議:能夠處理多種日志傳輸協議,如 TCP、UDP、TLS 等。
- 安全性:支持加密傳輸和認證,確保日志消息的安全性。
3. rsyslog 的基本配置
rsyslog 的配置文件通常位于 /etc/rsyslog.conf
或 /etc/rsyslog.d/
目錄下。其配置文件采用規則-動作(rules-actions)結構。
命令:
systemctl status rsyslog.service
配置示例
# 基本格式
# :規則:動作# 接收本地日志并寫入文件
*.* /var/log/all.log# 接收遠程日志(UDP)并寫入文件
$ModLoad imudp
$UDPServerRun 514
*.* /var/log/remote.log# 接收遠程日志(TCP)并寫入文件
$ModLoad imtcp
$InputTCPServerRun 514
*.* /var/log/remote_tcp.log# 基于消息優先級的日志過濾
authpriv.* /var/log/secure.log# 基于消息內容的日志過濾
:msg, contains, "error" /var/log/error.log
4. 日志優先級與設施
rsyslog 使用設施(facility)和優先級(priority)來分類和處理日志消息。
設施
常見設施包括:
- auth、authpriv:認證和安全相關消息
- cron:定時任務相關消息
- daemon:系統后臺進程相關消息
- kern:內核相關消息
- mail:郵件系統相關消息
- syslog:內部日志處理相關消息
優先級
優先級從高到低包括:
- emerg:緊急情況,需要立即通知所有用戶
- alert:需要立即處理的問題
- crit:嚴重情況
- err:錯誤
- warning:警告
- notice:普通但重要的消息
- info:信息性消息
- debug:調試消息
5. 常用命令
- 啟動 rsyslog:
sudo systemctl start rsyslog
- 停止 rsyslog:
sudo systemctl stop rsyslog
- 重啟 rsyslog:
sudo systemctl restart rsyslog
- 檢查 rsyslog 狀態:
sudo systemctl status rsyslog
- 重新加載配置:
sudo systemctl reload rsyslog
6. 高級功能
- 日志轉發:將日志消息轉發到遠程服務器
- 日志重寫:根據規則修改日志消息內容
- 日志歸檔:將日志消息歸檔處理,以節省存儲空間
- 日志分析:集成第三方工具進行日志分析和可視化
配置示例
-
客戶端配置
在客戶端服務器上,配置 rsyslog 將日志消息轉發到集中式日志服務器:# 配置遠程日志傳輸(UDP) *.* @logs.example.com:514# 配置遠程日志傳輸(TCP) *.* @@logs.example.com:514
-
服務器配置
在集中式日志服務器上,配置 rsyslog 接收來自客戶端的日志消息:# 加載輸入模塊 $ModLoad imudp $UDPServerRun 514$ModLoad imtcp $InputTCPServerRun 514# 將接收到的日志寫入文件 *.* /var/log/centralized.log