智慧医院智能运维实训指导书-实训指南01:部署Elastic Stack

1,263 阅读25分钟

一、实训目的

1、了解Elastic Stack的相关组件;

2、掌握基于Docker容器的Elastic Stack的平台规划;

3、掌握基于Docker容器的Elastic Stack的部署与配置。

二、实训学时

6 学时

三、实训类型

综合性

四、实训需求

1、硬件

每人配备计算机 1 台。

2、软件

安装Edge、Firefox、Chrome等最新版本浏览器,安装Mobaxterm软件。

3、网络

本地主机能够访问教学云计算平台,虚拟机按照配置指南配置网络。

4、工具

无。

五、实训任务

1、完成Docker和Docker Compose的环境安装;

2、完成Elastic Stack的部署与配置。

六、实训环境

1、本实训需要VM 1台,操作系统使用openEuler 24.03 LTS SP1。

2、本实训VM配置信息如表1-1所示。

图 1-1 虚拟机配置信息

虚拟机配置操作系统配置
虚拟机名称:Labs-ELK-VM-101内存:8GBCPU:1颗,4核心虚拟磁盘:20GB(系统盘) +50GB(数据盘)网卡:1块主机名:Labs-ELK-VM-101IP地址:10.10.2.101子网掩码:255.255.255.0网关:10.10.2.1DNS:10.10.3.70

📌注意:虚拟机名称、主机名称均需要按照实训课提供的实训指南中实训环境进行配置,虚拟机网络请根据自身实验环境进行配置,请勿完全按照实训环境进行配置。

七、实训内容及步骤

1、准备平台部署环境

1.1创建虚拟机

(1)在本实训课程提供的虚拟化资源平台上创建虚拟机,在左侧导航栏右击【虚拟机】,单击【创建/注册虚拟机】进入新建虚拟机向导,选择创建类型为【创建新虚拟机】,单击【下一页】,如图1-1所示。

(2)选择名称和客户机操作系统。设置虚拟机名称为“Labs-ELK-VM-101”,客户机操作系统系列为“Linux”,客户机操作系统版本为“其他 Linux (64 位)”,单击【下一页】,如图1-2所示。

(3)选择存储。选择虚拟机所使用的存储为“Cloud-ESXi-Node-2-Local-2”,单击【下一页】,如图1-3所示。

(4)自定义设置。按照本实训指南中《六、实训环境》规划的虚拟机完成虚拟机配置,设置CPU为4核,内存为8GB,硬盘为20GB,添加一块新硬盘为50GB,单击【下一页】,如图1-4所示。

(5)即将完成。检查虚拟机配置信息,确认无误单击【完成】开始创建虚拟机,如图1-5所示。

1.2 安装操作系统

操作系统镜像文件可通过openEuler官方网站(www.openeuler.org/zh)下载获取, 本实训所使用的操作系统镜像均为openEuler-24.03-LTS-SP1-x86_64-dvd.iso。

(1)等待虚拟机创建完成,在左侧导航栏单击【虚拟机】-【Labs-ELK-VM-101】,打开虚拟机电源,如图1-6所示。

(2)在虚拟机详细信息页面,依次单击【控制台】-【启动远程控制台】,将操作系统镜像挂载到该虚拟机,重新启动客户机,在初始安装界面中,使用键盘上下按键选择“Install openEuler 24.03-LTS-sp1”,按【Enter】键确认,开始操作系统的安装,如图1-7所示。

(3)在“欢迎”窗口中,设置安装语言为“中文-简体中文”,单击【继续(C)】,如图1-8所示。

(4)在“安装信息摘要”窗口,单击【安装目的地(D)】,按照目标位置选择大小为20GB的本地标准磁盘,点击【完成(D)】,如图1-9所示。

(5)在“安装信息摘要”窗口,单击“网络和主机名”进行设置。按照本实训指南中《六、实训环境》虚拟机网络和主机名规划完成配置,配置完成单击【完成(D)】,如图1-10所示。

(6)在“安装信息摘要”窗口,单击“Root账户”,勾选“启用root账户(E)”,设置Root密码,单击【完成(D)】,如图1-11所示。

(7)在“安装信息摘要”窗口,单击【开始安装】,等待安装完成,单击【重启系统(R)】,如图1-12所示。

1.3 使用SSH工具远程连接虚拟机

(1)在本地Windows启动SSH远程连接工具MobaXterm,进入主界面,如图1-13所示。

(2)点击“Session”图标,在配置对话框中输入"Remote host"为虚拟机地址10.10.2.101,“Specify username”为root,Port为22,如图1-14所示。填写完成后单击【OK】后输入账号root的密码,登录操作系统,如图1-15所示。

2、设计部署方案

本实训部署的Elastic Stack平台是基于Docker Compose实现容器化部署,容器数据存储在单独的磁盘中,虚拟机存储规划如表1-2所示。

磁盘名称磁盘大小用途挂载目录
/dev/sda20GB安装操作系统--
/dev/sdb50GB存储Docker容器数据/data

Elastic Stack平台使用Docker容器部署实现,平台由3个Elasticsearch集群节点、1个Kibana节点和3个Logstash节点组成,其中3个Elasticsearch集群节点既作为主节点同时也作为数据节点,Kibana节点用于可视化展示Elasticsearch集群数据,3个Logstash节点分别用于不同类型日志的清洗。Docker容器规划如表1-3所示。

表 1-3 Elastic Stack平台容器规划

容器名称用途容器IP映射端口
labs-elk-es-setupES集群初始化172.20.100.10--
labs-elk-es-node-1ES集群主节点+数据节点172.20.100.119200
labs-elk-es-node-2ES集群数据节点172.20.100.12--
labs-elk-es-node-3ES集群数据节点172.20.100.13--
labs-elk-kibanaES集群可视化平台172.20.100.145601
labs-elk-logstash-1Linux Syslog日志清洗172.20.100.155044
labs-elk-logstash-2MySQL日志清洗172.20.100.165045
labs-elk-logstash-3Apache日志清洗172.20.100.175046

