docker-compose部署elk

497 阅读2分钟

准备工作一:先安装docker-compose

#下载docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#权限设置
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version

准备工作二:创建配置文件存放目录并上传配置文件到该目录

mkdir /mydata/logstash

logstash-springboot.conf (文件的格式是我手动对齐,如果起不来需要确定文件的格式)

input {  
  tcp {    
    mode => "server"    
    host => "0.0.0.0"    
    port => 4560    
    codec => json_lines  
  }
}
output {  
  elasticsearch {    
    hosts => "es服务器ip:9200"    
    index => "springboot-logstash-%{+YYYY.MM.dd}"  
  }
}

准备工作三:创建一个保存docker-compose.yml目录

/usr/local/src/elk

docker-compose.yml(文件的格式是我手动对齐,如果起不来需要确定文件的格式)

version: '3'
services:  
  elasticsearch:    
    image: elasticsearch:6.4.0    
    container_name: elasticsearch    
    environment:      
      - "cluster.name=elasticsearch" #设置集群名称为elasticsearch      
      - "discovery.type=single-node" #以单一节点模式启动      
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小    
    volumes:      
      - /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载      
      - /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载    
    ports:      
      - 9200:9200  
   kibana:    
     image: kibana:6.4.0    
     container_name: kibana    
     links:      
       - elasticsearch:es #可以用es这个域名访问elasticsearch服务    
     depends_on:      
       - elasticsearch #kibana在elasticsearch启动之后再启动    
     environment:      
       - "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址    
     ports:      
       - 5601:5601  
     logstash:    
       image: logstash:6.4.0    
       container_name: logstash    
       volumes:      
         - /mydata/logstash/logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件    
       depends_on:      
         - elasticsearch #kibana在elasticsearch启动之后再启动    
       links:      
         - elasticsearch:es #可以用es这个域名访问elasticsearch服务    
       ports:      
          - 4560:4560

准备工作四:

elasticsearch 需要设置系统内核参数,否则会因为内存不足无法启动

# 改变设置
sysctl -w vm.max_map_count=262144
# 使之立即生效
sysctl -p

创建/mydata/elasticsearch/data目录并设置权限,否则会因为无权限访问而启动失败

# 创建目录
mkdir /mydata/elasticsearch/data/
# 创建并改变该目录权限
chmod 777 /mydata/elasticsearch/data

启动服务

docker-compose up -d

在logstash中安装json_lines插件

#进入logstash容器
docker exec -it logstash /bin/bash
#进入bin目录
cd /bin/
#安装插件 安装的过程时间比较长
logstash-plugin install --no-verify logstash-codec-json_lines
#退出容器
exit
#重启logstash 
docker restart logstash 

修改kibana中配置

#进入容器
docker exec -it kibana /bin/bash
#进入编辑模式
vim /usr/share/kibana/config/kibana.yml
#修改server.host: “0”
server.host: "0.0.0.0"
#修改elasticsearch.hosts的地址, 改成es的ip
elasticsearch.url: http://192.168.22.136:9200
#重启kibana 
docker restart kibana 

开启防火墙的端口,然后就可以访问了192.168.22.136:5601