Docker搭建并啟動Logstash的實現(xiàn)方式
做mysql和elasticsearch的數(shù)據(jù)同步
- 使用docker拉取logstash鏡像,打包容器啟動
- 進入容器: docker exec -it logstash /bin/bash(logstash在容器中的絕對路徑是/usr/share)
- 修改配置文件
- 安裝同步插件
- 下載MySQL驅(qū)動包
- 修改通道配置
- 啟動

1.進入logstash文件夾
(此時目錄在 usr/share 目錄下)

2.進入config文件夾

3.編輯logstash.yml文件
設(shè)置ES配置(連接地址等)
要使用logstash,需要下載插件,例如我想要mysql與ES數(shù)據(jù)做同步,我就必須下載這兩個插件:
- mysql input plugin
- elasticsearch output plugin
把這兩個插件安裝成功之后,Logstash的插件都裝在這個目錄里
usr/share/logstash/vendor/bundle/jruby/2.5.0/gems
4.進入logstash文件夾中的pipeline文件夾

mysql的驅(qū)動包也放在了這個目錄下。
(因為懶得下載wget,所以我沒有通過wget去下載驅(qū)動包,是通過宿主機copy到容器中的)
之后進入vi編輯logstash.conf文件
設(shè)置input和output參數(shù)
input {
jdbc {
jdbc_driver_library => "../pipeline/mysql-connector-java-5.1.46.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/datebasename"
jdbc_user => "root"
jdbc_password => "123456"
schedule => "* * * * *"
statement => "SELECT * FROM table_name"
use_column_value => true
tracking_column_type => "timestamp"
tracking_column => update_time
last_run_metadata_path => "syncpoint_c_order"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
hosts => ["192.168.0.1"]
user => ""
password => ""
index => "index_name"
document_id => "%{數(shù)據(jù)庫主鍵}"
}
stdout {
codec => json_lines
}
}5.啟動logstash 進入logstash容器中
docker exec -it logstash /bash/bin

配置好conf之后:進入bin目錄 ./logstash -f pipeline/logstash.conf 啟動
啟動報錯,無法啟動logstash
原因是logstash存在緩存區(qū),進入data目錄中,通過 ls -alh 查找隱藏文件.lock,rm .lock刪除此文件。
重新啟動,打印了很多日志:
好好讀一讀日志之后發(fā)現(xiàn),除了提醒我6.x之后type被廢除之外,還有一個最關(guān)鍵的是配置源無法找到。
也就是我的logstash.conf未找到。
原來是因為我進入了bin目錄下啟動logstash,不通過…/的方式返回上一級目錄就無法找到conf文件。
./logstash -f …/pipeline/logstash.conf 繼續(xù)啟動一次
還是有問題,這次又是因為mysql的驅(qū)動包沒有找到,那一定是mysql的驅(qū)動包路徑又寫錯了。那么在conf中找到驅(qū)動包配置的路徑,配置好了正確的路徑之后再啟動。
因為配置的是以分鐘進行同步,所以他每分鐘會執(zhí)行一遍配置的sql語句
### 后臺啟動logstash nohup ./logstash -f ../pipeline/logstash.conf >/dev/null 2>&1 &
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker配置容器開機自啟或服務(wù)重啟后自啟兩種常見方法
Docker容器自啟動是指在系統(tǒng)啟動時自動啟動并運行指定的Docker容器,這通常用于確保關(guān)鍵服務(wù)始終可用,無需手動干預(yù),這篇文章主要介紹了Docker配置容器開機自啟或服務(wù)重啟后自啟的?兩種常見方法,需要的朋友可以參考下2025-08-08
淺談docker運行nginx為什么要使用daemon off
這篇文章主要介紹了淺談docker運行nginx為什么要使用daemon off,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
docker-compose部署zk+kafka+storm集群的實現(xiàn)
這篇文章主要介紹了docker-compose部署zk+kafka+storm集群,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Jenkins+Docker持續(xù)集成的實現(xiàn)
Jenkins是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續(xù)集成變成可能。本文介紹了Jenkins Docker持續(xù)集成,分享給大家2021-05-05
docker?compose部署mongodb?分片集群的操作方法
分片機制(Sharding)是MongoDB中用于處理大規(guī)模數(shù)據(jù)集和高負載應(yīng)用的一種數(shù)據(jù)分布策略,通過將數(shù)據(jù)均勻分布在多個服務(wù)器上,分片技術(shù)能夠提高應(yīng)用的可擴展性和性能,本文給大家介紹docker?compose部署mongodb?分片集群的相關(guān)操作,感興趣的朋友一起看看吧2024-10-10
docker部署xxl-job-admin出現(xiàn)數(shù)據(jù)庫拒絕問題及解決方法
這篇文章主要介紹了docker部署xxl-job-admin出現(xiàn)數(shù)據(jù)庫拒絕問題,本文給大家分享正確的解決思路,對docker部署xxl-job-admin相關(guān)知識感興趣的朋友一起看看吧2023-02-02

