Logstash——Logstash从MySQL中收集数据并输出

之前介绍过如何使用文件系统通过Logstash将数据推送至elasticsearch来实现日志的线上分析。而这次介绍通过logstash 将MySql数据同步至elasticsearch

Logstash——配置介绍,数据输入配置(input)
Logstash——Logstash从MySQL中收集数据并输出添加
Logstash——Logstash从Redis中收集数据并输出

Logstash-MySql数据源配置

最开始先看下MySQL作为数据来源时支持的所有配置

input {
   
   
  jdbc {
   
   
	### 查询参数的哈希,例如 {
   
    "target_id" => "321" }
	parameters => {
   
   }
	### 准备好的语句的绑定值数组。:sql_last_value是保留的预定义字符串 []
	prepared_statement_bind_values => []
	### 是否强制使用标识符字段的小写
	lowercase_column_names => true
	### 链接池超时后连接秒数
	jdbc_pool_timeout => 5
	### JDBC密码文件名
	jdbc_password_filepath => 
	### JDBC密码
	jdbc_password =>  "mysql"
	### JDBC用户
	jdbc_user =>  "mysql"
	### JDBC页面大小
	jdbc_page_size => 100000
	### JDBC启用分页,请注意,不能保证查询之间的顺序
	jdbc_paging_enabled => false
	### 一次查询数据大小
	jdbc_fetch_size => "TODO"
	### 驱动类以及驱动程序库路径
	jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
	### 如果您希望此插件将时间戳偏移到UTC以外的时区,则可以将此设置设置为local,插件将使用OS时区进行偏移调整。
	plugin_timezone
	### 数据库连接地址
	jdbc_connection_string => "TODO"
	### 数据库时区 以UTC术语
	jdbc_default_timezoneedit => "Asia/Shanghai"
	### 尝试连接数据库的最大次数
	connection_retry_attemptsedit => 1
	### 两次重试后的时间,秒单位
	connection_retry_attempts_wait_timeedit => 0.5
	### 特定列的字节编码
	columns_charset => {
   
    "column0" => "ISO-8859-1" }
	### 记录上次查询的最终位置sql_last_value元数据保存的文件的地址,
    last_run_metadata_path => "/elastic/tmp/testing/confs/test-jdbc-int-sql_last_value.yml"
	### 准备好的语句的绑定值数组
	prepared_statement_bind_values => []
	### 准备好的语句的名称
	prepared_statement_name => 
	### 是否保存状态
	record_last_run => true
	### 定期运行语句的时间表.如果没有给出时间表,则该语句仅运行一次
	schedule => 
	### 常规/
### 如何配置 Logstash 实时同步 MySQL 数据库的变化 为了实现实时同步 MySQL数据变化至 Elasticsearch,需精心设置 Logstash 的 pipeline 配置文件。此过程涉及 Input、Filter 和 Output 三个主要部分。 #### Pipeline 配置文件结构 ##### Input 插件配置 Input 负责从 MySQL 中读取增量变更记录。通常采用 JDBC 流插件来持续监听数据库变动事件。对于 MySQL 特定版本,可能还需要指定时间戳字段用于追踪最新更新的时间点[^1]。 ```ruby input { jdbc { jdbc_connection_string => "jdbc:mysql://localhost:3306/test" jdbc_user => "root" jdbc_password => "" jdbc_driver_library => "/path/to/mysql-connector-java.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" statement_filepath => "/etc/logstash/sql/query.sql" # SQL 查询语句路径 schedule => "* * * * *" # 定义轮询频率为每分钟一次 use_column_value => true # 使用列值作为文档ID tracking_column => "updated_at" # 追踪最后更改时间的列名 last_run_metadata_path => "/var/lib/logstash/jdbc_last_run" # 存储上次运行状态的位置 } } ``` ##### Filter 插件配置 Filter 对输入的数据进行预处理操作,比如日期格式转换、字符串清理等。这一步骤非总是必需,取决于具体的应用场景和需求[^4]。 ```ruby filter { mutate { remove_field => ["@version", "@timestamp"] } date { match => ["created_at", "yyyy-MM-dd HH:mm:ss"] # 将 created_at 字段解析成标准时间格式 target => "@timestamp" } } ``` ##### Output 插件配置 Output 是整个流程的最后一环,负责把经过过滤后的 JSON 文档发送给目标系统——这里是 Elasticsearch。确保正确设置了 `hosts` 参数指向 ES 集群地址,通过适当的方式定义索引名称模式[^5]。 ```ruby output { elasticsearch { hosts => ["http://localhost:9200"] index => "%{[@metadata][table]}-%{+YYYY.MM.dd}" # 动态创建每日新索引 document_id => "%{id}" # 设置唯一标识符 } stdout { codec => rubydebug } # 控制台输出调试信息 } ``` 上述配置实现了基本的功能框架,在此基础上可根据实际情况调整优化各组件参数以满足特定性能指标的要求。例如,针对高发写入场景可考虑增加批量提交大小;而对于大容量历史数据迁移,则应关注内存占用情况适时调整 JVM 启动选项。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大·风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值