Docker

首页 -  Docker  -  docke安装logstash,mysql数据同步到es

docke安装logstash,mysql数据同步到es

docke安装logstash,mysql数据同步到es

应用场景

日志搜索器: logstash采集、处理、转发到elasticsearch存储,在kibana进行展示

Elk日志分析(elasticsearch+logstash+kibana)

logstash同步mysql数据库数据到es

1.拉取logstash镜像

docker pull logstash:7.12.1    #(需要与es版本对应)

2.构建logstash容器

--创建一个用于存储logstash配置以及插件的目录
下载jdbc的mysql-connection.jar包
https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.24/mysql-connector-java-8.0.24.jar
放到/docker/logstash目录下

mkdir /docker/logstash      
docker run -p 9900:9900 -d --name logstash -v /docker/logstash:/etc/logstash/pipeline --privileged=true logstash:7.12.1

3.进入容器内部安装 jdbc 和 elasticsearch 插件 

进入logstash容器内部

docker exec -it logstash bash
cd  bin

logstash-plugin install logstash-input-jdbc(此插件镜像新版本自带) 

安装elasticsearch

logstash-plugin install logstash-output-elasticsearch

4. 修改容器内部配置

cd /config
vi logstash.yml

http.host: "0.0.0.0" 
xpack.monitoring.elasticsearch.hosts: [ "http://172.17.0.7:9200" ] 这个地址是es容器IP

vi config/pipelines.yml
pipeline.id: table1 
path.config: "/etc/logstash/pipeline/logstash.conf" 这个是容器映射的配置文件

5.配置文件内容(/docker/logstash/logstash.conf)

input { 
stdin { } 
jdbc {

    #注意mysql连接地址一定要用ip,不能使用localhost等
    jdbc_connection_string => "jdbc:mysql://172.17.0.4:3306/lmrs_2008_shops"
    jdbc_user => "root"
    jdbc_password => "root"
    #这个jar包的地址是容器内的地址
    jdbc_driver_library => "/etc/logstash/pipeline/mysql-connector-java-8.0.24.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
    statement => "select a.`name`,a.long_name,a.brand_id,a.three_category_id as category_id,a.shop_id,a.price,a.status,a.sold_count,a.review_count,a.create_time,a.last_time,b.`name` as category,b.path from lmrs_products as a LEFT JOIN lmrs_product_categorys as b on a.three_category_id = b.id"
    schedule => "* * * * *"
    }
}
output {
 elasticsearch {

    #注意mysql连接地址一定要用ip,不能使用localhost等
    hosts => "172.17.0.7:9200"
    index => "products"
    document_type => "_doc"
    document_id => "_id"
 }
 stdout {
    codec => json_lines
 }
}


(0)
分享:

本文由:xiasohu168.com 作者:xiaoshu发表,转载请注明来源!

标签:

相关阅读