作用:
用于同步数据源,属于ELK中的L, 将各种格式各种渠道的数据通过它收集解析之后格式化输出到 Elasticsearch ,最后再由 Kibana 提供的比较友好的 Web 界面进行汇总、分析、搜索
全量操作:
在logstash下bin目录下创建mysqltoes.conf文件用于查询数据库,文件内容如下:
# 读取数据源
input {
stdin { }
jdbc {
# 数据连接地址(你要连接哪个数据库)
jdbc_connection_string => "jdbc:mysql://localhost:3306/springcloud"
# 自己数据库用户名
jdbc_user => "root"
# 自己数据库密码
jdbc_password => "root"
# 驱动位置(自己电脑驱动的位置)
jdbc_driver_library => "D:\install\develop\ELK\logstash-7.6.2\logstash-7.6.2\bin\mysql-connector-java-5.1.29.jar"
# 驱动名称
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# 设置执行SQL
use_column_value => false
# 设置时区
jdbc_default_timezone =>"Asia/Shanghai"
#查询的数据库表
statement => "SELECT * FROM `userkibana` "
# 设置监听间隔 各字段含义(从左至右)分、时、天、月、年,全为*默认含义为每分钟都更新
schedule => "* * * * *"
}
}
output {
stdout {
codec => json_lines
}
elasticsearch {
# ES位置
hosts => "localhost:9200"
# 索引名称
index => "user1"
# 文档类型
document_type => "_doc"
# 文档ID(指你数据库表中的id,如果没有就不用写)
document_id => "%{id}"
}
}
首先启动elasticsearch和kibana的服务
接下来使用cmd进入到你的logstash的bin目录里面使用logstash -f mysqltoes.conf
注意:-f后面的就是刚刚创建文件夹的位置,因为我的是在logstash的启动服务的同一个目录下,所以这么写,你的如果不在则写相应的路径
当出现你数据库表中的值的时候则代表成功了,接下来我们在kibana中查询一下索引,也就是mysqltoes.conf配置文件中的index的值
GET /user1/_search
可以查询出来
增量更新
步骤一:在你查询的数据表中添加一个时间类型的字段,如果mysql版本是5.6之前的则
5.6之后的就类型为datetime,默认值CURRENT_TIMESTAMP
添加完字段以后因为还没有更新,所以是没有值的,接下来我们把表中的数据都更新一下,让新增的字段有值
步骤2:修改配置文件:
statement => "SELECT * FROM `userkibana` where update_date>:sql_last_value "
步骤3:重启logstash服务
步骤4:对数据表中的值进行修改
因为我们配置文件中 schedule => "* * * * "设置的为全*,所以我们稍等一分钟,看到服务显示
修改的数据已经检测到,到Kibana里面查询
已经同步过来,至此结束