📌本步骤的网络规划要根据实际情况修订,不可照抄。

3、安装Docker和Docker Compose

3.1 数据磁盘格式化与挂载

(1)查看主机Labs-ELK-VM-101的磁盘信息,参考命令如下。

[root@Labs-ELK-VM-101 ~]# lsblk
NAME               MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0  20G  0 disk
├─sda1               8:1    0   1M  0 part
├─sda2               8:2    0   1G  0 part /boot
└─sda3               8:3    0  19G  0 part
  ├─openeuler-root 253:0    0  17G  0 lvm  /
  └─openeuler-swap 253:1    0   2G  0 lvm  [SWAP]
sdb                  8:16   0  50G  0 disk
sr0                 11:0    1   4G  0 rom

(2)创建“/data”目录,格式化磁盘“/dev/sdb”作为Docker容器数据存储磁盘,并将其挂载到“/data”目录,参考命令如下。

# 创建/data目录
[root@Labs-ELK-VM-101 ~]# mkdir /data

# 格式化磁盘/dev/sdb
[root@Labs-ELK-VM-101 ~]# mkfs.ext4 /dev/sdb
mke2fs 1.47.0 (5-Feb-2023)
创建含有 13107200 个块(每块 4k)和 3276800 个 inode 的文件系统
文件系统 UUID:bde3e56a-9b20-4c97-9e0b-66ec59067701
超级块的备份存储于下列块:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424

正在分配组表:完成
正在写入 inode表:完成
创建日志(65536 个块):完成
写入超级块和文件系统账户统计信息:已完成

# 将磁盘/dev/sdb挂载到/data目录
[root@Labs-ELK-VM-101 ~]# mount /dev/sdb /data

# 查看磁盘挂载情况
[root@Labs-ELK-VM-101 ~]# df -h
文件系统                    大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root   17G  1.8G   14G   12% /
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       3.7G     0  3.7G    0% /dev/shm
tmpfs                       4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                       1.5G  8.7M  1.5G    1% /run
tmpfs                       3.7G     0  3.7G    0% /tmp
/dev/sda2                   974M  174M  733M   20% /boot
/dev/sdb                     49G   24K   47G    1% /data

(3)修改配置文件/etc/fstab实现磁盘永久挂载,参考命令如下。

[root@Labs-ELK-VM-101 ~]# vi /etc/fstab
# 在文件末尾添加如下内容实现永久挂载
--------------------/etc/fstab--------------------
/dev/sdb                /data                   ext4    defaults        0 0
--------------------/etc/fstab--------------------

# 重新加载systemd配置,以使新的配置生效
[root@Labs-ELK-VM-101 ~]# systemctl daemon-reload

# 卸载/data目录下的文件系统
[root@Labs-ELK-VM-101 ~]# umount /data
# 查看磁盘挂载情况
[root@Labs-ELK-VM-101 ~]# df -h
文件系统                    大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root   17G  1.8G   14G   12% /
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       3.7G     0  3.7G    0% /dev/shm
tmpfs                       4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                       1.5G  8.7M  1.5G    1% /run
tmpfs                       3.7G     0  3.7G    0% /tmp
/dev/sda2                   974M  174M  733M   20% /boot

# 挂载/etc/fstab 文件中列出的所有文件系统
[root@Labs-ELK-VM-101 ~]# mount -a
# 查看磁盘挂载情况
root@Labs-ELK-VM-101 ~]# df -h
文件系统                    大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root   17G  1.8G   14G   12% /
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       3.7G     0  3.7G    0% /dev/shm
tmpfs                       4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                       1.5G  8.7M  1.5G    1% /run
tmpfs                       3.7G     0  3.7G    0% /tmp
/dev/sda2                   974M  174M  733M   20% /boot
/dev/sdb                     49G   24K   47G    1% /data

3.2 安装Docker

(1)在主机Labs-ELK-VM-101上关闭SELinux,参考命令如下。

