Docker部署ELK5.5.0版本记录,以及Springboot项目配置

 

Docker部署ELK5.5.0版本

环境准备

镜像拉取

  1. docker pull docker.elastic.co/logstash/logstash:5.5.0
  2. docker pull docker.elastic.co/kibana/kibana:5.5.0
  3. docker pull docker.elastic.co/elasticsearch/elasticsearch:5.5.0

最好使用以上镜像,之前使用了docker pull logstash:5.5.0的镜像,这玩意一直报错,浪费了大把时间,得不偿失。

DockerCompose文件作成

version: '2'
services:
  elastic:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.5.0
    ports:
      - "9200:9200"
      - "9300:9300"
    container_name: "myelasticsearch"
    environment:
      - "http.host=0.0.0.0"
      - "transport.host=0.0.0.0"
      - "cluster.name=elasticsearch"
    networks:
      - prd-dev-sys
  kibana:
    image: docker.elastic.co/kibana/kibana:5.5.0
    depends_on:
      - elastic
    ports:
      - "5601:5601"
    container_name: "kibana"
    environment:
      - "ELASTICSEARCH_URL=http://elastic:changeme@myelasticsearch:9200"
    networks:
      - prd-dev-sys
  logstash:
    image: docker.elastic.co/logstash/logstash:5.5.0
    ports:
      - "5044:5044"
      - "9600:9600"
    container_name: "logstash"
    restart: always
    volumes:
      - /data/data/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml
      - /data/docker/data/logstash/conf.d/:/usr/share/logstash/pipeline/
    networks:
      - prd-dev-sys
networks:
  prd-dev-sys:
    driver: bridge

1.elasticsearch

1.1、这里需要注意的是环境中http.host和transport.host的指定,http.host指定后实际对应的是9200端口,transport.host实际对应的是9300端口,这里的对应是指绑定,9200端口使用的是http,9300使用的是tcp,当用spring中访问的时候,使用的是9300端口。

1.2、transport.host指定0.0.0.0之后,spring中才能正确访问,否则会报错,在指定此属性后可能会导致容器启动后立马停掉,需要作如下设置

        1.2.1、修改etc/security/limits.conf

* soft nofile 65536 #nofile是单个进程允许打开的最大文件个数
* hard nofile 65536

        1.2.2、修改/etc/sysctl.conf

vm.max_map_count=655360

        1.2.3、执行命令

sysctl -p

1.3、claster.name如果不指定,默认是docker-cluster,之前用spring的时候,网上搜的结果是要修改这个配置,将其指定为elasticsearch

1.4、因为使用了xpack,在springboot中(使用的版本是2.0.8.RELEASE),通过spring-data不能直接配置,需要使用另外的一个包如下

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>x-pack-transport</artifactId>
    <version>5.5.0</version>
</dependency>

1.5、将transport剔除,这里就不再使用yml的配置方法,直接使用spring提供一个TransportClient

<exclusions>
  <exclusion>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
  </exclusion>
</exclusions>
@Bean
public TransportClient transportClient() throws UnknownHostException {
    TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
            .put("cluster.name", "es-cluster")
            .put("xpack.security.user", "elastic:changeme")
            .build())
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
    return client;
}

如果遇到jar包无法下载的问题,因为我是公司内网,有限制,所以找了个能连外网的机器,新建了一个空的maven项目,拉取了一下jar包,而且使用的是阿里的镜像源

2.kibana

这里没什么特殊设置,默认用户名和密码是elastic:changeme

3.logstash

logstash.yml如下,这里elasticsearch的url使用的是docker-compose中指定的名字,因为是在一个network里面

path.config: /usr/share/logstash/pipeline
xpack.monitoring.elasticsearch.url: http://myelasticsearch:9200
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: changeme

配置文件中的指定

input {
    kafka {
        bootstrap_servers => "{kafka机器的ip}:9092"
        topics => ["weblog"]
        auto_offset_reset => "latest"
        consumer_threads => 5
        decorate_events => true
    }
}
output {
    elasticsearch {
        hosts => ["myelasticsearch:9200"]
        user => "elastic"
        password => "changeme"
        index => "mykafkalog"
    }
    stdout { codec => rubydebug }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值