大数据 -186 Logstash JDBC vs Syslog Input:原理、场景对比与可复用配置(基于 Logstash 7.3.0)

TL;DR
场景:从 MySQL 增量同步结构化数据到 Logstash;同时集中采集 Linux/设备 Syslog 日志并解析。
结论:JDBC 适合“按表/按 SQL 拉取+增量位点”;Syslog 适合“网络日志流入+Grok/Date 解析”,两者瓶颈分别在 DB/查询与网络/解析。
产出:两套可跑通的 Logstash 7.3.0 配置(jdbc.conf、syslog.conf)+ 增量追踪与 rsyslog 转发链路。
版本矩阵
基本介绍
Logstash 的 JDBC 和 Syslog 是两种功能各异的 Input 插件,它们分别针对不同的数据源进行优化设计,在数据处理流程中扮演着关键角色。下面将详细阐述它们的技术特性、应用场景及典型配置:
JDBC 插件深入解析
核心功能:
支持主流关系型数据库:MySQL (5.7+)、PostgreSQL (9.6+)、Oracle (12c+)、SQL Server (2016+)等
基于 JDBC 4.2 规范实现,使用数据库官方提供的 JDBC 驱动
支持增量数据采集:通过
sql_last_value参数记录最后处理位置典型应用场景:
数据仓库的 ETL 流程
业务系统数据库变更监控
将传统数据库数据导入 Elasticsearch 集群
示例:电商订单数据实时同步
关键配置参数:
Syslog 插件技术细节
协议支持:
RFC3164 (旧版 BSD syslog)
RFC5424 (新版结构化 syslog)
支持 TCP/UDP 两种传输协议
网络配置选项:
端口绑定:默认 514 (UDP) / 6514 (TCP)
支持 TLS 加密传输
可配置多个监听端口实现多租户隔离
典型部署模式:
网络设备日志收集(路由器/交换机)
Linux 系统日志集中管理
容器环境日志采集(Docker syslog 驱动)
示例:防火墙日志处理
高级功能:
支持自定义消息解析模式
可配置时区转换
提供消息优先级(PRI)解析
两种插件在性能调优方面也存在差异:JDBC 插件需要关注数据库连接池配置和批处理大小,而 Syslog 插件则需要优化网络缓冲区设置和并发处理能力。实际部署时,建议根据数据量级和延迟要求进行针对性调优。
JDBC Input 插件
JDBC 插件用于从关系型数据库中提取数据,特别适用于将结构化的业务数据导入到 ELK(Elasticsearch, Logstash, Kibana)堆栈中。它支持定时调度和增量提取,适合数据同步和 ETL 场景。
主要功能:
数据库连接:使用 JDBC 驱动来连接各种数据库(例如 MySQL、PostgreSQL、Oracle、SQL Server 等)。
SQL 查询:允许用户通过 SQL 查询语句选择数据,支持复杂的查询条件。
增量提取:可以配置“追踪列”(tracking column),基于某一列(如自增 ID 或时间戳)实现增量数据拉取,避免重复导入。
定时调度:可以设置定时任务,定期查询和同步数据库的数据。
错误重试机制:可以处理连接错误并自动重试,确保数据采集的稳定性。
Syslog Input 插件
Syslog 插件用于接收基于 Syslog 协议传输的日志数据。Syslog 是一种广泛使用的日志协议,特别是在网络设备和 Linux/Unix 操作系统中。Logstash 的 Syslog 插件能够监听特定的端口,接收和解析这些日志。
主要功能:
协议支持:支持 Syslog 协议,包括 RFC 3164 和 RFC 5424 格式的日志。
多种传输方式:支持通过 TCP 和 UDP 协议接收日志,适应不同的传输需求。
日志解析:自动解析 Syslog 消息的头部字段,例如时间戳、主机名、程序名等。
网络监听:可以通过监听指定的 IP 和端口,持续接收并处理来自网络的 Syslog 日志。
JDBC 插件
JDBC 插件可以采集某张数据库表当中的数据到 Logstash 当中来
准备数据
目前我们的 MySQL 服务器是在 h122 节点上的(之前给 Hive 和 HBase 等业务使用的),现在我们需要到 h122 数据库中,执行上述的 SQL 指令。我这里使用 Navicat 执行, 执行结果如下图所示:
编写配置
写入如下的内容(这里注意些自己的环境,我的环境和你的不一样):
检查配置
执行结果如下图所示:
启动服务
启动结果如下图所示:
可以看到获取到了对应的数据:
发送数据
现在向数据库中写入数据,就可以发现 Logstash 监听到了:
对应的 Logstash 的变化:
syslog 插件
syslog 机制负责记录内核和应用程序产生的日志信息,管理员可以通过查看日志记录,来掌握系统状况,默认系统已经安装了 rsyslog,直接启动即可。
编写配置
创建新脚本,syslog.conf
写入如下的内容:
写入的内容如下图所示:
检查配置
执行结果如下图所示:
启动服务
执行结果如下图所示:
发送数据
修改系统日志配置文件
添加一行配置:
写入的效果如下图所示:
重启系统日志服务
查看数据,可以看到如下的效果:
错误速查
其他系列
🚀 AI 篇持续更新中(长期更新)
AI 炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有部署 测试上手 架构研究,持续打造实用 AI 工具指南!AI 研究-132 Java 生态前沿 2025:Spring、Quarkus、GraalVM、CRaC 与云原生落地🔗 AI模块直达链接
💻 Java 篇持续更新中(长期更新)
Java-196 消息队列选型:RabbitMQ vs RocketMQ vs KafkaMyBatis 已完结,Spring 已完结,Nginx 已完结,Tomcat 已完结,分布式服务已完结,Dubbo 已完结,MySQL 已完结,MongoDB 已完结,Neo4j 已完结,FastDFS 已完结,OSS 已完结,GuavaCache 已完结,EVCache 已完结,RabbitMQ 正在更新... 深入浅出助你打牢基础!🔗 Java模块直达链接
📊 大数据板块已完成多项干货更新(300 篇):
包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT 案例 详解🔗 大数据模块直达链接
版权声明: 本文为 InfoQ 作者【武子康】的原创文章。
原文链接:【http://xie.infoq.cn/article/0d444d59e2eb6804b417bce69】。文章转载请联系作者。







评论