# 临时关闭SELinux
[root@Labs-ELK-VM-101 ~]# setenforce 0
# 永久关闭SElinux
[root@Labs-ELK-VM-101 ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config

(2)添加阿里云的Docker CE软件仓库,参考命令如下。

# 添加阿里云的Docker CE软件仓库
[root@Labs-ELK-VM-101 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 将docker-ce.repo文件中所有$releasever替换为8
[root@Labs-ELK-VM-101 ~]# sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo

(3)安装Docker及相关组件:Docker社区版、Docker命令行客户端、容器运行时(Docker依赖的核心组件),参考命令如下。

[root@Labs-ELK-VM-101 ~]# yum install -y docker-ce docker-ce-cli containerd.io

(4)创建Docker配置文件 /etc/docker/daemon.json,配置Docker数据目录(/data目录)和Docker镜像加速,重新加载systemd配置,启动Docker服务并设置开机自启,参考命令如下。

# 配置Docker数据目录和镜像加速
[root@Labs-ELK-VM-101 ~]# cat <<-EOF > /etc/docker/daemon.json 
{
  "data-root": "/data/docker",
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://docker-0.unsee.tech"        
  ]
}
EOF
# 加载systemd配置,使配置生效
[root@Labs-ELK-VM-101 ~]# systemctl daemon-reload
# 启动docker服务并设置开机自启
[root@Labs-ELK-VM-101 ~]# systemctl enable docker --now

3.3 安装Docker Compose

(1)在主机Labs-ELK-VM-101上下载Docker Compose二进制可执行文件,参考命令如下。

# 下载Docker Compose
[root@Labs-ELK-VM-101 ~]# curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

📌本步骤需要下载大量资源,且受网络速率的影响,可能需要较长时间。

(2)对Docker Compose二进制文件赋予执行权限并创建软连接,参考命令如下。

# 赋予执行权限
[root@Labs-ELK-VM-101 ~]# chmod +x /usr/local/bin/docker-compose
# 创建软连接
[root@Labs-ELK-VM-101 ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

(3)查看Docker Compose版本,验证Docker Compose是否安装成功,参考命令如下。

# 验证Docker Compose安装
[root@Labs-ELK-VM-101 ~]# docker-compose --version

4、使用Docker Compose部署Elastic Stack

4.1创建Elasticsearch集群和Kibana容器

(1)在主机Labs-ELK-VM-101上编辑配置文件/etc/sysctl.conf,修改linux内核参数vm.max_map_count,设置用于控制一个进程可以拥有的最大内存映射区域数量为262144。参考命令如下。

# 修改配置文件/etc/sysctl.conf
[root@Labs-ELK-VM-101 ~]# vi /etc/sysctl.conf
--------------------/etc/sysctl.conf--------------------
# 在文件末尾添加如下内容
vm.max_map_count=262144
--------------------/etc/sysctl.conf--------------------

# 重新加载系统参数,使配置生效
[root@Labs-ELK-VM-101 ~]# sysctl -p
vm.max_map_count = 262144

📌vm.max_map_count是Linux内核参数之一,用于控制一个进程可以拥有的最大内存映射区域数量。内存映射是一种将文件或其他对象映射到进程地址空间的方法,它允许进程直接读取或写入文件,而不需要调用额外的read() 或 write()系统调用。这在一些场景下可以提高性能,特别是对于大型文件或数据库操作。

在Elasticsearch和类似的分布式系统中,通常会大量使用内存映射来管理数据和索引。因此,为了确保系统正常运行,需要调整内核参数以允许更多的内存映射。

(2)在/root目录下创建目录elastic_stack,并进入elastic_stack目录,参考命令如下。

# 创建目录elastic_stack
[root@Labs-ELK-VM-101 ~]# mkdir elastic_stack
# 进入目录elastic_stack
[root@Labs-ELK-VM-101 ~]# cd elastic_stack

(2)在elastic_stack目录下创建用于配置 Elastic Stack(Elasticsearch、Kibana 等)的.env环境变量文件,并编辑环境变量文件定义相关变量,参考命令如下。

[root@Labs-ELK-VM-101 elastic_stack]# touch .env
[root@Labs-ELK-VM-101 elastic_stack]# vi .env
--------------------/root/elastic_stack/.env--------------------
# Password for the 'elastic' user (at least 6 characters)
ELASTIC_PASSWORD=Labs#ELK@2025

# Password for the 'kibana_system' user (at least 6 characters)
KIBANA_PASSWORD=Labs#ELK@2025

# Version of Elastic products
STACK_VERSION=9.0.4

# Set the cluster name
CLUSTER_NAME=Labs-Cluster

# Set to 'basic' or 'trial' to automatically start the 30-day trial
#LICENSE=basic
LICENSE=trial

# Port to expose Elasticsearch HTTP API to the host
ES_PORT=9200
#ES_PORT=127.0.0.1:9200

# Port to expose Kibana to the host
KIBANA_PORT=5601
#KIBANA_PORT=80

# Increase or decrease based on the available host memory (in bytes)
MEM_LIMIT=2147483648

# Project namespace (defaults to the current folder name if not set)
#COMPOSE_PROJECT_NAME=Labs-Project
--------------------/root/elastic_stack/.env--------------------

(3)在elastic_stack目录下创建Docker Compose文件docker-compose-es.yml,并编辑文件定义相关容器。通过Docker Compose创建Elasticsearch初始化节点,Elasticsearch三节点集群和Kibana容器。参考命令如下。

[root@Labs-ELK-VM-101 elastic_stack]# touch docker-compose-es.yml
[root@Labs-ELK-VM-101 elastic_stack]# vi docker-compose-es.yml

(4)docker-compose-es.yml文件内容如下。

version: "2.2"

services:
  # Elasticsearch集群初始化节点
  labs-elk-es-setup:
    container_name: labs-elk-es-setup
    image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} 
    volumes:
      # 将生成的证书挂在到本地存储卷certs
      - certs:/usr/share/elasticsearch/config/certs
    networks:
      net:
        ipv4_address: 172.20.100.10
    user: "0"
    command: >
      bash -c '
        # 检查环境变量ELASTIC_PASSWORD和KIBANA_PASSWORD是否为空,若未设置则报错并终止脚本
        if [ x${ELASTIC_PASSWORD} == x ]; then
          echo "Set the ELASTIC_PASSWORD environment variable in the .env file";
          exit 1;
        elif [ x${KIBANA_PASSWORD} == x ]; then
          echo "Set the KIBANA_PASSWORD environment variable in the .env file";
          exit 1;
        fi;
        # 检测CA证书是否存在,不存在则创建CA证书
        if [ ! -f config/certs/ca.zip ]; then
          echo "Creating CA";
          bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip;
          unzip config/certs/ca.zip -d config/certs;
        fi;
        # 检测节点证书是否存在,不存在则创建节点证书
        if [ ! -f config/certs/certs.zip ]; then
          echo "Creating certs";
          echo -ne \
          "instances:\n"\
          "  - name: labs-elk-es-node-1\n"\
          "    dns:\n"\
          "      - labs-elk-es-node-1\n"\
          "      - localhost\n"\
          "    ip:\n"\
          "      - 127.0.0.1\n"\
          "  - name: labs-elk-es-node-2\n"\
          "    dns:\n"\
          "      - labs-elk-es-node-2\n"\
          "      - localhost\n"\
          "    ip:\n"\
          "      - 127.0.0.1\n"\
          "  - name: labs-elk-es-node-3\n"\
          "    dns:\n"\
          "      - labs-elk-es-node-3\n"\
          "      - localhost\n"\
          "    ip:\n"\
          "      - 127.0.0.1\n"\
          > config/certs/instances.yml;
          bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key;
          unzip config/certs/certs.zip -d config/certs;
        fi;
        echo "Setting file permissions"
        # 设置证书目录权限,修改用户和用户组为root
        chown -R root:root config/certs;
         # 修改当前目录及其所有子目录的权限设置为750
        find . -type d -exec chmod 750 {} ;;
        # 修改当前目录及其所有子目录中所有普通文件的权限设置为640
        find . -type f -exec chmod 640 {} ;;
        echo "Waiting for Elasticsearch availability";
        # 持续检测Elasticsearch节点是否就绪,每30秒重试一次,直到满足条件
        until curl -s --cacert config/certs/ca/ca.crt https://labs-elk-es-node-1:9200 | grep -q "missing authentication credentials"; do sleep 30; done;
        echo "Setting kibana_system password";
        # 为内置用户kibana_system配置密码
        until curl -s -X POST --cacert config/certs/ca/ca.crt -u "elastic:${ELASTIC_PASSWORD}" -H "Content-Type: application/json" https://labs-elk-es-node-1:9200/_security/user/kibana_system/_password -d "{"password":"${KIBANA_PASSWORD}"}" | grep -q "^{}"; do sleep 10; done;
        echo "All done!";
      '
    healthcheck:
      # 检查节点证书文件是否存在
      test: ["CMD-SHELL", "[ -f config/certs/labs-elk-es-node-1/labs-elk-es-node-1.crt ]"]
      # 每秒检查1次
      interval: 1s
      # 每次检查最多等待5秒
      timeout: 5s
      # 最多尝试120次
      retries: 120

  # Elasticsearch集群labs-elk-es-node-1节点
  labs-elk-es-node-1:
    depends_on:
      labs-elk-es-setup:
        condition: service_healthy
    container_name: labs-elk-es-node-1
    image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} 
    # 指定容器的重启策略为:容器停止后自动重启
    restart: always
    volumes:
      # 将初始化节点生成的CA证书和节点证书数据卷挂载到容器内部目录
      - certs:/usr/share/elasticsearch/config/certs
      #  将Elasticsearch节点的数据目录挂载到本地数据卷esdata01
      - esdata01:/usr/share/elasticsearch/data
    ports:
      # 将容器内Elasticsearch服务的默认端口9200映射到主机的${ES_PORT}端口上(环境变量在.env文件中定义)
      - ${ES_PORT}:9200
    networks:
      net:
        ipv4_address: 172.20.100.11
    environment:
      # 设置Elasticsearch节点的名称为labs-elk-es-node-1
      - node.name=labs-elk-es-node-1
      # 设置Elasticsearch集群的名称为${CLUSTER_NAME}(环境变量在.env文件中定义)
      - cluster.name=${CLUSTER_NAME}
      # 指定参与初始主节点选举的候选节点列表,用于引导集群形成
      - cluster.initial_master_nodes=labs-elk-es-node-1,labs-elk-es-node-2,labs-elk-es-node-3
      # 设置Elasticsearch节点的初始发现主机列表,用于新节点加入集群时自动发现已有节点
      - discovery.seed_hosts=labs-elk-es-node-2,labs-elk-es-node-3
      # 设置Elasticsearch的用户elastic的密码
      - ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
      # 启用Elasticsearch进程的内存锁定,避免由于频繁的内存交换而导致的性能下降
      - bootstrap.memory_lock=true
      # 启用X-Pack安全模块,强制所有操作需身份认证
      - xpack.security.enabled=true
      # 启用HTTPS加密客户端到Elasticsearch的通信
      - xpack.security.http.ssl.enabled=true
      # 指定节点HTTP服务的私钥文件路径
      - xpack.security.http.ssl.key=certs/labs-elk-es-node-1/labs-elk-es-node-1.key
      # 指定节点HTTP服务的证书文件路径
      - xpack.security.http.ssl.certificate=certs/labs-elk-es-node-1/labs-elk-es-node-1.crt
      # 指定信任的根证书 (CA),用于验证客户端证书(若启用双向认证)
      - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
      # 启用节点间通信加密(默认端口 9300),防止数据嗅探
      - xpack.security.transport.ssl.enabled=true
      # 指定节点间通信的私钥文件路径
      - xpack.security.transport.ssl.key=certs/labs-elk-es-node-1/labs-elk-es-node-1.key
      # 指定节点间通信的证书文件路径
      - xpack.security.transport.ssl.certificate=certs/labs-elk-es-node-1/labs-elk-es-node-1.crt
      # 指定信任的根证书 (CA),用于验证其他节点证书
      - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
      # 设置证书验证级别为certificate(验证证书有效性,但不验证主机名)
      - xpack.security.transport.ssl.verification_mode=certificate
      # 设置许可证类型,${LICENSE}变量通常为basic(免费)或trial(全功能试用)
      - xpack.license.self_generated.type=${LICENSE}
      # 允许机器学习功能自动调整内存占用百分比
      - xpack.ml.use_auto_machine_memory_percent=true
    mem_limit: ${MEM_LIMIT}
    # 定义进程的资源限制配置
    # 整体作用:允许Elasticsearch进程锁定所需的所有物理内存(与bootstrap.memory_lock=true配合使用,确保JVM内存不被交换到磁盘)
    ulimits:
      # 指定内存锁定相关的限制
      memlock:
        # 设置内存锁定的软限制为"无限制"
        soft: -1
        # 设置内存锁定的硬限制为"无限制"
        hard: -1
    # 定义容器健康检查机制
    healthcheck:
      # 通过检测未认证访问时的特定错误信息,确认Elasticsearch服务已完成安全初始化并处于可接受请求的状态,持续验证120次直到服务就绪
      test:
        [
          "CMD-SHELL",
          "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
        ]
      # 每10秒检查一次
      interval: 10s
      # 每次检查最多等待10秒
      timeout: 10s
      # 最多尝试120次
      retries: 120

  labs-elk-es-node-2:
    depends_on:
      - labs-elk-es-node-1
    container_name: labs-elk-es-node-2
    image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
    restart: always
    volumes:
      - certs:/usr/share/elasticsearch/config/certs
      - esdata02:/usr/share/elasticsearch/data
    networks:
      net:
        ipv4_address: 172.20.100.12
    environment:
      - node.name=labs-elk-es-node-2
      - cluster.name=${CLUSTER_NAME}
      - cluster.initial_master_nodes=labs-elk-es-node-1,labs-elk-es-node-2,labs-elk-es-node-3
      - discovery.seed_hosts=labs-elk-es-node-1,labs-elk-es-node-3
      - ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
      - bootstrap.memory_lock=true
      - xpack.security.enabled=true
      - xpack.security.http.ssl.enabled=true
      - xpack.security.http.ssl.key=certs/labs-elk-es-node-2/labs-elk-es-node-2.key
      - xpack.security.http.ssl.certificate=certs/labs-elk-es-node-2/labs-elk-es-node-2.crt
      - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
      - xpack.security.transport.ssl.enabled=true
      - xpack.security.transport.ssl.key=certs/labs-elk-es-node-2/labs-elk-es-node-2.key
      - xpack.security.transport.ssl.certificate=certs/labs-elk-es-node-2/labs-elk-es-node-2.crt
      - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
      - xpack.security.transport.ssl.verification_mode=certificate
      - xpack.license.self_generated.type=${LICENSE}
      - xpack.ml.use_auto_machine_memory_percent=true
    mem_limit: ${MEM_LIMIT}
    ulimits:
      memlock:
        soft: -1
        hard: -1
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
        ]
      interval: 10s
      timeout: 10s
      retries: 120

  labs-elk-es-node-3:
    depends_on:
      - labs-elk-es-node-2
    container_name: labs-elk-es-node-3
    image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
    restart: always
    volumes:
      - certs:/usr/share/elasticsearch/config/certs
      - esdata03:/usr/share/elasticsearch/data
    networks:
      net:
        ipv4_address: 172.20.100.13
    environment:
      - node.name=labs-elk-es-node-3
      - cluster.name=${CLUSTER_NAME}
      - cluster.initial_master_nodes=labs-elk-es-node-1,labs-elk-es-node-2,labs-elk-es-node-3
      - discovery.seed_hosts=labs-elk-es-node-1,labs-elk-es-node-2
      - ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
      - bootstrap.memory_lock=true
      - xpack.security.enabled=true
      - xpack.security.http.ssl.enabled=true
      - xpack.security.http.ssl.key=certs/labs-elk-es-node-3/labs-elk-es-node-3.key
      - xpack.security.http.ssl.certificate=certs/labs-elk-es-node-3/labs-elk-es-node-3.crt
      - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
      - xpack.security.transport.ssl.enabled=true
      - xpack.security.transport.ssl.key=certs/labs-elk-es-node-3/labs-elk-es-node-3.key
      - xpack.security.transport.ssl.certificate=certs/labs-elk-es-node-3/labs-elk-es-node-3.crt
      - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
      - xpack.security.transport.ssl.verification_mode=certificate
      - xpack.license.self_generated.type=${LICENSE}
      - xpack.ml.use_auto_machine_memory_percent=true
    mem_limit: ${MEM_LIMIT}
    ulimits:
      memlock:
        soft: -1
        hard: -1
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
        ]
      interval: 10s
      timeout: 10s
      retries: 120

  labs-elk-kibana:
    depends_on:
      labs-elk-es-node-1:
        condition: service_healthy
      labs-elk-es-node-2:
        condition: service_healthy
      labs-elk-es-node-3:
        condition: service_healthy
    container_name: labs-elk-kibana
    image: docker.elastic.co/kibana/kibana:${STACK_VERSION}
    restart: always
    volumes:
      - certs:/usr/share/kibana/config/certs
      - kibanadata:/usr/share/kibana/data
      - kibanaconfig:/usr/share/kibana/config
    ports:
      - ${KIBANA_PORT}:5601
    networks:
      net:
        ipv4_address: 172.20.100.14
    environment:
      - SERVERNAME=kibana
      - ELASTICSEARCH_HOSTS=https://labs-elk-es-node-1:9200
      - ELASTICSEARCH_USERNAME=kibana_system
      - ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}
      - ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt
    mem_limit: ${MEM_LIMIT}
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'",
        ]
      interval: 10s
      timeout: 10s
      retries: 120

