[toc]How to set up ElasticSearch using docker
1 什么是 ElasticSearch?
ElasticSearch 是一个分布式的搜索和分析引擎,主要功能包括全文搜索、结构化数据搜索和实时数据分析。它使用一种称为 倒排索引 的数据结构,可以快速地搜索和分析海量数据,非常适合以下场景:
- 日志管理:ElasticSearch 能存储和搜索日志数据,因此常用于应用、系统和安全日志的分析。
- 全文搜索:ElasticSearch 被广泛用于网站和应用的搜索功能,像产品搜索、文件内容搜索等。
- 数据分析:支持多维度的数据聚合,可以用来快速生成统计信息、趋势分析等。
ElasticSearch 的优点包括快速的数据索引、分布式架构(可以处理大规模数据)、多租户支持等。
2 什么是 Kibana?
Kibana 是一个开源的数据可视化工具,专门为 ElasticSearch 设计。它提供了直观的图形界面,使用户能够在浏览器中可视化 ElasticSearch 中的数据。Kibana 主要特点包括:
• 数据可视化:Kibana 支持生成各种图表和仪表盘,比如柱状图、饼图、时间序列图等,便于用户查看数据趋势和聚合结果。
• 日志分析:可以用来分析和过滤日志数据,让用户快速找到感兴趣的数据。
• 监控和告警:Kibana 配合 Elastic Stack 可以设置告警,当数据符合特定条件时,触发通知。
• 探索数据:Kibana 有一个“Discover”界面,让用户可以通过简单的搜索查询来探索 ElasticSearch 中的数据,查看具体记录和信息。
3 客户的需求
Environment:
No Docker Compose file should be used; everything should be set up using Docker. Elastic Search and Kibana should be on the latest version (Version 8).
Data Persistence:
The data from Elastic Search should be stored on the system drive at the path ~/elasticsearch/data. It is crucial that this data persists even if the Docker containers are stopped or deleted.
Access and Interface:
There should be an interface for logging in to view and search logs. The setup should run on the IP address: 165.**.**.163.
Developer Access:
Developers should be able to connect their applications to Elastic Search to log their data.
Credentials:
Set the password for Elastic Search to Retail*******
4 安装过程
参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
4.1 安装docker
Apt update && apt install docker.io –y
4.2 安装Elasticsearch
Create a new docker network:
# docker network create elastic
Pull the Elasticsearch Docker image:
# docker pull docker.elastic.co/elasticsearch/elasticsearch:8.15.4
创建数据目录并刷新权限:
# mkdir /root/elasticsearch/data -p
# chmod 776 /root/elasticsearch/data -R
安装Elasticsearch且挂载本地目录作为Elasticsearch的数据存储目录:
docker run -d --name es01 --net elastic -p 9200:9200 -m 2GB -v /root/elasticsearch/data:/usr/share/elasticsearch/data docker.elastic.co/elasticsearch/elasticsearch:8.15.4
获取密码(等个5分钟左右再去获取密码,elasticsearch还没完全启动就去获取密码,elasticsearch容器可能会退出):
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
Password for the [elastic] user successfully reset.
New value: yFju-SJLo3kFB3ro=PXz
获取Enrollment token:
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTcyLjE5LjAuMjo5MjAwIl0sImZnciI6IjhiYzJhZmQ4ODhmNjg3NjE1YTA5NDQ1NjgzMzcwY2RiYzkxZGU0ZTEwMzQ4YmQyZWVlMTFlOTQ1ODAwOGZkZDQiLCJrZXkiOiJocGlaVXBNQm94LUZNa3RsaFplTTpJdW5MRTBySFFRR1BUZWwyQlprNUFnIn0=
Copy the http_ca.crt SSL certificate from the container to your local machine:
docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
Make a REST API call to Elasticsearch to ensure the Elasticsearch container is running.
export ELASTIC_PASSWORD=”yFju-SJLo3kFB3ro=PXz”
curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
curl --cacert http_ca.crt -u elastic:gpr4QKpb5GLD7ec1zO-A https://localhost:9200
公网访问:
curl --insecure --cacert /root/elasticsearch/http_ca.crt -u elastic: yFju-SJLo3kFB3ro=PXz https:// 108.181.162.135:9200
4.3 安装Kibana
docker pull docker.elastic.co/kibana/kibana:8.15.4
docker run -d --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.15.4
4.4 配置Kibana
在浏览器打开http://IP:5601 并配置kibana:
输入之前产生的Enrollment token:
获取验证码:
# docker exec -it kib01 /usr/share/kibana/bin/kibana-verification-code
输入验证码:
配置过程中:
输入用户名和密码:
登录Kibana成功: