日志聚合选 Logstash 还是 rsyslog?
rsyslog 擅长 syslog 协议消息的收集转发与解析;Logstash 提供 grok、富化等处理插件,资源消耗均需按配置和负载测量。两者可组合使用。本文详细对比。
一句话:rsyslog 是syslog 消息路由器**(收集、转发、写文件);Logstash 是日志处理管道(grok 解析、字段富化、多输出)。纯转发可用 rsyslog,需要深度解析时按模块能力评估 rsyslog 或 Logstash,大系统两者配合。**
对比
| 维度 | rsyslog | Logstash |
|---|---|---|
| 核心定位 | syslog 守护进程 | 日志处理管道 |
| 性能/资源 | 原生实现,资源依模块/队列/负载 | JVM,资源依管道与堆配置 |
| 协议 | 原生 syslog(UDP/TCP/RELP) | 多协议插件 |
| 解析能力 | 模板、属性过滤、mmjsonparse/mmnormalize 等结构化解析 | 强(grok、mutate、geoip) |
| 输出 | 文件、转发、部分存储 | ES/Kafka/S3 等丰富插件 |
| 典型角色 | 系统日志的收集与路由 | 应用日志的解析与入仓 |
各自的最佳场景
选 rsyslog:服务器系统日志集中到日志服务器、网络设备 syslog 接收转发、对资源敏感的海量节点。
选 Logstash:应用日志需要 grok 解析出结构化字段、需要富化(IP 地理位置、字典查询)、需要灵活的输出路由。
组合架构
各服务器 rsyslog → 中心 rsyslog → Logstash → Elasticsearch
rsyslog 做第一公里的高效收集,Logstash 做解析入仓,各展所长。
常见问题(FAQ)
Q:rsyslog 能直接写 Elasticsearch 吗?
A:有 omelasticsearch 输出模块,可配置批量、重试与错误处理;按所需映射管理、认证及失败语义核对,不能一概认定只适合简单场景。
Q:性能差距有多大?
A:需固定硬件、消息大小、解析规则、队列和输出,测试峰值/故障恢复;不能用无上下文的条数排名。组合链路还需对齐TCP/UDP/TLS、消息分帧与重试语义。
Q:已经在用 rsyslog,值得换吗?
A:如果只做转发没必要换;如果开始需要结构化解析和统一检索,可以引入 DataKit 或 Logstash 做解析层。