# 使用主机本地存储,定义持久化存储卷
volumes:
  certs:
    name: labs-elk-certs
    driver: local
  esdata01:
    name: labs-elk-es-data01
    driver: local
  esdata02:
    name: labs-elk-es-data02
    driver: local
  esdata03:
    name: labs-elk-es-data03
    driver: local
  kibanadata:
    name: labs-elk-kibana-data
    driver: local
  kibanaconfig:
    name: labs-elk-kibana-config
    driver: local

# 创建隔离的专用网络
networks:
 net:
  # 设置网络名称为labs-elk-network
  name: labs-elk-network
  # 设置网络类型为bridge
  driver: bridge
  ipam:
   config:
    # 定义网络子网范围:172.20.100.0/24
    - subnet: 172.20.100.0/24

(5)执行Docker Compose创建容器,参考命令如下。

[root@Labs-ELK-VM-101 elastic_stack]# docker-compose -f docker-compose-es.yml up -d

📌本步骤需要下载大量资源,且受网络速率的影响,可能需要较长时间。

(6)使用docker exec命令进入容器labs-elk-kibana,为加密保存对象插件创建加密密钥,参考命令如下。

# 进入容器labs-elk-kibana
[root@Labs-ELK-VM-101 ~]# docker exec -it labs-elk-kibana /bin/bash

