下載logstash鏡像
docker pull logstash
創建logstash目錄
mkdir /usr/local/logstash
在logstash目錄下建立Dockerfile文件,內容如下:
FROM logstash
CMD ["-f","/usr/local/logstash/mysql.conf"]
FROM logstash:意思是鏡像構建在logstash基礎之上
CMD [“-f”,”/usr/local/logstash/mysql.conf”]:代表在docker run運行鏡像,容器內部啟動過程中,添加參數 -f /usr/local/logstash/mysql.conf。
構建新的logstash鏡像
docker build -t logstash_new
構建后查詢logstash_new鏡像是否構建成功
以目錄掛載形式啟動新的logstash鏡像
docker run -d --name logstash -v /usr/local/logstash:/usr/lcoal/logstash logstash_new
把之前在window的mysql.conf和mysql驅動文件上傳到宿主機的/usr/local/logstash目錄下面
修改mysql.conf內容:
input { jdbc { # mysql jdbc connection string to our backup databse jdbc_connection_string => "jdbc:mysql://xxxxxx.134:3306/xxxxx?characterEncoding=UTF8" # the user we wish to excute our statement as jdbc_user => "root" jdbc_password => "123456" # the path to our downloaded jdbc driver jdbc_driver_library => "/usr/local/logstash/mysql-connector-java-5.1.46.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_filepath => "" statement => "select id,title,content from tb_article" #定時字段 各字段含義(由左至右)分、時、天、月、年,全部為*默認含義為每分鍾都更新(測試結果,不同的話請留言指出) schedule => "* * * * *" } } output { elasticsearch { #ESIP地址與端口 hosts => "xxxxxx:9200" #ES索引名稱(自己定義的) index => "tensquare" #自增ID編號 document_id => "%{id}" document_type => "article" } stdout { #以JSON格式輸出 codec => json_lines } }
重啟logstash容器
docker restart logstash
查看logstash容器日志,看是否1分鍾同步一次數據到elasticsearch
docker logs -f --tail=30 logstash