docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch

一:安装Elasticsearch
首先拉取镜像

docker pull elasticsearch:7.7.0

修改虚拟内存区域大小,否则会因为过小而无法启动:

sysctl -w vm.max_map_count=262144

使用docker命令启动:

docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e “discovery.type=single-node” -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0

浏览器访问查看
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第1张图片
二:安装中文分词器IKAnalyzer,并重新启动

docker exec -it elasticsearch /bin/bash

#此命令需要在容器中运行 elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis- ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip

解决跨域配置文件步骤

cd ./config

修改配置文件

echo "
http.cors.enabled: true
http.cors.allow-origin: ‘*’" >> elasticsearch.yml

完成之后可以进去查看一下 vi elasticsearch.yml
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第2张图片
退出es容器

exit

重启es容器

docker restart elasticsearch

查看是否启动成功
在这里插入图片描述
三:kibana安装
下载kibana7.7.0的docker镜像

docker pull kibana:7.7.0

使用docker命令启动:

docker run --name kibana -p 5601:5601 --link elasticsearch:es -e “elasticsearch.hosts=http://es:9200” -d kibana:7.7.0

报错:正常,等待一会,第一次访问需要等待2-10分钟左右回自动跳转图2

图1:
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第3张图片
图2:
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第4张图片
开启防火墙:安装不需要开启

firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload

四:docker 安装 Elasticsearch:7.7.0 并使用logstash 同步mysql数据到Elasticsearch

使用到的jdk,logstash,mysql 驱动,tomcat压缩包在线下载

使用 Logstash 将mysql 数据库数据同步到 elasticsearch
1.下载 可以下载到opt目录 如果wget 下不下来就在浏览器下载通过rz上传

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.7.0.tar.gz

2.解压

tar -zvxf logstash-6.5.4.tar.gz

3.修改jvm.options文件
jvm.options 默认
-Xms1g
-Xmx1g
需要修改512m

进入解压文件找到并修改 jvm.options 文件

[root@localhost opt]# ls
containerd  logstash-7.7.0  logstash-7.7.0.tar.gz  nginx-1.18.0  nginx-1.18.0.tar.gz
[root@localhost opt]# cd logstash-7.7.0
[root@localhost logstash-7.7.0]# ls
bin     CONTRIBUTORS  Gemfile       lib          logstash-core             modules     tools   x-pack
config  data          Gemfile.lock  LICENSE.txt  logstash-core-plugin-api  NOTICE.TXT  vendor
[root@localhost logstash-7.7.0]# cd config/
[root@localhost config]# ls
jvm.options  log4j2.properties  logstash-sample.conf  logstash.yml  pipelines.yml  startup.options
[root@localhost config]# vi jvm.options 
[root@localhost config]# 

docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第5张图片
4.运行

./logstash -e 'input { stdin { } } output { stdout {} }'

如果出现下图问题,请安装tomcat和jdk
在这里插入图片描述
1.1开始安装jdk 和tomcat
(1)安装在opt文件夹里
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第6张图片
在这里插入图片描述

(2)解压jdk 和tomcat

tar -zvxf jdk-8u191-linux-x64.tar.gz
tar -zvxf apache-tomcat-7.0.79.tar.gz

(3)解压完成配置 jdk和tomcat的环境变量

执行编辑命令

vi /etc/profile   下边内容复制到文件最下方
export JAVA_HOME=/opt/jdk1.8.0_191
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export CATALINA_HOME=/opt/apache-tomcat-7.0.79
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:/usr/local/bin
export LC_ALL=en_US.UTF-8

在这里插入图片描述
配置文件最后写入:
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第7张图片

(4)使环境变量配置生效

source /etc/profile

如果报错 command not found 配置文件问题

查看文件开始有没有自带jdk和tomcat配置,不能配置两次,或者export前有没有空格
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第8张图片
(5)查看是否配置成功
java -version

docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第9张图片

开始运行logstash

