注意:这篇文章能让你快速把elk搭建起来!
先说说问什么要用这玩意:如果你的项目是分布式集群环境,有报错信息你要一个服务一个服务去找,是不是很曹丹!但是用了elk,你就可以在一个可视化界面上通过过滤条件快速过滤查询出你想要的任何信息。
-
首先介绍一下什么是elk–>ELK即Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统,在目前这种分布式微服务系统中,通过ELK 会非常方便的查询和统计日志情况.一般来说只用这三个组件就可以实现功能,深究起来还需要额外的组件比如:Beats。下面这张图很好诠释了这个流程。
-
本篇文章讲的是如何通过docker快速搭建elk,所以需要有一点docker基础。(之前没用docker搭,各种配置的坑直接打懵我)
-
下面介绍一下各个服务的作用:
Elasticsearch:用于存储收集到的日志信息;
Logstash:用于收集日志,应用整合了Logstash以后会把日志发送给Logstash,Logstash再把日志转发给Elasticsearch;
Kibana:通过Web端的可视化界面来查看日志。
接下来就要使用Docker Compose 搭建ELK环境
- 编写docker-compose.yml脚本启动ELK服务:这个步骤对于之前有过docker部署经验的小伙伴来说很简单
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/upms-logstash.conf:/usr/share/logstash/pipeline/logstash.conf
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
links:
- elasticsearch:es #可以用es这个域名访问elasticsearch服务
ports:
- 4560:4560
- 创建对应容器挂载目录:
mkdir -p /mydata/logstash
mkdir -p /mydata/elasticsearch/data
mkdir -p /mydata/elasticsearch/plugins
chmod 777 /mydata/elasticsearch/data
- 接下来就是一些配置信息。算了不写了,太累了!反正也没人看。。。。