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包的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM