日志聚合选 Logstash 还是 rsyslog?
rsyslog 轻量高性能,擅长 syslog 协议消息的收集转发;Logstash 转换能力强(grok/富化)但资源消耗大。两者可组合使用。本文详细对比。
一句话:rsyslog 是轻量高性能的 syslog 消息路由器**(收集、转发、写文件);Logstash 是重型日志处理管道(grok 解析、字段富化、多输出)。纯转发用 rsyslog,需要深度解析用 Logstash,大系统两者配合。**
对比
| 维度 | rsyslog | Logstash |
|---|---|---|
| 核心定位 | syslog 守护进程 | 日志处理管道 |
| 性能/资源 | 极高性能,内存占用极小 | JVM,内存数百 MB 起 |
| 协议 | 原生 syslog(UDP/TCP/RELP) | 多协议插件 |
| 解析能力 | 基础(模板、正则) | 强(grok、mutate、geoip) |
| 输出 | 文件、转发、部分存储 | ES/Kafka/S3 等丰富插件 |
| 典型角色 | 系统日志的收集与路由 | 应用日志的解析与入仓 |
各自的最佳场景
选 rsyslog:服务器系统日志集中到日志服务器、网络设备 syslog 接收转发、对资源敏感的海量节点。
选 Logstash:应用日志需要 grok 解析出结构化字段、需要富化(IP 地理位置、字典查询)、需要灵活的输出路由。
组合架构
各服务器 rsyslog → 中心 rsyslog → Logstash → Elasticsearch
rsyslog 做第一公里的高效收集,Logstash 做解析入仓,各展所长。
观测云对照
观测云 DataKit 同时覆盖两者的能力:轻量(类 rsyslog 的低资源采集,支持 syslog 接收)+ 强转换(Pipeline 的 grok/字段处理),一个组件完成采集、解析、上报,无需维护两套系统。
常见问题(FAQ)
Q:rsyslog 能直接写 Elasticsearch 吗?
A:有 omelasticsearch 输出模块可以写,但 mapping 管理、错误处理不如 Logstash 灵活,只适合简单场景。
Q:性能差距有多大?
A:rsyslog 单机每秒可处理数十万条消息;Logstash 典型吞吐在每秒数千到数万条(取决于 filter 复杂度)。
Q:已经在用 rsyslog,值得换吗?
A:如果只做转发没必要换;如果开始需要结构化解析和统一检索,可以引入 DataKit 或 Logstash 做解析层。