Docker部署ELK 日志归集

ELK

ELK是Elasticsearch、Logstash、Kibana的缩写,使用ELK的原因是因为公司使用Spring cloud部署了多个微服务,不同的微服务有不同的日志文件,当生产上出现问题是不能及时排查,所以使用Logstash手机日志,Elasticsearch实现全文检索,Kibana作为显示与分析。

当然同样优秀的还有graylog但是都是基于Elasticsearch,所以这里选用ELK

修改服务器配置

#因为对内存有要求所以
vim /etc/sysctl.conf
# 添加下面配置
vm.max_map_count=655360
# 编辑完,使命令生效
sysctl -p # 编辑文件
vi /etc/security/limits.conf
# 修改并加入下面配置
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

Elasticsearch

首先在官网查询到最新版本

docker pull elasticsearch:7.2.0

启动es

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name elasticsearch -d elasticsearch

安装ik分词器

#进入容器
docker exec -it 容器id /bin/bash
#进入plugins目录
cd /usr/share/elasticsearch/plugins/
#下载ik分词器
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip
#解压
unzip -d ik-analysis elasticsearch-analysis-ik-7.2.0.zip
#删除压缩包(切记删除或移动到其他目录否则无法启动)
rm -rf elasticsearch-analysis-ik-7.2.0.zip
#退出容器
exit
#重启容器
docker restart 容器id

允许跨域

#进入
/usr/share/elasticsearch/config/elasticsearch.yml
#添加
http.cors.enabled: true
http.cors.allow-origin: "*"

Kibana

下载镜像

docker pull kibana:7.2.0

查看es内部ip

docker inspect 容器id
#找到NetworkSettings.IPAddress

运行容器

docker run --name kibana --link elasticsearch:elasticsearch -p 5601:5601 -d kibana:7.2.0
#官方推荐以上方式,如果es不是docker容器可以采用以下方式
-e ELASTICSEARCH_HOSTS=http://ip:9200

Filebeat

下载包

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-linux-x86_64.tar.gz

解压

tar -xzvf filebeat-7.2.0-linux-x86_64.tar.gz

修改filebeat.yml

filebeat.inputs:
- type: log
enabled: true
paths:
- /tmp/log/*.log
output.logstash:
enabled: true
hosts: ["logstash IP:5044"]

启动

#前台启动
./filebeat -e -c filebeat.yml
#后台启动
nohup ./filebeat -e -c filebeat.yml > filebeat.log &
#结束进程
ps -ef |grep filebeat
kill -9 进程号

Logstash

docker下载

docker pull logstash:7.2.0

启动

docker run -p 5044:5044 -p 9600:9600 -d --name logstash logstash:7.2.0

进入容器

docker exec -it -u 0 logstash /bin/bash

删除示例

rm -rf logstash-sample.conf

重启

docker restart logstash
上一篇:Maven报错Please ensure you are using JDK 1.4 or above and not a JRE解决方法!


下一篇:Docker部署ELK 7.0.1集群之Logstash安装介绍