# Linux系統中如何安裝Syslog
## 目錄
1. [Syslog簡介](#syslog簡介)
2. [安裝前的準備](#安裝前的準備)
3. [安裝Rsyslog](#安裝rsyslog)
4. [配置Rsyslog](#配置rsyslog)
5. [日志輪轉配置](#日志輪轉配置)
6. [測試Syslog功能](#測試syslog功能)
7. [高級配置技巧](#高級配置技巧)
8. [常見問題排查](#常見問題排查)
9. [安全加固建議](#安全加固建議)
10. [總結](#總結)
---
## Syslog簡介
Syslog是Linux系統中標準的日志記錄機制,它由三個主要組件組成:
- **syslogd**:日志守護進程
- **配置文件**:通常位于`/etc/syslog.conf`或`/etc/rsyslog.conf`
- **logger命令**:用戶空間工具
現代Linux發行版大多使用**Rsyslog**作為默認實現,相比傳統syslogd具有:
- 支持TCP/UDP傳輸
- 更豐富的過濾條件
- 模塊化設計
- 高性能隊列處理
---
## 安裝前的準備
### 系統環境檢查
```bash
# 檢查當前系統日志服務
systemctl list-units | grep -E 'syslog|rsyslog'
# 查看系統版本
lsb_release -a
cat /etc/os-release
# 對于Debian/Ubuntu
sudo apt update
sudo apt install build-essential libestr-dev libfastjson4
# 對于RHEL/CentOS
sudo yum install gcc make libestr-devel libfastjson-devel
# 開放UDP 514端口(傳統syslog端口)
sudo ufw allow 514/udp
# 或TCP 514
sudo ufw allow 514/tcp
# Debian/Ubuntu
sudo apt install rsyslog
# RHEL/CentOS 7+
sudo yum install rsyslog
# Arch Linux
sudo pacman -S rsyslog
wget https://www.rsyslog.com/files/download/rsyslog/rsyslog-8.2212.0.tar.gz
tar -xzf rsyslog-*.tar.gz
cd rsyslog-8.2212.0
./configure --prefix=/usr/local/rsyslog --enable-imfile
make
sudo make install
rsyslogd -v
# 應顯示類似:
# rsyslogd 8.2212.0 (aka 2022.12) compiled with...
/etc/rsyslog.conf
|-- 全局指令 (Global directives)
|-- 模塊加載 (Modules)
|-- 規則集 (Rulesets)
# 啟用UDP監聽
module(load="imudp")
input(type="imudp" port="514")
# 啟用TCP監聽
module(load="imtcp")
input(type="imtcp" port="514")
# 按設施/優先級分離日志
auth,authpriv.* /var/log/auth.log
*.info;mail.none /var/log/syslog
cron.* /var/log/cron.log
template(name="DynFile" type="string"
string="/var/log/%programname%/%$YEAR%-%$MONTH%-%$DAY%.log")
if $programname == 'nginx' then {
action(type="omfile" dynaFile="DynFile")
stop
}
# /etc/logrotate.d/rsyslog
/var/log/syslog {
daily
missingok
rotate 7
compress
delaycompress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
# 在rsyslog.conf中添加
$outchannel log_rotation,/var/log/app.log, 5000000,/opt/scripts/rotate.sh
:programname, isequal, "myapp" :omfile:$log_rotation
# 使用logger命令
logger -p local0.notice "This is a test message"
# 帶標簽和結構化數據
logger -t MYAPP -p user.err "Error occurred" [exampleSDID@32473 iut="3"]
# 實時監控日志
tail -f /var/log/syslog
# 使用高級過濾
grep -E 'error|fail' /var/log/syslog
journalctl -u rsyslog --since "1 hour ago"
# 發送端配置
*.* @192.168.1.100:514 # UDP
*.* @@192.168.1.100:514 # TCP
# 接收端配置
module(load="imtcp")
input(type="imtcp" port="514" ruleset="remote")
ruleset(name="remote") {
action(type="omfile" file="/var/log/remote/%HOSTNAME%.log")
}
# 丟棄包含敏感信息的日志
:msg, contains, "password" ~
# 條件判斷
if $msg contains 'error' then {
action(type="omfile" file="/var/log/errors.log")
}
# 檢查配置語法
rsyslogd -N1
# 查看詳細錯誤
journalctl -xe
# 確保正確的SElinux上下文
semanage fcontext -a -t syslogd_var_lib_t "/var/log/custom(/.*)?"
restorecon -Rv /var/log/custom
啟用TLS加密:
module(load="imtcp" StreamDriver.Name="gtls"
StreamDriver.Mode="1"
StreamDriver.AuthMode="x509/name")
訪問控制:
$AllowedSender TCP, 192.168.1.0/24
日志完整性保護:
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
通過本文您已掌握: - Rsyslog的多種安裝方式 - 基礎與高級配置方法 - 日志輪轉管理技巧 - 故障排查與安全實踐
建議進一步探索: - 與Elastic Stack集成實現日志分析 - 使用RELPs協議替代傳統syslog協議 - 配置多路徑日志冗余存儲
注:本文基于Rsyslog v8+版本編寫,部分配置可能需要根據實際環境調整。 “`
該文檔包含: 1. 完整的安裝配置流程 2. 實際可操作的命令示例 3. 結構化層次設計 4. 安全注意事項 5. 故障排查指導 6. 擴展學習建議
可根據具體需求調整各部分詳細程度或添加特定發行版的注意事項。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。