# 创建加密密钥
bash-5.1$ bin/kibana-encryption-keys generate
## Kibana Encryption Key Generation Utility

The 'generate' command guides you through the process of setting encryption keys for:

xpack.encryptedSavedObjects.encryptionKey
    Used to encrypt stored objects such as dashboards and visualizations
    https://www.elastic.co/guide/en/kibana/current/xpack-security-secure-saved-objects.html#xpack-security-secure-saved-objects

xpack.reporting.encryptionKey
    Used to encrypt saved reports
    https://www.elastic.co/guide/en/kibana/current/reporting-settings-kb.html#general-reporting-settings

xpack.security.encryptionKey
    Used to encrypt session information
    https://www.elastic.co/guide/en/kibana/current/security-settings-kb.html#security-session-and-cookie-settings


Already defined settings are ignored and can be regenerated using the --force flag.  Check the documentation links for instructions on how to rotate encryption keys.
Definitions should be set in the kibana.yml used configure Kibana.

Settings:
xpack.encryptedSavedObjects.encryptionKey: d9dbe12c7f4fc0ebd5f5c001a4180940
xpack.reporting.encryptionKey: dac7ca616ec7ca156eda1811ec6c436d
xpack.security.encryptionKey: 563af03ac0a4175bf5ccd574fc4cf77e

