Docker 下安装 ElasticSearch 和 Kibana (单节点)
Docker 安装 ES
创建 docker 网络
需要 docker 中的 es 和 kibana 进行网络通信,使用 docker 网络进行容器间通信
shell
# 创建名为 es-network 的桥接网络
docker network create es-network
# 查询 docker 网络
docker network ls
输出如下:
NETWORK ID NAME DRIVER SCOPE
b569d3366b85 bridge bridge local
8ab6a69d63df es-network bridge local
7650772bc095 host host local
44734947ec78 none null local
下载 ES 镜像
shell
# 指定 es 版本下载
docker pull elasticsearch:7.17.9
运行容器
若需要挂载容器卷,须提前创建文件夹
shell
# 完整版命令
docker run -d --name elasticsearch -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 -e "ES_JAVA_OPTS=-Xms1G -Xmx1G" -v D:\dev\docker\es\data:/usr/share/elasticsearch/data -v D:\dev\docker\es\logs:/usr/share/elasticsearch/logs -v D:\dev\docker\es\plugins:/usr/share/elasticsearch/plugins --network es-network elasticsearch:7.17.9
# 简化版命令
docker run -d --name elasticsearch -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 --network es-network elasticsearch:7.17.9
# 命令解释
-e "discovery.type=single-node" :单节点运行
-p 9200:9200 -p 9300:9300 :指定端口号映射;9200是HTTP API端口、9300是集群间节点通信端口
-e "ES_JAVA_OPTS=-Xms1G -Xmx1G" :指定初始堆内存和最大堆内存,避免因内存不足而导致性能问题或崩溃。通常议将这两个值设置为相同,以优化性能。
-v /xxx/xxx/xxx :挂载卷,用于将docker容器内的文件与宿主机进行同步
--network es-network :将es容器加入网络,用于与kibana通信
验证安装
浏览器输入 localhost:9200
,有如下输出说明安装成功
shell
{
"name" : "e41442030a3f",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "bq17ajCvSdGBIPr38JrPNQ",
"version" : {
"number" : "7.17.9",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "ef48222227ee6b9e70e502f0f0daa52435ee634d",
"build_date" : "2023-01-31T05:34:43.305517834Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
设置用户密码
- 开启 xpack.security
修改文件: /usr/share/elasticsearch/config/elasticsearch.yml
,末尾追加下述配置 xpack.security.enabled: true
文件修改方式:
使用 docker cp 命令完成容器和宿主机的文件传输,进行文件修改,
- 容器 -> 宿主机:docker cp elasticsearch:/usr/share/elasticsearch/config.elasticsearch.yml D:/xxx/xxx
- 宿主机 -> 容器:docker cp D:/xxx/xxx elasticsearch:/usr/share/elasticsearch/config.elasticsearch.yml
参数解释:docker cp path1 path2
-- path1 文件复制源路径
-- path2 文件复制目标路径
若路径为容器内的路径,则需写为: 容器名称:路径
如:elasticsearch:/usr/share/elasticsearch/config.elasticsearch.yml
直接使用 docker 桌面版进行修改
-
设置密码
- 手动
SHELL# 进入目录 cd /usr/share/elasticsearch/bin # 手动设置用户名和密码,手动输入 elasticsearch-setup-passwords interactive
- 自动
shell# 进入目录 cd /usr/share/elasticsearch/bin # 自动生成,密码要保存好 elasticsearch-setup-passwords auto
-
重启镜像
shell
docker restart elasticsearch
- 验证
浏览器输入 localhost:9200
,弹出输入用户名和密码弹窗,登录并查看输出;用户名为:elastic。
Docker 安装 Kibana
下载 Kibana 镜像
shell
# 指定版本下载 kibana
# 要和上面的 es 的版本相同
docker pull kibana:7.17.9
运行容器
shell
docker run -d --name kibana1 -p 5601:5601 --network es-network -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" kibana:7.17.9
# 参数解释
-p 5601:5601 :端口映射
--network es-network : 加入docker网络,用于与elasticsearch通信
-e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" :指定es地址,可以用 `容器名称` 代替
更改配置
修改 /usr/share/kibana/config/kibana.yml
shell
# 添加以下配置
i18n.locale: "zh-CN" # 设置kibana为中文
csp.strict: false # 内容安全策略,调试模型设置为false'
# 以下为 kibana 连接es的用户名和密码,若es没开启认证,以下配置可以不加
elasticsearch.username: "kibana_system"
elasticsearch.password: "admin123"
重启 kibana 容器,进入 localhost:5601
,进行登录,若es开启了认证,则需输入账号密码;
Kibana常用功能
菜单栏说明
只介绍常用、核心功能
-
Analytics
: 分析模块,用于 ES 查询分析Discover
: 用于 ES 查询的用户界面Dashboard
、Canvas
、Maps
:该模块主要用于可视化展示,可以根据自身需求设置展示数据、展示方式等。
-
Management
:系统设置-
开发工具
:编写 DSL 语句,与 ES 交互的工具; -
Stack Management
: 系统设置模块索引管理
: 对所连接 ES 的索引进行管理,包括:索引设置、索引删除、索引映射修改、索引模板等。安全
:对系统的权限进行控制,显示左侧菜单栏的显示等。索引模式
:管理索引模式,只有能被索引模式匹配的数据,才会在Analytics
中展示,索引模式支持使用 * 进行通用符匹配
shell如: 1. log-test01、 log-test02、 log-test03 索引会被 log*、log-*、log-test* 索引模式匹配 2. system_info 索引会被 system_info 索引模式匹配(具体指定,不使用通配符)
-
导入示例数据
- 进入
http://localhost:5601/app/integrations/browse
数据集成配置页面,点击集成样例数据
,选择任一样例数据; - 点击菜单栏中
Analytics
,查看Discover
Dashboard
Canvas
Maps
等。