日志集中收集怎么做
把日志转发到集中日志服务器,客户端通常只需要一小段配置:老写法用两个符号加地址表示走可靠传输,新写法用动作对象的写法指定目标、端口与协议。服务端需要加载接收模块并监听端口,再用模板把不同来源的日志分目录落盘,便于按主机与程序检索。
基本信息
| 标准端口 | 514 |
|---|---|
| 可靠传输 | 传统写法用两个符号,动作写法指定协议为 tcp |
| 客户端配置 | /etc/rsyslog.d/ 下的独立文件 |
| 服务端模块 | 加载传输控制协议的接收模块并监听 |
| 落盘模板 | 按主机名与程序名分目录 |
典型使用场景
- 多台主机日志统一收集,便于集中检索
- 安全合规要求日志异地留存
- 业务主机磁盘有限,日志及时外送
- 故障复盘时跨主机对齐时间线
- 为日志分析平台提供统一数据源
客户端配置
客户端配置
# /etc/rsyslog.d/90-remote.conf 新式动作写法
*.* action(type='omfwd' target='10.0.0.20' port='514' protocol='tcp')
# 传统写法:两个符号表示可靠传输,一个符号表示无连接传输
*.* @@10.0.0.20:514 # 走传输控制协议
# *.* @10.0.0.20:514 # 走用户数据报协议,长配置里按需选择
systemctl restart rsyslog服务端配置与验证
服务端配置与验证
# /etc/rsyslog.conf 中加载模块并监听
module(load='imtcp')
input(type='imtcp' port='514')
template(name='RemotePerHost' type='string' string='/data/logs/%HOSTNAME%/%PROGRAMNAME%.log')
*.* ?RemotePerHost
# 验证
systemctl restart rsyslog
ss -lntp | grep 514 # 确认端口在监听
logger -p user.info 'remote log test' # 客户端造一条测试日志
tail -5 /data/logs/$(hostname)/*.log 2>/dev/null | tail -5传输方式对比
| 方式 | 可靠性 | 适用场景 |
|---|---|---|
| 无连接传输 | 可能丢包 | 内网低要求场景 |
| 可靠传输 | 有重传机制 | 跨网段与重要日志 |
| 加密传输 | 需额外模块 | 合规要求高的链路 |
| 本地落盘加转发 | 双份留存 | 既要本地查又要集中 |
部署检查点
- 客户端与服务端都完成配置并重启
- 服务端端口处于监听状态
- 两端防火墙均放行目标端口
- 测试日志能出现在服务端落盘目录
- 日志目录已纳入容量监控
落地建议
- 跨网段转发优先选可靠传输
- 服务端按主机与程序分层存放
- 日志目录纳入容量监控与轮转
- 客户端配置放独立文件便于管理
- 定期抽查是否仍有日志持续到达
标准端口的无连接传输没有加密也缺乏完整性保护,容易被伪造且可能丢包;按合规要求评估后选择可靠传输或加密方案。