使用logstash将mysql数据同步到elasticsearch中

ELK介绍

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

使用Logstash

关于安装elasticsearch和head以及安装kibana可以参考这两篇博客。

下面来说一下怎么使用Logstash将mysql表中的数据同步到elasticsearch中。

1、下载安装Logstash

2、解压到你指定的目录,在bin的同级目录下创建mysql文件夹用来存放mysql驱动包。下载mysql驱动包。
使用logstash将mysql数据同步到elasticsearch中_第1张图片
3、在bin文件夹下创建logstash.conf文件。此文件配置内容如下:

input {
  # 多张表的同步只需要设置多个jdbc的模块就行了
  jdbc {
      # mysql 数据库链接,test为数据库名
      jdbc_connection_string => "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
      # 用户名和密码
      jdbc_user => "xxxx"
      jdbc_password => "xxxx"

      # 驱动
      # 改成你自己的安装路径
      jdbc_driver_library => "D:/software/logstash-7.3.2/mysql/mysql-connector-java-8.0.22.jar"

      # 驱动类名
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      jdbc_validate_connection => "true"

      #是否分页
      #jdbc_paging_enabled => "true"
      #jdbc_page_size => "1000"
      #时区
      jdbc_default_timezone => "Asia/Shanghai"

      #直接执行sql语句
	  statement => "select * from user"
      # 执行的sql 文件路径+名称
      # statement_filepath => "/hw/elasticsearch/logstash-6.2.4/bin/test.sql"

      #设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      #schedule => "* * * * *"
      #每隔10分钟执行一次
      #schedule => "*/10 * * * *"
      #是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到last_run_metadata_path
      record_last_run => true
      #记录最新的同步的offset信息
      #last_run_metadata_path => "D:/es/logstash-7.3.2/logs/last_id.txt"

      use_column_value => true
      #递增字段的类型,numeric 表示数值类型, timestamp 表示时间戳类型
      tracking_column_type => "numeric"
      tracking_column => "id"
      clean_run => false
      # 索引类型
      #type => "jdbc"
    }

}


output {
  elasticsearch {
        #es的ip和端口
        hosts => ["http://localhost:9200"]
        #ES索引名称(自己定义的)
        index => "test"
        #文档类型
        document_type => "_doc"
        #设置数据的id为数据库中的字段
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
}

4、启动
进入到logstash的安装目录bin下,在命令行窗口输入

logstash -f logstash.conf

使用logstash将mysql数据同步到elasticsearch中_第2张图片
注意:logstash的安装路径不能有中文,否则会报错。

运行完成,就可以通过elasticsearch 的head插件来查看索引中的数据。

你可能感兴趣的:(es)