大数据-186 Logstash JDBC vs Syslog Input
1. JDBC Input
1.1 原理
通过 JDBC 驱动连接 MySQL、PostgreSQL 等关系型数据库,执行 SQL 查询获取数据。
1.2 关键配置
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
jdbc_user => "root"
jdbc_password => "password"
jdbc_driver_library => "/path/to/mysql-connector-java.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
statement => "SELECT * FROM orders WHERE create_time > :sql_last_value"
tracking_column => "create_time"
last_run_metadata_path => "/path/to/last_run"
}
}
1.3 增量同步关键
| 参数 | 说明 |
|---|---|
sql_last_value | 上次查询的最大值 |
tracking_column | 跟踪的列(时间戳/自增ID) |
last_run_metadata_path | 保存上次运行状态 |
1.4 适用场景
- 数据库到 Elasticsearch 的数据导入
- ETL 数据同步
- 定时批量同步
2. Syslog Input
2.1 原理
监听 syslog 端口(默认 514),接收系统日志。
2.2 配置
input {
syslog {
port => 514
codec => plain {
format => "%{message}"
}
}
}
2.3 适用场景
- 系统日志收集
- 网络设备日志
- 实时日志流
3. 对比
| 维度 | JDBC Input | Syslog Input |
|---|---|---|
| 数据源 | 关系型数据库 | 实时日志流 |
| 同步方式 | 定时批量 | 实时推送 |
| 状态管理 | sql_last_value | 无状态 |
| 适用场景 | ETL/离线同步 | 实时监控 |
4. 总结
- JDBC:适合数据库同步,批量处理
- Syslog:适合实时日志收集
- 根据业务场景选择合适的 Input 插件