大数据-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 InputSyslog Input
数据源关系型数据库实时日志流
同步方式定时批量实时推送
状态管理sql_last_value无状态
适用场景ETL/离线同步实时监控

4. 总结

  • JDBC:适合数据库同步,批量处理
  • Syslog:适合实时日志收集
  • 根据业务场景选择合适的 Input 插件