📌bin/kibana-encryption-keys generate 作用是生成一组随机的加密密钥,用于保护 Kibana 中保存的敏感数据(如存储对象)。

  • xpack.encryptedSavedObjects.encryptionKey: 加密存储在Kibanasaved objects(如仪表板、可视化、索引模式)中的敏感字段(例如:API 密钥、数据库连接密码、第三方服务的凭据等)。
  • xpack.reporting.encryptionKey: 加密Reporting功能生成的报告(如PDF、PNG导出)的存储内容。
  • xpack.security.encryptionKey: 加密Security功能相关的会话信息(如用户会话cookie)以及在浏览器中存储的安全相关状态。

(7)修改容器labs-elk-kibana的配置文件/data/docker/volumes/labs-elk-kibana-config/_data/kibana.yml添加上述生成的加密密钥参数。

---------------kibana.yml---------------
#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true

# 配置文件中添加以下内容(上述步骤生成的加密密钥参数):
xpack.encryptedSavedObjects.encryptionKey: a4185486bd133a9ea49e72ec8b1f21b3
xpack.reporting.encryptionKey: 48ea28086679d2ec25f342720eec48a9
xpack.security.encryptionKey: 4710555b420d4ca04c9ed7b9610a49d4
---------------kibana.yml---------------

📌

小贴士:

在主机Labs-ELK-VM-101上创建Kibana容器时,定义了将容器labs-elk-kibana的配置文件所在目录/usr/share/kibana/config挂载到本地存储卷labs-elk-kibana-config

Docker容器的存储卷存储位置为:Docke数据目录/volumes/存储卷名称/_data

(8)重启容器labs-elk-kibana,使配置生效,参考命令如下。

重启容器labs-elk-kibana
[root@Labs-ELK-VM-101 ~]# docker restart labs-elk-kibana

4.2 创建Logstash容器

(1)在elastic_stack目录下创建Docker Compose文件docker-compose-logstash.yml,并编辑文件定义相关容器。通过Docker Compose创建Logstash容器。参考命令如下。

[root@Labs-ELK-VM-101 elastic_stack]# touch docker-compose-logstash.yml
[root@Labs-ELK-VM-101 elastic_stack]# vi docker-compose-logstash.yml

(2)docker-compose-logstash.yml文件内容如下。

version: "2.2"
services:
  labs-elk-logstash-1:
    image: docker.elastic.co/logstash/logstash:${STACK_VERSION}
    container_name: labs-elk-logstash-1
    volumes:
      - certs:/usr/share/logstash/config/certs
      - logstash011:/usr/share/logstash/pipeline
      - logstash012:/usr/share/logstash/config
    restart: always
    ports:
      - 5044:5044
    networks:
      net:
        ipv4_address: 172.20.100.15
    extra_hosts:
      - "labs-elk-es-node-1:172.20.100.11"
      - "labs-elk-es-node-2:172.20.100.12"
      - "labs-elk-es-node-3:172.20.100.13"

  labs-elk-logstash-2:
    image: docker.elastic.co/logstash/logstash:${STACK_VERSION}
    container_name: labs-elk-logstash-2
    volumes:
      - certs:/usr/share/logstash/config/certs
      - logstash021:/usr/share/logstash/pipeline
      - logstash022:/usr/share/logstash/config
    restart: always
    ports:
      - 5045:5044
    networks:
      net:
        ipv4_address: 172.20.100.16
    extra_hosts:
      - "labs-elk-es-node-1:172.20.100.11"
      - "labs-elk-es-node-2:172.20.100.12"
      - "labs-elk-es-node-3:172.20.100.13"

  labs-elk-logstash-3:
    image: docker.elastic.co/logstash/logstash:${STACK_VERSION}
    container_name: labs-elk-logstash-3
    volumes:
      - certs:/usr/share/logstash/config/certs
      - logstash031:/usr/share/logstash/pipeline
      - logstash032:/usr/share/logstash/config
    restart: always
    ports:
      - 5046:5044
    networks:
      net:
        ipv4_address: 172.20.100.17
    extra_hosts:
      - "labs-elk-es-node-1:172.20.100.11"
      - "labs-elk-es-node-2:172.20.100.12"
      - "labs-elk-es-node-3:172.20.100.13"

volumes:
  certs:
    name: labs-elk-certs
    driver: local
  logstash011:
    name: labs-elk-logstash01-pipeline
    driver: local
  logstash012:
    name: labs-elk-logstash01-config
    driver: local
  logstash021:
    name: labs-elk-logstash02-pipeline
    driver: local
  logstash022:
    name: labs-elk-logstash02-config
    driver: local
  logstash031:
    name: labs-elk-logstash03-pipeline
    driver: local
  logstash032:
    name: labs-elk-logstash03-config
    driver: local

networks:
 net:
  name: labs-elk-network
  external: true

(5)执行Docker Compose创建容器,参考命令如下。

[root@Labs-ELK-VM-101 elastic_stack]# docker-compose -f docker-compose-logstash.yml up -d

5、验证Elastic Stack

(1)使用docker命令查看Elasticsearch三节点集群、Kibana容器、Logstash容器是否创建成功,参考命令如下。

