1. 主页
  2. 文档
  3. Elasticsearch中文文档
  4. 部署ELK

部署ELK

内容纲要

使用Docker搭建ELK(Elasticsearch、Logstash、Kibana)环境的步骤如下¹²:

  1. 安装Docker:首先,你需要在你的机器上安装Docker。你可以参考Docker官方文档来进行安装。

  2. 拉取ELK镜像:然后,你需要从Docker Hub上拉取Elasticsearch、Logstash、Kibana和Nginx的Docker镜像。你可以使用以下命令来拉取这些镜像:

docker pull elasticsearch:7.12.1
docker pull logstash:7.12.1
docker pull kibana:7.12.1
  1. 创建网络:为了使得容器间可以互相通信,你需要创建一个Docker网络。你可以使用以下命令来创建一个名为elk的网络:
docker network create elk
  1. 运行容器:最后,你需要运行Elasticsearch、Logstash、Kibana和Nginx的容器,并将它们连接到刚刚创建的网络。你可以参考以下命令来运行这些容器:
docker run -d --name=elasticsearch --net=elk -p 9200:9200 -p 9300:9300 elasticsearch:7.12.1
docker run -d --name=logstash --net=elk -p 5000:5000 logstash:7.12.1
docker run -d --name=kibana --net=elk -p 5601:5601 kibana:7.12.1

错误处理

bootstrap check failure [1] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
bootstrap check failure [2] of [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

错误一解决办法:

sudo sysctl -w vm.max_map_count=262144

错误而解决办法:

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

附录

为什么需要修改max_map_count参数

在Elasticsearch中,vm.max_map_count是一个重要的内核参数,它控制着一个进程能够拥有的最大内存映射区域数量³。

Elasticsearch使用了Lucene进行搜索和分析,每个索引都会被映射到内存中的一个或多个Lucene索引段³。如果vm.max_map_count的值太低,Elasticsearch将无法创建足够的内存映射区域,从而可能导致搜索性能下降、OOM(内存溢出)错误等问题³。

因此,为了确保Elasticsearch可以正常工作,建议将vm.max_map_count的值设置为至少262144³。这个值可以通过以下命令进行设置¹:

sysctl -w vm.max_map_count=262144

262144。这个值对应的二进制表示是1000000000000000000(2的18次方)
要永久地设置这个值,你可以在/etc/sysctl.conf文件中更新vm.max_map_count设置¹。重启后,可以通过运行sysctl vm.max_map_count来验证¹。

内存映射的具体含义是什么?技术原理是什么?

内存映射是一种将磁盘文件或其他设备映射到进程地址空间的技术。在内存映射中,操作系统会将磁盘文件或设备的数据缓存在内存中,并将这些数据在进程的地址空间中分配一段连续的虚拟地址,使得进程可以像访问内存一样访问这些数据。这种访问方式比传统的文件读写方式更加高效,因为它避免了频繁的磁盘操作和数据拷贝。同时,内存映射还可以使得多个进程共享同一份数据,从而实现更高效的进程间通信。
https://cloud.tencent.com/developer/techpedia/1997

部署ELK

我们要如何帮助您?