准备工作
-
环境要求
- 服务端:一台具备公网/IP可达的Linux服务器(建议2核4G以上配置)。
- 客户端:需要发送日志的Linux设备(数量不限)。
- 网络:确保服务端与客户端之间开放UDP/TCP 514端口(默认日志传输端口)。
-
安装必要工具
-
服务端与客户端均需安装 Rsyslog(替代传统syslog的增强工具):
# Ubuntu/Debian sudo apt update && sudo apt install rsyslog -y # CentOS/RHEL sudo yum install rsyslog -y
-
服务端配置
步骤1:修改Rsyslog配置文件
sudo vim /etc/rsyslog.conf
-
取消以下行的注释(启用UDP/TCP监听):
module(load="imudp") input(type="imudp" port="514") module(load="imtcp") input(type="imtcp" port="514")
步骤2:配置日志存储规则
在文件末尾添加规则(按IP或主机名分类存储):
$template RemoteLogs, "/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& ~
- 解释:
%HOSTNAME%
:客户端主机名%PROGRAMNAME%
:日志来源程序名& ~
:避免重复写入本地日志
步骤3:创建日志目录并重启服务
sudo mkdir -p /var/log/remote sudo systemctl restart rsyslog sudo systemctl enable rsyslog
步骤4:防火墙放行端口
# 若使用firewalld(CentOS) sudo firewall-cmd --permanent --add-port=514/tcp sudo firewall-cmd --permanent --add-port=514/udp sudo firewall-cmd --reload # 若使用ufw(Ubuntu) sudo ufw allow 514/tcp sudo ufw allow 514/udp
客户端配置
步骤1:修改客户端Rsyslog配置
sudo vim /etc/rsyslog.conf
在文件末尾添加(假设服务端IP为192.168.1.100):
*.* @192.168.1.100:514 # UDP传输
*.* @@192.168.1.100:514 # TCP传输(更可靠)
步骤2:重启客户端服务
sudo systemctl restart rsyslog
高级配置(可选)
-
日志轮转与压缩
安装logrotate
并配置/etc/logrotate.d/remote_logs
:/var/log/remote/*/*.log { daily missingok rotate 30 compress delaycompress sharedscripts postrotate systemctl reload rsyslog > /dev/null 2>&1 || true endscript }
-
加密传输(TLS)
- 生成证书:
sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/rsyslog.key -out /etc/rsyslog.crt -nodes -days 3650
- 服务端配置:
module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1") input(type="imtcp" port="6514" StreamDriver.AuthMode="anon")
- 客户端配置:
*.* @@(o)192.168.1.100:6514;RSYSLOG_SyslogProtocol23Format
- 生成证书:
验证与测试
-
客户端生成测试日志
logger "This is a test message from client"
-
服务端检查日志文件
tail -f /var/log/remote/[客户端主机名]/user.log
维护与优化建议
- 监控磁盘空间:使用
df -h
定期检查日志存储分区。 - 日志分析工具:集成ELK(Elasticsearch、Logstash、Kibana)进行可视化分析。
- 备份策略:通过
rsync
或云存储定期备份关键日志。
安全注意事项
- 限制访问IP:在服务端防火墙中仅允许可信客户端IP访问514端口。
- 避免使用root权限:日志目录权限建议设置为
chown syslog:adm /var/log/remote
。 - 定期审计:检查日志文件是否包含敏感信息(如密码、密钥)。
常见问题
-
日志未接收
- 检查服务端与客户端防火墙规则。
- 使用
tcpdump -i eth0 port 514
抓包排查网络问题。
-
权限错误
- 确保
/var/log/remote
目录权限为syslog
用户可写。
- 确保
引用说明
- Rsyslog官方文档:https://www.rsyslog.com/doc/
- Linux man pages:
man rsyslog.conf
,man logger
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/4779.html