ElasticSearch、Kibana 8.x 安装教程

快猫运营团队 2025-03-19 14:34:24

想测试一下 Elastic 的 APM 能力,需要安装一个 ElasticSearch 和 Kibana 的测试环境,顺手记录到博客里,供新手查阅。

环境准备

  • OS: Linux lab-dev 6.1.0-27-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.115-1 (2024-11-01) x86_64 GNU/Linux
  • ElasticSearch: 8.10.4

ElasticSearch 安装

ElasitcSearch 要运行在非 root 账号下,我这里只是想快速测试,直接创建一个 elasticsearch 账号,回头我直接使用这个账号来安装启动 ElasticSearch。

groupadd elasticsearch
useradd elasticsearch -g elasticsearch -m -s /bin/bash

通过上面命令创建 elasticsearch 用户,直接给一个 bash shell,简单粗暴。完事切换到 elasticsearch 账号,下载 ElasticSearch 安装包:

su - elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.10.4-linux-x86_64.tar.gz
tar -zxvf elasticsearch-8.10.4-linux-x86_64.tar.gz

解压之后,进入 elasticsearch-8.10.4 目录,看到下面的内容:

elasticsearch@lab-dev:~/elasticsearch-8.10.4$ ll
total 2232
drwxr-xr-x 10 elasticsearch elasticsearch    4096 Mar 17 16:22 .
drwxr-xr-x  5 elasticsearch elasticsearch    4096 Mar 18 11:06 ..
drwxr-xr-x  2 elasticsearch elasticsearch    4096 Oct 12  2023 bin
drwxr-xr-x  4 elasticsearch elasticsearch    4096 Mar 18 11:16 config
drwxr-xr-x  8 elasticsearch elasticsearch    4096 Oct 12  2023 jdk
drwxr-xr-x  5 elasticsearch elasticsearch    4096 Oct 12  2023 lib
-rw-r--r--  1 elasticsearch elasticsearch    3860 Oct 12  2023 LICENSE.txt
drwxr-xr-x  2 elasticsearch elasticsearch    4096 Mar 19 00:00 logs
drwxr-xr-x 76 elasticsearch elasticsearch    4096 Oct 12  2023 modules
-rw-r--r--  1 elasticsearch elasticsearch 2231504 Oct 12  2023 NOTICE.txt
drwxr-xr-x  2 elasticsearch elasticsearch    4096 Oct 12  2023 plugins
-rw-r--r--  1 elasticsearch elasticsearch    8157 Oct 12  2023 README.asciidoc

在这个目录下创建 data 目录,用来存放 ElasticSearch 的数据:

mkdir data

然后修改 config/elasticsearch.yml 文件,设置如下配置项:

## 集群名字,随意取一个
cluster.name: ulric-es-cluster

## 节点名字,随意取一个,同时在 /etc/hosts 里配置一下 node-1 和本机 IP 对应,后面多机器操作的时候方便
node.name: node-1

## 数据目录
path.data: /home/elasticsearch/elasticsearch-8.10.4/data

## 日志目录
path.logs: /home/elasticsearch/elasticsearch-8.10.4/logs

## 我会在其他机器访问 ElasticSearch,直接把 ElasticSearch 绑定到 0.0.0.0 了
network.host: 0.0.0.0

## 指定初始 master 节点
cluster.initial_master_nodes: ["node-1"]

ElasticSearch 是 Java 写的,设置一下 JVM 堆大小。我这个虚拟机内存不大,设置为 2G。一般来讲,至少设置为 2G,如果只给 1G,稍微一运行内存就不够用。如果是生产环境,建议的内存大小设置为 50% 的物理内存,但是不要超过 32G。这是官方的建议。

config/jvm.options.d 下面创建一个 es.options 文件,设置 JVM 堆大小:

cat > config/jvm.options.d/es.options << EOF
-Xms2g
-Xmx2g
EOF

然后就可以启动了,直接运行 bin/elasticsearch

bin/elasticsearch -d

其中 -d 是扔到后台运行。ElasitcSearch 8.x 版本默认使用 HTTPS,并且会在 config/certs 目录下生成证书。然后我们就可以使用 curl 做测试了:

curl -s --cacert config/certs/http_ca.crt https://127.0.0.1:9200/_cluster/health | python3 -mjson.tool
{
    "error": {
        "root_cause": [
            {
                "type": "security_exception",
                "reason": "missing authentication credentials for REST request [/_cluster/health]",
                "header": {
                    "WWW-Authenticate": [
                        "Basic realm=\"security\" charset=\"UTF-8\"",
                        "Bearer realm=\"security\"",
                        "ApiKey"
                    ]
                }
            }
        ],
        "type": "security_exception",
        "reason": "missing authentication credentials for REST request [/_cluster/health]",
        "header": {
            "WWW-Authenticate": [
                "Basic realm=\"security\" charset=\"UTF-8\"",
                "Bearer realm=\"security\"",
                "ApiKey"
            ]
        }
    },
    "status": 401
}

这是要求我们提供用户名和密码。我们可以使用下面的命令重置一个:

bin/elasticsearch-reset-password -u elastic

我最终生成的 elastic 的密码是:9wApgqichkT2D75oV*l7,然后就可以使用 curl 带上用户名和密码了:

curl -s --cacert config/certs/http_ca.crt -u 'elastic:9wApgqichkT2D75oV*l7' https://127.0.0.1:9200/_cluster/health | python3 -mjson.tool
{
    "cluster_name": "ulric-es-cluster",
    "status": "yellow",
    "timed_out": false,
    "number_of_nodes": 1,
    "number_of_data_nodes": 1,
    "active_primary_shards": 64,
    "active_shards": 64,
    "relocating_shards": 0,
    "initializing_shards": 0,
    "unassigned_shards": 30,
    "delayed_unassigned_shards": 0,
    "number_of_pending_tasks": 0,
    "number_of_in_flight_fetch": 0,
    "task_max_waiting_in_queue_millis": 0,
    "active_shards_percent_as_number": 68.08510638297872
}

Kibana 安装

Kibana 我也继续放在 elasticsearch 账号下:

wget https://artifacts.elastic.co/downloads/kibana/kibana-8.10.4-linux-x86_64.tar.gz
tar -zxf kibana-8.10.4-linux-x86_64.tar.gz 

然后进入 kibana-8.10.4 下面的 config 目录,修改 kibana.yml 文件:

## 回头我要在其他机器访问 Kibana,所以监听范围大一些
server.host: "0.0.0.0"

## 指定 i18n 的语言,我这里设置为中文
i18n.locale: "zh-CN"

然后进入 bin 目录启动就可以了,我是测试环境,直接使用 nohup 启动:

nohup ./kibana &> stdout.log &

如果进程正常启动,在 elasticsearch 账号下应该有两个进程,一个是 ElasticSearch,一个是 Kibana,使用 ps 检查一下:

ps -u elasticsearch x

应该同时看到 ElasticSearch 和 node 进程,node 就是 Kibana,因为 Kibana 是 NodeJS 写的。

在 Kibana 的日志中可以看到提示的 code:

i Kibana has not been configured.

Go to http://0.0.0.0:5601/?code=335215 to get started.

然后浏览器访问 Kibana 的地址,在 URL 后面加上 code 参数。比如我这个虚拟机的 IP 是 10.129.0.69,那么访问的地址就是:http://10.129.0.69:5601/?code=335215

首次访问 Kibana 需要注册令牌,获取令牌的方式有提示,命令为:

bin/elasticsearch-create-enrollment-token --scope kibana

然后就完活了,如果页面一直在等待,可以刷新一下也会进来的。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat