zoukankan      html  css  js  c++  java
  • Docker安装logstash连接Mysql实现数据同步

    Docker安装logstash连接Mysql实现数据同步

    自己在安装过程出现很多错误,主要对配置不够熟悉,这里简单记录一下搭建过程...

    • 拉取logstash镜像
    docker pull logstash:7.2.0
    

    因为我安装的Elasticsearch版本是7.2.0,这里对应安装7.2.0版本的logstash

    • 准备配置文件

    这你的配置文件主要就只包含一个自定义的.conf文件,我们也可以通过配置pipelines.yml,logstash.yml 实现启动时自动配置,因为我这里直接在启动的时候直接加载配置文件,所以pipelines.yml,logstash.yml,我没有配置,里面全是被注释掉了的,当然有日志的配置文件log4j2.properties。 我还定义一个用于存储时间戳的配置文件logstash_metadata,和索引的配置文件index_template.json
    我将自定义的配置文件命名为mysql.conf ,把有需要的文件放在宿主主机的/user/share/logstash/piplines 目录下,等会挂载到docker容器上

    mysql.conf内容

    input {
      stdin {
      }
      jdbc {
      jdbc_connection_string => "jdbc:mysql://ip:端口/数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC"
      # the user we wish to excute our statement as
      jdbc_user => "用户名"
      jdbc_password => 密码
      # the path to our downloaded jdbc driver  
      jdbc_driver_library => "/usr/share/logstash/config/mysql-connector-java-5.1.40.jar" # 这里是连接mysql的jar包
      # the name of the driver class for mysql
      jdbc_driver_class => "com.mysql.jdbc.Driver" 
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      #要执行的sql文件
      statement => "select * from course_pub where timestamp > date_add(:sql_last_value,INTERVAL 8 HOUR)"  # 执行的sql命令
      #定时配置
      schedule => "* * * * *"
      record_last_run => true
      last_run_metadata_path => "/usr/share/logstash/config/logstash_metadata" # 这里是上次读取时间戳来与数据库查询到的时间戳进行对比,是否向el添加更改数据
      }
    }
    
    
    output {
      elasticsearch {
      #ES的ip地址和端口
      hosts => "192.168.10.131:9200"
      #hosts => ["localhost:9200","localhost:9202","localhost:9203"]
      #ES索引库名称
      index => "xc_course"
      document_id => "%{id}"
      template =>"/usr/share/logstash/config/index_template.json"  # 这里是索引的模版文件
      template_name =>"xc_course"
      template_overwrite =>"true"
      }
      stdout {
     #日志输出
      codec => json_lines
      }
    }
    
    • 创建logstash容器
    docker run -it -p 5044:5044 -p 9600:9600  --name logstash -v /usr/share/logstash/piplines:/usr/share/logstash/config --privileged=true   logstash:7.2.0 /bin/bash
    

    创建容器后,需要安装logstash-input-jdbc插件。

    > cd /usr/share/logstash/bin
    > logstash-plugin install logstash-input-jdbc
    

    安装完成后执行命令,启动logstash加载自定义的配置文件

    > cd /usr/share/logstash/bin
    > ./logstash -f ../config/mysql.conf
    

    到此我们就可以看到logstash启动成功。

    • 我在安装过程中遇到的问题
      - 要正确配置到我们自定义.conf配置文件中加载文件和jar包在镜像中位置
      - 我在启动logstash后,提示无法加载mysql-connector-java的jar包,这个问题我一开始以为是jar包问题,后来发现是因为,JDK版本的问题,在拉取的镜像中的,创建容器环境中的JDK版本为11,我们需要卸载掉JDK,重新安装JDK版本到1.8版本,就能成功解决无法加载jar包的问题。
  • 相关阅读:
    Devexpress [汇总链接]
    [转]修改LayoutControlitem容器内的控件长宽
    How to hide border of XtraTabControl
    CEF / Chromium 重新编译2018 官网地址 一路是坑 千万别跟着官方step by step走一定多思考多查资料 因为改动地方太多了编译都每个版本都不一样
    c#:配置引用程序集的路径(分离exe和dll)和 如何处理[dllImport]中的程序集的加载 [笔记]
    [redis] -- 缓存雪崩和缓存穿透、缓存击穿问题解决方案篇
    [redis] -- 为什么那么快
    [redis] -- 集群篇
    [spring cloud] -- 服务注册与服务发现篇
    [spring cloud] -- 核心篇
  • 原文地址:https://www.cnblogs.com/fate-pc/p/13326840.html
Copyright © 2011-2022 走看看