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文件
設置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文件
設置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-swarm之使用Docker secret管理敏感數(shù)據(jù)
就Docker Swarm集群服務而言,secret 是塊狀數(shù)據(jù),例如密碼、SSH私鑰、SSL證書或其他不應通過網(wǎng)絡傳輸或未加密存儲在Dockerfile或應用程序源代碼中的數(shù)據(jù),我們可以使用Docker secret 集中管理這些數(shù)據(jù),所以接下來就帶大家了解一下如何使用Docker secret 管理敏感數(shù)據(jù)2023-08-08Docker容器中數(shù)據(jù)卷volumes的使用
volume(卷)用來存儲docker持久化的數(shù)據(jù),其實就是一個主機上的一個目錄,由docker統(tǒng)一管理,下面這篇文章主要給大家介紹了關(guān)于Docker容器中數(shù)據(jù)卷volumes使用的相關(guān)資料,需要的朋友可以參考下2022-04-04docker官方鏡像下載及使用Dockerfile創(chuàng)建鏡像的方法
這篇文章主要介紹了docker官方鏡像下載及使用Dockerfile創(chuàng)建鏡像的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02對Docker-java項目進行jvm調(diào)優(yōu)-內(nèi)存方式
本文詳細介紹了如何進入Docker容器并分析Java進程的內(nèi)存使用情況,通過使用jps和jstat工具,可以查看java進程列表及內(nèi)存池容量,討論了設置JVM參數(shù)-Xmx和-Xms相等的重要性,以避免堆內(nèi)存的頻繁調(diào)整,此外,還探討了FullGC觸發(fā)條件和元空間的配置2024-09-09