[root@localhost opt]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@localhost opt]# cd logstash-7.7.0
[root@localhost logstash-7.7.0]# ls
bin     CONTRIBUTORS  Gemfile       lib          logstash-core             modules     tools   x-pack
config  data          Gemfile.lock  LICENSE.txt  logstash-core-plugin-api  NOTICE.TXT  vendor
[root@localhost logstash-7.7.0]# cd bin/
[root@localhost bin]# ls
benchmark.sh  dependencies-report  logstash      logstash-keystore      logstash.lib.sh  logstash-plugin.bat  pqrepair  setup.bat
cpdump        ingest-convert.sh    logstash.bat  logstash-keystore.bat  logstash-plugin  pqcheck              ruby      system-install
[root@localhost bin]# ./logstash -e 'input { stdin { } } output { stdout {} }'

docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第10张图片
4.配置mysql 下载mysql-connector-java
/在opt/logstash-7.7.0/config/目录中创建sync文件夹,将mysql驱动包导入进去
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第11张图片

编写配置文件 sync_tanle.cfg

[root@localhost ~]# cd /opt/logstash-7.7.0/config/sync/
[root@localhost sync]# vi sync_tanle.cfg
[root@localhost sync]# 

sync_tanle.cfg配置下面的配置

input {
  jdbc {
     # mysql相关jdbc配置
    jdbc_connection_string => "jdbc:mysql://192.168.230.1:3306/ddd?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8"
    jdbc_user => "root"
    jdbc_password => "123123"

    # jdbc连接mysql驱动的文件, 此处路径一定要正确 否则会报com.mysql.cj.jdbc.Driver could not be loaded
    jdbc_driver_library => "/opt/logstash-7.7.0/config/sync/mysql-connector-java-8.0.13.jar"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    jdbc_paging_enabled => true
    jdbc_page_size => "50000"

    jdbc_default_timezone =>"Asia/Shanghai"
    # mysql文件, 也可以直接写SQL语句在此处,如下:
    statement => "select * from ums_member where create_time >= :sql_last_value order by create_time asc"

   # 这里类似crontab,可以定制定时操作,比如每分钟执行一次同步(分 时 天 月 年)
    schedule => "* * * * *"
 
    # 是否需要记录某个column 的值,如果record_last_run为真,可以自定义我们需要 track 的 column 名称,此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
    use_column_value => true

   # 如果 use_column_value 为真,需配置此参数. track 的数据库 column 名,该 column 必须是递增的. 一般是mysql主键
    tracking_column => "create_time"

    tracking_column_type => "timestamp"

    last_run_metadata_path => "area_logstash_capital_bill_last_id"

    # 是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
    clean_run => false

#是否将 字段(column) 名称转小写
    #lowercase_column_names => false
  }
}

filter {
  date {
    match => [ "create_time", "yyyy-MM-dd HH:mm:ss" ]
    timezone => "Asia/Shanghai"
  }
}

output {
  elasticsearch {
   #虚拟机id
    hosts => ["192.168.230.134:9200"]
     # index名 自定义 相当于数据库 对于实体类上@Document(indexName = "fh_member"")indexName
    index => "fh_member"  
 #需要关联的数据库中有有一个id字段,对应索引的id号
    document_id => "%{id}"
    template_overwrite => true
  }

  stdout {
      codec => json_lines
  }
}

开始同步 在/opt/logstash-7.7.0/bin/目录里
在这里插入图片描述

[root@localhost bin]# ./logstash -f /opt/logstash-7.7.0/config/sync/sync_tanle.cfg

如果重新执行同步先查询进程,杀死之前的进程

[root@localhost bin]# ps -ef | grep logstash
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第12张图片
[root@localhost bin]# kill -9 5388

效果:
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第13张图片
docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第14张图片
原文:https://www.jianshu.com/p/4aed06cc7c6e

注:安装完成之后虚拟机关闭后再启动时,先查看所有容器

docker ps -a

先启 es再启kibana

docker start es容器的id

docker安装Elasticsearch:7.7.0并使用logstash同步mysql数据到Elasticsearch_第15张图片

你可能感兴趣的:(linx,服务器)