文章目录
- 一、Jdbc 输入插件
- 1.1 描述:
- 1.1.1 输入(inpust):
- 1.1.2 过滤器(filters):
- 1.1.3 输出(outpus):
- 二、logstash安装
- 三、logstash语法
- 3.1 说明:
- 3.2 区段(section)
- 3.3 数据类型
- 3.4 条件判断(condition)
- 3.5 调度
- 3.6 状态
- 3.7 处理大型结果集
- 3.8 常见选项
一、Jdbc 输入插件
1.1 描述:
创建此插件是为了将具有 JDBC 接口的任何数据库中的数据提取到 Logstash 中。定期安排摄取或运行查询一次以将数据加载到 Logstash。结果集中的每一行都成为一个事件。结果集中的列将转换为事件中的字段。Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs:
1.1.1 输入(inpust):
必须,负责产生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
Logstash 支持 各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
1.1.2 过滤器(filters):
可选,负责数据处理与转换(filters modify them),常用:grok、mutate、drop、clone、geoip
过滤器能实时解析和转换数据
数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。
- 利用 Grok 从非结构化数据中派生出结构
- 从 IP 地址破译出地理坐标
- 将 PII 数据匿名化,完全排除敏感字段
- 简化整体处理,不受数据源、格式或架构的影响
1.1.3 输出(outpus):
必须,负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd
Logstash 提供众多输出选择,可以将数据发送到指定的地方,并且能够灵活地解锁众多下游用例。
二、logstash安装
环境要求:jdk1.8或以上
下载logstash软件包 logstash官方下载地址https://www.elastic.co/cn/downloads/logstash
下载后直接解压就可以用
三、logstash语法
3.1 说明:
Logstash 设计了自己的 DSL ——包括有区域,注释,数据类型(布尔值,字符串,数值,数组,哈希),条件判断,字段引用等。
3.2 区段(section)
Logstash 用 {} 来定义区域。区域内可以包括插件区域定义,你可以在一个区域内定义多个插件。插件区域内则可以定义键值对设置。示例如下:
input {
stdin {}
syslog {}
}
3.3 数据类型
Logstash 支持少量的数据值类型:
- bool
debug => true
- string
host => “hostname”
- number
port => 514
- array
match => [“datetime”, “UNIX”, “ISO8601”]
- hash
options => {
key1 => “value1”,
key2 => “value2”
}
3.4 条件判断(condition)
表达式支持下面这些操作符:
equality, etc: ==, !=, <, >, <=, >=
regexp: =~, !~
inclusion: in, not in
boolean: and, or, nand, xor
unary: !()
3.5 调度
可以将来自此插件的输入安排为根据特定计划定期运行。语法类似于 cron,带有一些特定于 Rufus 的扩展(例如时区支持)。
例子:
*5 * 1-3 * 将在 1 月到 3 月的每一天早上 5 点的每一分钟执行一次。
0 * * * * 将在每天每小时的第 0 分钟执行。
0 6 * * * America/Chicago 将在每天早上 6:00 (UTC/GMT -5) 执行。
3.6 状态
该插件将以sql_last_value元数据文件的形式保存参数,该文件存储在已配置的last_run_metadata_path. 在查询执行时,此文件将使用当前值更新sql_last_value。下次管道启动时,将通过从文件中读取来更新此值。如果 clean_run设置为 true,则该值将被忽略并sql_last_value设置为 1970 年 1 月 1 日,如果use_column_value为 true,则设置为 0 ,就好像从未执行过任何查询一样。
3.7 处理大型结果集
许多 JDBC 驱动程序使用该fetch_size参数来限制在从结果集中检索更多结果之前一次从游标预取多少结果到客户端的缓存中。这是使用jdbc_fetch_size配置选项在此插件中配置的。此插件中默认没有设置获取大小,因此将使用特定驱动程序的默认大小。
用法
在config目录建立一个jdbc.conf 内容如下
input {
jdbc {
#mysql的jdbc连接工具jar包
jdbc_driver_library => "D:\XXX\maven_jar\mysql\mysql-connector-java\8.0.25\mysql-connector-java-8.0.25.jar"
#jdbc驱动类全类名
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
#jdbc连接url
jdbc_connection_string => "jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8"
#数据库用户名
jdbc_user => "root"
#数据库密码
jdbc_password => "123456"
#数据同步时间及那个(都是*则每一分钟同步一次)
schedule => "* * * * *"
#jdbc分页查询开启
jdbc_paging_enabled => "true"
#查询每页显示数据条数
jdbc_page_size => "50000"
#sql文件路径(就是需要同步的数据)
statement_filepath => "D:/XXX/logstash-7.8.0/config/jdbc.sql"
#上次更新位置标记文件路径
last_run_metadata_path => "D:/XXXX/logstash-7.8.0/config/test-config/mms_member_company.txt"
#每次启动是否清除上一项配置文件中数据
clean_run => "false"
#开启所有字段名转成小写
lowercase_column_names => "true"
#解决中文乱码问题
codec => plain { charset => "UTF-8"}
#是否记录上次运行的记录
record_last_run => "true"
#是否使用其他字段判断进行数据库同步
use_column_value => "true"
#数据库中的增量指标字段名
tracking_column => "update_time"
随后利用命令行启动脚本
logstash目录\bin\logstash.bat -f logstash目录\config\jdbc.conf 即可实现mysql-es 大批量数据迁移
附上Jdbc所有输入配置
3.8 常见选项
所有输入插件都支持以下配置选项: