ELK是Elasticsearch、Logstash、Kibana的缩写,使用ELK的原因是因为公司使用Spring cloud部署了多个微服务,不同的微服务有不同的日志文件,当生产上出现问题是不能及时排查,所以使用Logstash手机日志,Elasticsearch实现全文检索,Kibana作为显示与分析。
当然同样优秀的还有graylog但是都是基于Elasticsearch,所以这里选用ELK
首先在官网查询到最新版本
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 进程号 Logstashdocker下载
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