docker中安装elastichsearch和head、Logstash

    科技2022-08-12  105

    elasticsearch

    安装elasticsearch安装elasticsearch-headLogstash

    安装elasticsearch

    一、拉取镜像

    docker pull elasticsearch:5.6.8

    二、创建容器

    docker run -di --name=tensquare_elasticsearch -p 9200:9200 elasticsearch:5.6.8

    此时的elasticsearch还无法使用,因为没有解决跨域和远程连接问题

    三、解决跨域和远程连接

    1、拷贝配置文件到宿主机

    docker cp tensquare_elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml

    2、修改elasticsearch.yml文件

    解决远程连接:去掉transport.host: 0.0.0.0之前的#解决跨域问题:添加 http.cors.enabled: true http.cors.allow-origin: "*"

    四、停止并删除容器

    docker stop 01188db41c16 docker rm 01188db41c16

    五、重新执行创建容器命令

    docker run -di --name=tensquare_elasticsearch -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:5.6.8

    六、系统调优:修改/etc/security/limits.conf,追加

    * soft nofile 65536 * hard nofile 65536

    七、系统调优:修改修改/etc/sysctl.conf,追加

    vm.max_map_count=655360

    八、修改内核参数马上生效

    sysctl -p

    九、重启容器

    docker restart tensquare_elasticsearch

    十、测试

    安装elasticsearch-head

    一、拉取镜像

    docker pull mobz/elasticsearch-head:5

    二、安装容器

    docker run -di --name=myhead -p 9100:9100 mobz/elasticsearch-head:5

    三、连接

    Logstash

    Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。

    业务上的作用:让数据库与es索引库的数据定期进行同步

    注意:Logstash的版本需要与elasticsearch的版本一致,否则可能会出现问题。

    测试代码:进入logstash的bin目录下使用命令行测试

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

    同步elasticsearch与数据库的数据:在logstash目录下创建目录(如:abc目录),将以下代码文件名命名为my.conf

    input { jdbc { # mysql jdbc connection string to our backup databse jdbc_connection_string =>"jdbc:mysql://192.168.220.130:3306/tensquare_article?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 => "D:/apache-maven-3.3.9/mavenRepository/mysql/mysql-connector-java/5.1.46/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 => "select id,title,content from tb_article" #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新 schedule => "* * * * *" } } output { elasticsearch { #ESIP地址与端口 hosts => "localhost:9200" #ES索引名称(自己定义的) index => "tensquare" #自增ID编号 document_id => "%{id}" document_type => "article" } stdout { #以JSON格式输出 codec => json_lines } }

    执行同步代码

    logstash -f ../abc/my.conf
    Processed: 0.010, SQL: 9