docker搭建单机ELK

有些话、适合烂在心里 提交于 2019-12-10 18:13:06
    yum -y install epel-release
    yum -y install python-pip
    
    // 更新pip
    pip install --upgrade pip
    
    // 安装docker-compoes,如已安装,跳过
    pip install docker-compose

    // 下载elasticsearch,logstash,kibana, 自es5开始,一般三个软件的版本都保持一致了。

    docker pull docker.elastic.co/elasticsearch/elasticsearch:7.1.1 && docker pull docker.elastic.co/logstash/logstash:7.1.1 && docker pull docker.elastic.co/kibana/kibana:7.1.1
   

配置

  • 我们建立一个目录,用来存放yml文件(docker-compose启动一组编排过的容器时使用)
    mkdir -p /lizheng/elk
    cd /lizheng/elk
    vim docker-compose.yml
  • docker-compose.yml文件内容如下
version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1
    container_name: elasticsearch7.1.1
    environment:
      - node.name=node-40
      - network.publish_host=172.168.50.41
      - network.host=0.0.0.0
      - discovery.seed_hosts=172.168.50.40,172.168.50.240,172.168.50.41
      - cluster.initial_master_nodes=172.168.50.40,172.168.50.240,172.168.50.41
      - cluster.name=es-cluster
      #- http.cors.enabled=true
      #- http.cors.allow-origin="*"
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      #- discovery.type=single-node
    volumes:
      - esdata:/usr/share/elasticsearch/data
      - /root/elk/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    hostname: elasticsearch
    restart: always
    ports:
      - 9200:9200
      - 9300:9300
  kibana:
    image: docker.elastic.co/kibana/kibana:7.1.1
    container_name: kibana7.1.1
    environment:
      - elasticsearch.hosts=http://elasticsearch:9200
    hostname: kibana
    depends_on:
      - elasticsearch
    restart: always
    ports:
      - 5601:5601
  logstash:
    image: docker.elastic.co/logstash/logstash:7.1.1
    container_name: logstash7.1.1
    hostname: logstash
    restart: always
    depends_on:
      - elasticsearch
    ports:
      - 9600:9600
      - 5044:5044
volumes:
  esdata:
    driver: local
  • 在当前目录,启动elk
    docker-compose up -d
  • 出现done表示成功,docker-compose logs 查看日志(分别输出elk三个服务的日志)执行docker ps可以看到三个服务的运行状态

  • 在浏览器输入http://IP:5601/

  • 可以使用head监控es
    // 拉取镜像
    docker pull mobz/elasticsearch-head:5
    // 启动
    docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5
  • 在浏览器输入http://IP:9100
  • 注意,IP地址要使用你es所在服务器的地址,然后点击连接,出现类似的显示说明,没问题,我这里是三个节点,你应该只有一个节点。

  • 如果点击连接没有反应,F12查看network是403,或者200,但是console中提示跨域,那么你需要设置跨域,下面说两个方法
 方法1: 直接进入容器中,使用 docker exec -it 容器ID /bin/bash ,进入后修改/usr/share/elasticsearch/config/elasticsearch.yml文件,
    加入以下两行:
    http.cors.enabled: true
    http.cors.allow-origin: "*"

 方法2:将容器中的es配置文件映射到宿主机,然后加入以上两行配置重启即可,映射文件就不说了,如果不会,参考 https://www.cnblogs.com/lz0925/p/12011026.html
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!