[root@Labs-ELK-VM-101 ~]# docker ps
CONTAINER ID   IMAGE                                                 COMMAND                   CREATED         STATUS                PORTS                                                 NAMES
7270dc98abe5   docker.elastic.co/logstash/logstash:9.0.4             "/usr/local/bin/dock…"   3 minutes ago   Up 3 minutes          0.0.0.0:5044->5044/tcp, :::5044->5044/tcp, 9600/tcp   labs-elk-logstash-1
b9aebcecf676   docker.elastic.co/logstash/logstash:9.0.4             "/usr/local/bin/dock…"   3 minutes ago   Up 3 minutes          9600/tcp, 0.0.0.0:5045->5044/tcp, :::5045->5044/tcp   labs-elk-logstash-2
c519febaa5fd   docker.elastic.co/logstash/logstash:9.0.4             "/usr/local/bin/dock…"   3 minutes ago   Up 3 minutes          9600/tcp, 0.0.0.0:5046->5044/tcp, :::5046->5044/tcp   labs-elk-logstash-3
3dec26def77c   docker.elastic.co/kibana/kibana:9.0.4                 "/bin/tini -- /usr/l…"   4 days ago      Up 4 days (healthy)   0.0.0.0:5601->5601/tcp, :::5601->5601/tcp             labs-elk-kibana
fd7d6399d3cf   docker.elastic.co/elasticsearch/elasticsearch:9.0.4   "/bin/tini -- /usr/l…"   4 days ago      Up 4 days (healthy)   9200/tcp, 9300/tcp                                    labs-elk-es-node-3
3f76058a0f8e   docker.elastic.co/elasticsearch/elasticsearch:9.0.4   "/bin/tini -- /usr/l…"   4 days ago      Up 4 days (healthy)   9200/tcp, 9300/tcp                                    labs-elk-es-node-2
83b541e8ff69   docker.elastic.co/elasticsearch/elasticsearch:9.0.4   "/bin/tini -- /usr/l…"   4 days ago      Up 4 days (healthy)   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp   labs-elk-es-node-1

(2)使用浏览器访问Elasticsearch集群地址https://10.10.2.101:9200,输入elastic_stack目录下.env文件中定义的elastic用户及密码(用户名:elastic,密码:Labs#ELK@2025)查看Elasticsearch集群信息,如图1-17,1-18所示。

(3)使用浏览器访问Kibana地址http://10.10.2.101:5601,输入elastic_stack目录下.env文件中定义的elastic用户的密码(用户名:elastic,密码:Labs#ELK@2025)登录Kibana,如图1-19,1-20所示。

6、Kibana的使用

(1)使用浏览器访问Kibana地址,登录成功后进入Kibana的Home界面,展示Kibana的功能模块、集成模块、管理模块,点击相应模块可快速进入对应功能界面,如图1-21所示。

功能模块:Elasticsearch、Observability、Security、Analytics

  • Elasticsearch(弹性搜索):使用精细的API和工具创建搜索体验。
  • Observability(可观察性):使用专用UI整合日志、指标、应用程序跟踪和系统可用性。
  • Security(安全):预防、收集、检测和响应威胁,以在整个基础架构中提供统一保护。
  • Analytics(分析):使用分析工具和应用程序探索、可视化和分析数据。

集成模块:Add integrations、Try sample data、Upload a file

  • Add integrations:添加集成。
  • Try sample data:试用示例数据。
  • Upload a file:上传文件。

管理模块:Manage permissions、Monitor the stack、Back up and restore、Manage index lifecycles、Dev Tools、Stack Management

  • Manage permissions(管理权限):控制访问权限以及可以执行任务。
  • Monitor the stack(堆栈监控):跟踪部署的实时运行状况和性能。
  • Back up and restore(备份和恢复):将快照保存到备份存储库,以还原恢复索引和群集状态。
  • Manage index lifecycles(管理索引生命周期):定义生命周期策略,以便在索引老化时自动执行。
  • Dev Tools(开发工具)
  • Stack Management(堆栈管理)

(2)在Kibana的Home界面,单击左上角的三条横线,导航到左侧菜单,查看Kibana的功能菜单,如图1-22所示。详细功能如表1-4所示。

表1-4 Kibana功能清单

功能模块菜单功能描述
Analytics(分析)Discover交互式探索和搜索Elasticsearch中的原始数据
Dashboards通过可视化图表组合创建自定义数据监控面板
Maps基于地理位置数据创建交互式地图可视化
Machine Learning自动检测数据异常模式并预测趋势
Graph分析数据间的关联关系与网络结构
Visualize Library管理和复用已保存的可视化组件
Elasticsearch(弹性搜索)Overview监控Elasticsearch集群健康与性能状态
Playground安全测试Elasticsearch查询语法的实验环境
Elasticsearch管理索引、分片、节点等集群配置
Vector Search基于向量相似度的AI驱动语义搜索
Semantic Search理解自然语言意图的智能搜索
Observability(可观测性)Overview统一查看日志、指标、APM等观测数据
Alerts设置规则并接收异常状态通知
SLOs定义和追踪服务等级目标的达成情况
Cases跨团队协作处理运维事件
Logs集中采集、查看与分析日志数据
Infrastructure监控服务器、容器等基础设施指标
Applications追踪应用性能(APM)与代码级诊断
Synthetics模拟用户操作监控网站/应用可用性
User Experience采集并分析真实用户交互性能数据
Security(安全)Dashboards展示安全事件与威胁态势的可视化面板
Rules配置威胁检测自动化规则
Alerts实时接收安全事件告警
Attack discovery自动识别攻击链关键步骤
Findings查看云环境安全合规扫描结果
Cases调查与响应安全事件的协作空间
Timelines可视化关联分析安全事件时间线
Intelligence导入威胁情报并匹配内部数据
Explore交互式调查网络流量与端点行为
Manage配置身份认证、权限策略等安全设置

(3)在Kibana的Home界面,单击左上角的三条横线,导航到左侧菜单,下滑选择“Management”选项卡中“Dev Tools”选项,Kibana提供了4个开发工具,分别是Console、Search Profiler、Grok Debugger、Painless Lab。

