什么是ELK
ELK是ElasticSearch 、 Logstash、Kibana三大开源框架首字母大写简称。市面上也称为Elastic Stack。Lostash是ELK的中央数据流,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地。Kibana可以将elastic的数据通过友好的页面展示出来,提供实时分析的功能。
市面上很多开发只要提到ELK能够一直说出它是一个日志分析架构技术栈总称,但实际上ELK不仅仅适用于日志分析,它还可以支持其他任何数据分析和手机的场景,日志分析和收集知识更具有代表性。并非唯一性。
Docker安装ElasticSearch7.x.x
笔者的系统环境是:Ubuntu 19.10
搜索Es镜像
docker search elasticsearch
安装 Es 镜像
由于墙的原因,下载比较慢,需要修改docker的镜像为daocloud的镜像仓库
设置中国镜像:点我跳转
Ubuntu运行下面命令
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
重启下 docker服务
systemctl restart docker.service
拉取镜像的时候,官方推荐要指定版本号,如果没有指定,默认是: 镜像名:latest 下载最新版本,这是不推荐的方式,要避免这样使用
以下开始从拉取镜像
docker pull daocloud.io/library/elasticsearch:7.6.1
查看容器
docker images
运行容器
docker run --name es \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx1000m" \
-v /home/docker/elastic/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/docker/elastic/data:/usr/share/elasticsearch/data \
-v /home/docker/elastic/plugins:/usr/share/elasticsearch/plugins \
-d 41072cdeebc5
访问网页,检测是否启动成功
这条命令的意思是,将id为41072cdeebc5的容器运行起来,其中:
命令参数 | 说明 |
–name es | 容器取名为 es |
-p 9200:9200 -p 9300:9300 | 映射到9200,9300两个端口 |
-v /home/docker/elastic:/usr/share/elasticsearch/data | 将容器中/usr/share/elasticsearch/data的映射到本地目录的/home/docker/elastic下 通过这种设置,可以保证数据持久化 |
-v /home/docker/elastic/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ | 将容器中/usr/share/elasticsearch/config/elasticsearch.yml的映射到本地目录的/home/docker/elastic/config/elasticsearch.yml下 通过这种设置,可以保证数据持久化 |
-v /home/docker/elastic/plugins:/usr/share/elasticsearch/plugins \ | 将容器中/usr/share/elasticsearch/pluginsch.yml的映射到本地目录的/home/docker/elastic/plugins下 通过这种设置,可以保证数据持久化 |
-e ES_JAVA_POTS=”-Xms1024m -Xmx1024m” | 限制es的最小和最大使用的内存空间 |
-d | 后台运行 |
查看运行状态
docker ps -a
熟悉下目录
目录名 | 描述 | 默认位置 | 设置 |
home | Elasticsearch的根目录或$ES_HOME | 在解压的时候创建 | |
bin | 二进制脚本文件包括elasticsearch启动节点、elasticsearch-plugin安装插件 | $ES_HOME/bin | |
conf | 配置文件 包括elasticsearch.yml | $ES_HOME/config | path.conf |
data | 在节点上分配的每个index/shard的数据文件的位置,可以容纳多个位置 | $ES_HOME/data | path.data |
logs | 日志文件的位置 | $ES_HOME/logs | path.logs |
plugins | 插件文件的位置,每个插件将包含在其子目录中 | $ES_HOME/plugins | |
repo | 共享文件系统存储库位置。可容纳多个位置。文件系统存储库可以放在这里指定的任何目录的任何子目录中 | path.repo | |
script | 脚本文件的位置 | $ES_HOME/scripts | path.scripts |
elasticsearch.yml的配置信息
network.host: 0.0.0.0
http.cors.enabled: true # 是否支持跨域
http.cors.allow-origin: "*" # 表示支持所有域名
安装Es的管理面板
笔者这里使用的是 chrome 下的 ElasticSearch Head 插件,点我跳转 进行安装
Docker安装Kibana7.x.x
Kibana是一个针对ElasticSearch的开源分析及可视化平台,用来搜索、查看交互存储在ElasticSearch索引中的数据。使用Kibana,可以通过各种如表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板实时显示Elasticsearch查询动态。设置Kibana非常简单。无需编码或者额外的基础构架,几分钟内就可以完成Kibana安装并启动Elasricsearch索引检测。
官网地址:点我跳转
Kibana 要和 Es的版本一致
docker pull docker.elastic.co/kibana/kibana:7.6.1
查看容器
docker images
运行容器
docker run --name kibana \
-p 5601:5601 \
-v /home/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-d f9ca33465ce3
访问网页,检测是否启动成功
这条命令的意思是,将id为f9ca33465ce3的容器运行起来,其中:
命令参数 | 说明 |
–name kibana | 容器取名为 kibana |
-p 5601:5601 | 映射到5601 端口 |
-v /home/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml | 将容器中/usr/share/kibana/config/kibana.yml的映射到本地目录的/home/docker/kibana/config/kibana.yml下 通过这种设置,可以保证数据持久化 |
-d | 后台运行 |
访问网页,检测是否启动成功
kibana.yml的配置信息
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://172.18.0.5:9200"]
i18n.locale: zh-CN