zl程序教程

您现在的位置是:首页 >  工具

当前栏目

淘东电商项目(45) -Docker下Kibana与Logstash的ES集群配置(一次填完所有的坑)

ESDocker配置项目集群 所有 一次 电商
2023-09-11 14:15:40 时间

引言

本文代码已提交至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/taodong-shop

阅读本文前,为了保证思维的连贯性,可以先阅读之前的博客:

本文目录结构:
l____引言
l____ 1. kibana配置ES集群
l____ 2. logstash配置ES集群
l____ 3. 测试
l____ 4. 总结

1. kibana配置ES集群

1.新建宿主主机的挂载配置文件:
cd /usr/local
mkdir -p kibana/config
cd kibana
cd config
vi kibana.yml

配置内容如下:

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.162.134:9201","http://192.168.162.134:9202"]

字段解析以及填坑方法:

字段解析
server.portkibana运行端口
server.hostkibana后端服务器的主机,如果设置为“127.0.0.1”将访问不了,如果设置为“192.168.162.134”则启动失败,建议设置为"0.0.0.0"
elasticsearch.hostses集群地址,不要使用elasticsearch.url,因为过期了

2.以挂载配置文件的方式启动kibana

docker run \
-d -p 5601:5601 \
-v /usr/local/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
--name kibana-cluster kibana:7.6.1

注意:最后一行 kibana-cluster名字不能为kibana,不然docker启动会识别不了。

3.浏览器访问

访问http://192.168.162.134:5601/app/kibana#/dev_tools/console,可以看到启动成功:
在这里插入图片描述

2. logstash配置ES集群

1.新建宿主主机的挂载配置文件:
cd /usr/local
mkdir -p logstash/config
cd logstash
mkdir lib
cd config
vi mysql.conf
vi mysql1.conf
vi pipelines.yml

上传jar包到/user/local/logstash/lib目录下:
在这里插入图片描述

配置:mysql.confmysql1.confpipelines.yml

1. mysql.conf内容(注意es集群配置):

input {
  jdbc {
    jdbc_driver_library => "/usr/share/logstash/lib/mysql-connector-java-5.1.46.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://192.168.18.166:3306/taodong-goods"
    jdbc_user => "root"
    jdbc_password => "123456"
    schedule => "* * * * *"
    statement => "SELECT * FROM product WHERE UPDATED_TIME > :sql_last_value"
    use_column_value => true
    tracking_column_type => "timestamp"
    tracking_column => "updated_time"
    last_run_metadata_path => "syncpoint_product_table"
  }
}


output {
    elasticsearch {
        hosts => ["192.168.162.134:9201","192.168.162.134:9202"]
        index => "product"
        document_id => "%{id}"
        document_type => "product"
    }
    stdout {
        codec => json_lines
    }
}

2. mysql1.conf内容(注意es集群配置):

input {
  jdbc {
    jdbc_driver_library => "/usr/share/logstash/lib/mysql-connector-java-5.1.46.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://192.168.18.166:3306/taodong-goods"
    jdbc_user => "root"
    jdbc_password => "123456"
    schedule => "* * * * *"
    statement => "SELECT * FROM category WHERE UPDATED_TIME > :sql_last_value"
    use_column_value => true
    tracking_column_type => "timestamp"
    tracking_column => "updated_time"
    last_run_metadata_path => "syncpoint_category_table"
  }
}


output {
    elasticsearch {
        hosts => ["192.168.162.134:9201","192.168.162.134:9202"]
        index => "category"
        document_id => "%{id}"
        document_type => "category"
    }
    stdout {
        codec => json_lines
    }
}

3. pipelines.yml内容:

- pipeline.id: product_table
  path.config: "/usr/share/logstash/config/mysql.conf"
- pipeline.id: category_table
  path.config: "/usr/share/logstash/config/mysql1.conf"

2.以挂载配置文件的方式启动logstash

mysql.confmysql1.confpipelines.yml

docker run \
-v /usr/local/logstash/lib/mysql-connector-java-5.1.46.jar:/usr/share/logstash/lib/mysql-connector-java-5.1.46.jar \
-v /usr/local/logstash/config/mysql.conf:/usr/share/logstash/config/mysql.conf \
-v /usr/local/logstash/config/mysql1.conf:/usr/share/logstash/config/mysql1.conf \
-v /usr/local/logstash/config/pipelines.yml:/usr/share/logstash/config/pipelines.yml \
-d --name logstash-cluster logstash:7.6.1

从控制台,可以看到有查询到内容:
在这里插入图片描述

3. 测试

使用kibana查询商品product是否插入ES集群,下图可以看出插入成功:
在这里插入图片描述
使用kibana查询商品目录category是否插入ES集群,下图可以看出插入成功:
在这里插入图片描述

4. 总结

本文主要讲解Kibana和Logstash配置集群,主要内容如下:

类型kibanalogstash
目录kibana安装目录/config/kibana.ymllogstash安装目录/config/
关键配置内容elasticsearch.hostsoutput {elasticsearch { hosts => [es集群地址]