Console Dev Tools的核心,提供一个交互式界面用于编写和执行针对Elasticsearch的RESTful API请求。可以把它看作Elasticsearch的“命令行”或“API测试客户端”,如图1-23所示。

Search Profiler: 用于深入分析Elasticsearch查询的性能瓶颈。执行提供的查询,并返回一个详细的、可视化报告,展示查询在集群中各个分片上执行的每个步骤所花费的时间,如图1-24所示。

Grok Debugger: 专门用于测试和调试Grok模式。Grok是一种强大的工具,用于将非结构化的日志文本解析成结构化的、可查询的字段(通常在Logstash或Elasticsearch Ingest Pipeline中使用),如图1-25所示。

Painless Lab: 提供一个沙盒环境,用于编写、测试和调试Painless脚本。Painless是Elasticsearch默认的安全、高性能脚本语言,用于在查询、聚合、更新文档、脚本字段、评分等场景执行自定义逻辑,如图1-26所示。

(4)在Kibana的Home界面,单击左上角的三条横线,导航到左侧菜单,下滑选择“Management”选项卡中“Integrations”选项。Integrations预置数百种数据源连接器(如AWS、MySQL、Docker),支持一键安装预构建的数据采集器,快速接入外部系统数据,如图1-27所示。

(5)导航到左侧菜单下滑选择“Management”选项卡中“Fleet”选项。Fleet集中管理所有 Agent(数据采集器)的配置、部署和更新,实现批量部署、策略下发、状态监控与版本升级。如图1-28所示。

(6)导航到左侧菜单下滑选择“Management”选项卡中“Osquery”选项。Osquery提供通过SQL语法实时查询终端设备(服务器/PC)的操作系统状态(进程、网络、文件等),如图1-29所示。

(7)导航到左侧菜单下滑选择“Management”选项卡中“Stack Monitoring”选项。Stack Monitoring能够监控Elastic Stack自身组件(Elasticsearch/Kibana/Logstash/Beats)的性能指标与健康状态,如图1-30所示。

(8)导航到左侧菜单下滑选择“Management”选项卡中“Stack Management”选项,Kibana提供了6个层面的堆栈管理,分别是Ingest、Data、Alerts and Insights、Security、Kibana、Stack。如图1-31所示。

  • Ingest:管理用于在数据索引前进行预处理的Ingest Pipelines。
  • Data:管理存储在Elasticsearch集群中的索引、索引模板和数据流。
  • Alerts and Insights:管理告警规则及其触发的案例。
  • Security:集中管理集群和Kibana的用户、角色、API密钥、角色映射等安全配置。
  • Kibana:管理Kibana自身的核心配置和内容。
  • Stack:管理整个Elastic Stack(Elasticsearch, Kibana等)的配置和监控。

Kibana堆栈管理详细功能如表1-5所示。

表1-5 Kibana堆栈管理功能清单

功能模块菜单功能描述
IngestIngest Pipelines定义在Elasticsearch中索引文档之前处理和转换数据的处理步骤序列
Logstash Pipelines查看和管理Logstash实例(如果已配置)中用于数据收集、转换和传输的管道
DataIndex Management管理Elasticsearch索引(创建、查看、删除、管理设置)和索引模板
Index Lifecycle Policies定义自动化管理索引生命周期的策略(热、温、冷、删除阶段)
Data Set Quality监控数据集的健康状况、性能和合规性
Snapshot and Restore创建、管理和恢复Elasticsearch集群数据与配置的快照(备份)
Rollup Jobs创建和管理任务,将历史、细粒度的数据汇总为存储效率更高的摘要数据
Transforms创建和管理任务,将现有索引中的数据聚合、转换并持续输出到新的专用索引中
Cross-Cluster Replication配置和管理索引从一个Elasticsearch集群(领导者)自动复制到另一个集群(跟随者)
Remote Clusters配置与其他Elasticsearch集群的连接,以便进行跨集群搜索或复制(CCR)
Migrate提供工具或向导,将数据或配置迁移到新的部署或版本
Alerts and InsightsAlerts查看、管理和监控由告警规则触发的活动告警实例
Rules创建和管理定义触发条件(基于查询、指标、机器学习等)和通知动作的告警规则
Cases集中跟踪和管理与告警或调查相关的协作信息和工作流程
Connectors配置与其他系统(如电子邮件、Slack、ServiceNow、Webhook等)的连接,用于告警通知或数据交互
Reporting管理由Kibana仪表板、可视化或搜索生成的PDF/PNG报表的生成、调度和下载
Machine Learning管理Elasticsearch的机器学习功能(作业、模型、结果)
Watcher管理Elasticsearch原生的告警和通知功能
Maintenance Windows定义计划维护时段,在此期间可以暂停告警通知或某些操作
SecurityUsers管理可以访问Elasticsearch集群和Kibana的用户账号
Roles定义权限集合,控制用户对集群数据、Kibana功能等的访问级别
API keys创建和管理用于程序化访问Elasticsearch API的密钥
Role Mappings将外部身份提供者(如LDAP、SAML、OIDC)的用户或组映射到Kibana角色
KibanaData Views定义用于在Kibana中探索和可视化数据的索引模式
Files管理用户上传到Kibana的文件(如图片、CSV等)
Saved Objects管理、导入、导出在Kibana中创建的所有内容(仪表板、可视化、搜索、地图、机器学习作业等)
AI Assistants配置和管理Kibana中用于增强分析、搜索和可观察性体验的AI助手
Tags创建和管理标签,用于分类和筛选Kibana中的Saved Objects
Spaces创建和管理隔离的环境(空间),用于组织Kibana对象、仪表板并为不同团队或项目分配访问权限
Advanced Settings查看和修改Kibana应用程序的底层配置选项
StackLicense Management查看当前Elastic Stack许可证信息、状态和进行许可证更新
Upgrade Assistant检查集群状态并提供指导,为升级到新版本的Elastic Stack做准备