【橘子ES】使用docker搭建ELK环境

我们在搭建ELK环境的时候,一般有三种选择。

1、本地安装,你可以到官网把安装包下载下来然后解压,修改配置文件,然后启动,这样比较麻烦,比较考验操作。那有的玩家就要问了,这种操作太吃手感了,有没有比较容易上手的玩法。有的有的,这样的玩法还有两种。

2、容器启动,这就很简单了,拉取镜像,启动容器,都是一键操作的。

3、Elastic cloud,es的官网提供了云服务,你可以注册账号上去直接用,但是免费时间只有14天,后面就得花钱了。当然你可以再找个新账号。这种是最方便的,但是有时间限制。

我们这里重点来说容器启动,首先你确保你的环境上有docker了,不然白扯。

一、拉取镜像

我们先去docker hub上看一下我们要安装的组件的镜像是不是存在,我们先来操作kibana,所以我们直接搜索kibana就可以了。

我们点进去就看到官方发布的镜像的各个版本以及他的其他信息了。

好的,那我们来拉取kibana的镜像。

我们使用docker pull kibana来拉取镜像的时候,因为你没指定拉取的哪个版本,,所以他会默认去拉取latest的这个版本,而docker hub上没有这个版本号,所以失败了,那我们就指定一个版本,注意你指定的版本一定是docker hub上存在的,不然你还是会失败。本次我们使用8.4.3这个版本,其余的8的版本也差不多,你可以随便找一个。我们看到docker hub上是有这个8.4.3版本的。

我们把命令改为docker pull kibana:8.4.3

ok,此时我们拉取成功了,同样的,我们还需要elasticsearch(简称es)的镜像,而且要注意,es和kibana的版本要保持一致。

命令自然是docker pull elasticsearch:8.4.3,不出意外的话,这个也是可以拉取下来的。

二、创建网络

我们现在有了镜像,在我们启动容器之前我们需要创建一个docker网络,用于在容器之间通信,这个网络是独立于你宿主机的网络的,他是虚拟的。

其命令就是docker network create 网络名称,我们创建一个docker network create myElkNetwork,他会返回一个网络的唯一标识id,我们这里是38ac953be25f6ad9de506d476c6d80abb43fcdd47c0e0668aa6fc608be4d6da2,实际上没啥用,就是看看有就行。

三、启动容器

我们以单节点最小化的方式启动容器,至于那些命令的详细细节我就不说了,可以看看docker的命令。

shell 复制代码
docker run -d --name myes01  --net myElkNetwork  -p 9200:9200 -p 9300:9300  -e "discovery.type=single-node"  elasticsearch:8.4.3

这样我们就启动了这个es容器,他的名字叫myes01。

没有问题,我们可以在浏览器访问一下es的api,然后确定他是不是真的启动成功了。

同样的,我们继续启动kibana:

shell 复制代码
docker run -d --name myKibana01  --net myElkNetwork -p 5601:5601 kibana:8.4.3

至此我们启动完成了,我们只需要去浏览器打开localhost:5601来确认kibana是不是启动成功即可。

ok,你会发现他让你输入token 令牌,容器安装就是这样的,你如果本地化安装就没这个问题,我们怎么获取这个token呢。注意,你的这个令牌是kibana访问es的,所以你要去es的容器中去找。你要进入es容器来为kibana生成token。因为es8.x是默认开启密码校验模式的。

我们进入es容器。docker exec -it 容器id /bin/bash

你可以看到他有一个生成token的命令,我们运行这个命令看下。

报错了,是因为es内部生成token是要区分是给kibana的还是给es集群的。因为这是两种不同访问方式。所以我们要加上-s "kibana"。

ok,此时我们就拿到了这个token,贴到kibana的ui界面上看下。

弹出这个界面,

他让你去kibana的服务上运行bin/kibana-verification-code这个指令,没说的,我们继续进入kibana容器。

于是我们就生成了这个code,可以正式开启kibana的使用了,是吗,真的可以了吗。

在你完成了检验之后,你还要输入密码,这很正常,token check和密码账户本来也不一定就是一起的。继续做吧骚年。注意,这个账户密码是你访问es的,所以你需要去es那边,但愿你还没有退出你的es容器。我们继续进入到es容器你会看到这个命令。

ok,这就是你要执行的。我们来看下他的参数。

markdown 复制代码
elasticsearch@3046fce9312e:~/bin$ elasticsearch-reset-password -h
Resets the password of users in the native realm and built-in users.

Option (* = required)  Description                                          
---------------------  -----------                                          
-E <KeyValuePair>      Configure a setting                                  
-a, --auto                                                                  
-b, --batch                                                                 
-f, --force            Use this option to force execution of the command    
                         against a cluster that is currently unhealthy.     
-h, --help             Show help                                            
-i, --interactive                                                           
-s, --silent           Show minimal output                                  
* -u, --username       The username of the user whose password will be reset
--url                  the URL where the elasticsearch node listens for     
                         connections.                                       
-v, --verbose          Show verbose output      
~~
首先-u是带星号的,一定要加,他的作用是标识你要给哪个账户重置密码,在es启动的时候他会默认创建一个叫做elastic的账户。我们就用这个。
-i 一般也要加上,因为他表示交互式,所谓交互式就是你可以和服务对话,他会提醒你要不要创建,创建啥你输入,不然es自己给你生成哪个密码很抽象,你记不住的。
所以我们的命令就是 elasticsearch-reset-password -u elastic -i

此时我们真的完成了最后一步。登陆吧骚年。

完美进入。你发现了吧,很几把麻烦,尤其是集群会更麻烦,后面我会写一篇集群如何部署的文档。

注意,你之后启动容器就直接run就好,别删了重新启动一个新的,这样你还要再来一遍。

至于如果你使用elastic cloud的话,那会方便的多得多,但是只有14天,后面要收费,很贵的哦。

相关推荐
feng_blog66882 小时前
【docker-1】快速入门docker
java·docker·eureka
SelectDB技术团队7 小时前
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
大数据·elasticsearch·金融·doris·日志分析
纸飞机√※8 小时前
windows下部署安装 ELK,nginx,tomcat日志分析
windows·nginx·elk·tomcat
做咩啊~8 小时前
部署Metricbeat监测ES
elasticsearch
ccnnlxc8 小时前
日志收集Day005
elk
数据馅9 小时前
python自动生成pg数据库表对应的es索引
数据库·python·elasticsearch
cr72589 小时前
MCP Server 开发实战:无缝对接 LLM 和 Elasticsearch
大数据·elasticsearch·搜索引擎
codeBrute9 小时前
Elasticsearch的经典面试题及详细解答
大数据·elasticsearch·搜索引擎
risc1234569 小时前
【Elasticsearch】_reindex api请求
elasticsearch