Ubuntu syslog支持共享(遠程傳輸/集中管理),主要通過rsyslog
(Ubuntu默認日志服務)或syslog-ng
工具實現,可將本地日志發送至遠程服務器,或從遠程服務器接收日志。以下是具體實現方法及注意事項:
rsyslog是Ubuntu系統默認的日志服務,配置簡單且功能強大,支持UDP/TCP傳輸。
sudo apt update && sudo apt install rsyslog
/etc/rsyslog.conf
或創建/etc/rsyslog.d/50-default.conf
,添加以下內容(以UDP為例,TCP需將@
改為@@
):*.* @remote_server_ip:514 # UDP傳輸(默認端口514)
# 或 *.* @@remote_server_ip:514 # TCP傳輸(更可靠)
將remote_server_ip
替換為遠程日志服務器的IP地址。sudo systemctl restart rsyslog
/etc/rsyslog.conf
,取消以下行的注釋(或添加):module(load="imudp") # 加載UDP模塊
input(type="imudp" port="514") # 開放UDP端口514
# 或 module(load="imtcp") # 加載TCP模塊
# input(type="imtcp" port="514") # 開放TCP端口514(更安全)
sudo systemctl restart rsyslog
logger
命令生成測試日志:logger -t "test_log" "This is a test log message from Ubuntu"
/var/log/syslog
或journalctl
:sudo tail -f /var/log/syslog | grep "test_log"
# 或 sudo journalctl -f -t "test_log"
若能看到測試日志,說明配置成功。syslog-ng是另一款流行的日志管理工具,支持更靈活的過濾和路由,適合復雜環境。
sudo apt update && sudo apt install syslog-ng
/etc/syslog-ng/syslog-ng.conf
,添加以下內容(以UDP為例,TCP需將udp
改為tcp
):destination d_remote { udp("remote_server_ip" port(514)); }; # 定義遠程目標
log { source(s_src); destination(d_remote); }; # 發送所有日志
sudo systemctl restart syslog-ng
/etc/syslog-ng/syslog-ng.conf
,添加以下內容(以UDP為例,TCP需調整協議):source s_network { udp(ip(0.0.0.0) port(514)); }; # 接收UDP日志
# 或 source s_network { tcp(ip(0.0.0.0) port(514)); }; # 接收TCP日志
destination d_local { file("/var/log/remote.log"); }; # 存儲到單獨文件
log { source(s_network); destination(d_local); }; # 路由日志
sudo systemctl restart syslog-ng
logger
命令生成測試日志,遠程服務器查看/var/log/remote.log
:sudo tail -f /var/log/remote.log
若能看到測試日志,說明配置成功。ufw
命令):sudo ufw allow 514/udp # 允許UDP
sudo ufw allow 514/tcp # 允許TCP
syslog-ng
的TLS模塊或rsyslog
的mmnormalize
模塊(需配置證書)。通過以上步驟,Ubuntu系統的syslog可實現遠程共享,滿足集中式日志管理需求。