Docker 安装 ELK 8.10.4(Elasticsearch + Kibana + Logstash) Docker 安装 ELK 8.10.4Elasticsearch Kibana Logstash8.x 版本与 7.x 最大的变化节点类型升级为节点角色安全认证默认开启。本文从零开始手把手完成单节点 ELK 的 Docker 部署重点解决证书配置这个最大拦路虎。目录一、8.x 核心变化节点角色二、环境准备三、安装 Elasticsearch四、证书与安全配置重点五、安装 Kibana六、安装 Logstash七、常见问题与解决方案八、总结一、8.x 核心变化节点角色如果你只是单节点部署可以跳过本节直接看第二部分。本节面向后续需要扩集群的读者。7.x 之前需要配置node.master、node.data等布尔值8.x 统一为node.roles数组。不指定角色时默认拥有全部角色cdfhilmrstw即单节点全角色模式。角色速查表角色缩写英文中文配置示例mmaster-eligible候选主节点node.roles: [master]ddata数据节点通用node.roles: [data]scontent内容数据节点node.roles: [data_content]hhot热数据节点node.roles: [data_hot]wwarm温数据节点node.roles: [data_warm]ccold冷数据节点node.roles: [data_cold]ffrozen冷冻数据节点node.roles: [data_frozen]iingest数据预处理节点node.roles: [ingest]lml机器学习节点node.roles: [ml]rremote_cluster_client远程集群节点node.roles: [remote_cluster_client]ttransform转换节点node.roles: [transform]/coordinating only仅协调节点node.roles: []关键注意点热/温/冷/冷冻节点必须搭配内容数据节点data_content一起配置否则数据无法落库——前者只是标识性角色实际存储仍靠内容数据节点。集群节点数 6 时建议手动划分角色避免单节点承担过多职责。典型多节点配置示例# 主节点node.roles:[master]# 热数据节点node.roles:[data_hot,data_content]# 仅协调节点智能负载均衡node.roles:[]主节点数据节点内容数据节点热数据节点温数据节点冷数据节点冷冻数据节点ingest节点执行由预处理管道组成的预处理任务node.roles:[ ingest ]仅协调节点类似于智能负载均衡负载路由分发请求、聚拢搜索和聚合结果node.roles:[ ]远程节点跨集群检索或跨集群复制node.roles: [ remote_cluster_client ]机器学习节点负责机器学习收费node.roles: [ ml, remote_cluster_client ]转换节点对数据进行格式、类型转换节点node.roles: [ transform, remote_cluster_client ]二、环境准备在开始之前确保完成以下三项系统配置否则 ES 启动会报错。1. 创建 Docker 专用网络dockernetwork create elastic2. 调大文件打开数vim/etc/profile# 在文件末尾添加ulimit-n65535# 使配置生效source/etc/profile3. 调大最大映射数量sysctl-wvm.max_map_count262144# 如需永久生效写入 sysctl.confechovm.max_map_count262144/etc/sysctl.confsysctl-p三、安装 Elasticsearch步骤 1首次启动并导出默认配置为什么不能直接挂载 config 目录因为 ES 8.x 首次启动会自动生成证书和密钥直接挂载空目录会导致这些文件缺失启动失败。所以要先运行一次把配置拷出来。# 首次启动只挂载 data 目录dockerrun--namees--netelastic\-v/mydata/elasticsearch/data:/usr/share/elasticsearch/data\-p9200:9200-d\-eES_JAVA_OPTS-Xms1g -Xmx1g\elasticsearch:8.10.4# 将容器内的配置拷到宿主机dockercpes:/usr/share/elasticsearch/config /mydata/elasticsearch/config# 停掉并移除临时容器dockerstop esdockerrmes步骤 2正式启动dockerrun--namees--netelastic\-v/mydata/elasticsearch/config:/usr/share/elasticsearch/config\-v/mydata/elasticsearch/data:/usr/share/elasticsearch/data\-p9200:9200-d\-eES_JAVA_OPTS-Xms1g -Xmx1g\elasticsearch:8.10.4步骤 3设置密码并生成 Kibana Token# 为 elastic 用户设置密码dockerexec-ites /usr/share/elasticsearch/bin/elasticsearch-reset-password-uelastic# 生成 Kibana 连接令牌后面装 Kibana 时用dockerexec-ites /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token-skibana# 官方建议将密码存入环境变量方便后续使用exportELASTIC_PASSWORD你设置的密码步骤 4验证启动# 注意8.x 默认开启 HTTPS需要带上 --cacert 参数curl--cacert/mydata/elasticsearch/config/certs/http_ca.crt\-uelastic:$ELASTIC_PASSWORD\https://localhost:9200看到返回集群信息即启动成功四、证书与安全配置重点这是 8.x 最大的变化也是最容易卡住的地方。如果你只做单节点开发环境可以跳过本节。但如果要配置集群或生产环境必须完成以下步骤。8.x 默认开启安全认证包含两层 SSLTransport SSL节点间通信加密集群内部HTTP SSL客户端连接加密Kibana、Logstash 等连接 ES步骤 1生成 CA 证书# 进入容器dockerexec-itesbash# 生成认证中心CA./bin/elasticsearch-certutil ca# 生成节点证书./bin/elasticsearch-certutil cert--caelastic-stack-ca.p12执行完后会在/usr/share/elasticsearch/下生成两个文件elastic-stack-ca.p12CA 证书elastic-certificates.p12节点证书步骤 2配置 Transport SSL节点间通信将生成的.p12文件移动到 config 目录# 在容器内执行cpelastic-stack-ca.p12 config/cpelastic-certificates.p12 config/在elasticsearch.yml中添加xpack.security.transport.ssl:enabled:trueverification_mode:certificateclient_authentication:requiredkeystore.path:elastic-certificates.p12truststore.path:elastic-certificates.p12如果创建证书时设置了密码需要存入 ES 密钥库./bin/elasticsearch-keystoreaddxpack.security.transport.ssl.keystore.secure_password ./bin/elasticsearch-keystoreaddxpack.security.transport.ssl.truststore.secure_password步骤 3配置 HTTP SSL客户端连接# 生成 HTTP 证书交互式命令注意填写正确的域名/IP./bin/elasticsearch-certutil http执行后会生成一个 zip 文件解压后包含两个文件夹elasticsearch-ssl-http.zip ├── elasticsearch/ ← ES 用的 HTTP 证书 │ ├── http.p12 │ └── sample-elasticsearch.yml └── kibana/ ← Kibana 用的 CA 证书 ├── elasticsearch-ca.pem └── sample-kibana.ymlES 端操作# 将 http.p12 复制到 config/certs/ 目录cpelasticsearch/http.p12 config/certs/在elasticsearch.yml中添加xpack.security.http.ssl:enabled:truekeystore.path:certs/http.p12truststore.path:certs/http.p12如果设置了密码同样存入密钥库./bin/elasticsearch-keystoreaddxpack.security.http.ssl.keystore.secure_password ./bin/elasticsearch-keystoreaddxpack.security.http.ssl.truststore.secure_passwordKibana 端操作后面装 Kibana 时会用到# 将 kibana 目录下的 elasticsearch-ca.pem 复制到 Kibana 的 config 目录# 等装好 Kibana 后再操作步骤 4重启并验证dockerrestart es# 查看日志确认无报错dockerlogs-fes完整 elasticsearch.yml 参考cluster.name:docker-clusternetwork.host:0.0.0.0node.roles:[master,data]node.name:es-node-1cluster.initial_master_nodes:[es-node-1]# ------- 安全配置 -------xpack.security.enabled:truexpack.security.enrollment.enabled:true# HTTP SSL客户端连接xpack.security.http.ssl:enabled:truekeystore.path:certs/http.p12truststore.path:certs/http.p12# Transport SSL节点间通信xpack.security.transport.ssl:enabled:trueverification_mode:certificateclient.authentication:requiredkeystore.path:elastic-certificates.p12truststore.path:elastic-certificates.p12重启后重新设置密码和生成 Kibana Tokendockerexec-ites /usr/share/elasticsearch/bin/elasticsearch-reset-password-uelasticdockerexec-ites /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token-skibana五、安装 Kibana步骤 1启动 Kibana 容器dockerrun-d--namekibana\-p5601:5601\-v/mydata/kibana/config:/usr/share/kibana/config\--netelastic\kibana:8.10.4步骤 2配置 SSL 和连接先将前面生成的elasticsearch-ca.pem复制到 Kibana 的 config 目录cp/path/to/kibana/elasticsearch-ca.pem /mydata/kibana/config/修改kibana.ymlserver.host:0.0.0.0server.shutdownTimeout:5s# ES 连接地址使用容器内网络地址elasticsearch.hosts:[https://es:9200]# SSL 证书elasticsearch.ssl.certificateAuthorities:[config/elasticsearch-ca.pem]# 用户认证需要 kibana_system 权限的账户elasticsearch.username:kibana_systemelasticsearch.password:你的密码monitoring.ui.container.elasticsearch.enabled:true创建 Kibana 专用用户建议在 ES 中创建具有kibana_system角色的专用用户而不是直接使用 elastic 超级账户。# 在 ES 容器中创建用户dockerexec-ites /usr/share/elasticsearch/bin/elasticsearch-usersuseraddkibana_master-p你的密码-rkibana_system-rkibana_admin步骤 3重启并访问dockerrestart kibana浏览器访问http://你的IP:5601输入用户名密码即可登录六、安装 Logstash步骤 1准备配置文件logstash.yml监控配置http.host:0.0.0.0http.port:9600-9700# ES 监控连接xpack.monitoring.enabled:truexpack.monitoring.elasticsearch.hosts:[https://es:9200]xpack.monitoring.elasticsearch.username:logstash_systemxpack.monitoring.elasticsearch.password:你的密码# SSL 证书xpack.monitoring.elasticsearch.ssl.certificate_authority:config/elasticsearch-ca.pempipeline 配置示例pipeline/logstash.confinput { file { path /usr/share/logstash/config/test.log start_position beginning } } output { elasticsearch { hosts [https://es:9200] index app-log-%{YYYY.MM.dd} user logstash_system password 你的密码 ssl true ssl_certificate_authorities /usr/share/logstash/config/elasticsearch-ca.pem } }步骤 2启动容器dockerrun--networkelastic--namelogstash-d\-v/mydata/logstash/config:/usr/share/logstash/config\-v/mydata/logstash/pipeline:/usr/share/logstash/pipeline\-p9600:9600\logstash:8.10.4步骤 3验证在 Kibana 的 Dev Tools 中查询索引确认数据是否写入GET _cat/indices?v七、常见问题与解决方案Q1启动报错max virtual memory areas vm.max_map_count [65530] is too low# 临时解决sysctl-wvm.max_map_count262144# 永久解决echovm.max_map_count262144/etc/sysctl.confsysctl-pQ2直接挂载 config 目录启动失败8.x 首次启动会自动生成证书必须先用docker cp导出默认配置再挂载启动。详见第三章步骤 1。Q3Kibana 连接 ES 报 SSL 错误确保elasticsearch-ca.pem已复制到 Kibana config 目录kibana.yml中elasticsearch.hosts使用https://不是http://elasticsearch.ssl.certificateAuthorities路径正确Q4elasticsearch-certutil http生成的证书节点连不上执行elasticsearch-certutil http时务必正确填写节点的域名或 IP否则其他节点无法验证证书。Q5配置了keystore.password启动报错ES 不允许在 yml 中明文配置密码必须使用密钥库./bin/elasticsearch-keystoreaddxpack.security.transport.ssl.keystore.secure_passwordQ6添加新节点到集群# 在已有节点生成加入令牌默认 30 分钟有效dockerexec-ites /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token-snode# 新节点使用令牌加入dockerrun-eENROLLMENT_TOKEN你的令牌\--namees02--netelastic\-m1GB\docker.elastic.co/elasticsearch/elasticsearch:8.10.4八、总结组件默认端口关键配置Elasticsearch9200node.roles、SSL 证书、JVM 内存Kibana5601elasticsearch.hosts、CA 证书、用户权限Logstash9600pipeline 配置、ES 连接 SSL8.x 与 7.x 的三大区别安全认证默认开启HTTPS 用户密码节点类型 → 节色角色node.roles证书配置更严格Transport HTTP 双层 SSL部署顺序建议ES → Kibana → Logstash每一步验证成功再进行下一步。如果你在部署过程中遇到了本文没覆盖的问题欢迎在评论区留言如果这篇文章对你有帮助点个赞 就是对我最大的鼓励

相关新闻

最新新闻

如何用Bliss Shader打造电影级Minecraft光影体验

如何用Bliss Shader打造电影级Minecraft光影体验

如何用Bliss Shader打造电影级Minecraft光影体验 【免费下载链接】Bliss-Shader A minecraft shader which is an edit of chocapic v9 项目地址: https://gitcode.com/gh_mirrors/bl/Bliss-Shader 还在为Minecraft中单调的方块世界感到审美疲劳吗?Bliss Sha…

2026/7/16 20:02:14
CMAQ空气质量模型终极指南:从多尺度模拟到污染源追踪的完整解析

CMAQ空气质量模型终极指南:从多尺度模拟到污染源追踪的完整解析

CMAQ空气质量模型终极指南:从多尺度模拟到污染源追踪的完整解析 【免费下载链接】CMAQ Code for U.S. EPA’s Community Multiscale Air Quality Model (CMAQ) for estimating ozone, particulates, toxics, and deposition of acids and nutrients at neighborhood…

2026/7/16 20:02:14
突破性移动物理实验室:用手机传感器重新定义科学探索体验

突破性移动物理实验室:用手机传感器重新定义科学探索体验

突破性移动物理实验室:用手机传感器重新定义科学探索体验 【免费下载链接】phyphox-android Physical Phone Experiments 项目地址: https://gitcode.com/gh_mirrors/ph/phyphox-android 想象一下,将整个物理实验室装进口袋是什么体验&#xff1f…

2026/7/16 20:02:14
在Mac上制作Windows启动盘的终极指南:告别复杂命令,拥抱图形化操作

在Mac上制作Windows启动盘的终极指南:告别复杂命令,拥抱图形化操作

在Mac上制作Windows启动盘的终极指南:告别复杂命令,拥抱图形化操作 【免费下载链接】windiskwriter 🖥 Windows Bootable USB creator for macOS. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. &#x1f4…

2026/7/16 20:02:14
Angular-pipes版本迁移指南:从旧版本升级到v10.0.0的完整步骤

Angular-pipes版本迁移指南:从旧版本升级到v10.0.0的完整步骤

Angular-pipes版本迁移指南:从旧版本升级到v10.0.0的完整步骤 【免费下载链接】angular-pipes Useful pipes for Angular 项目地址: https://gitcode.com/gh_mirrors/an/angular-pipes Angular-pipes是一个为Angular应用提供实用管道的开源库,本文…

2026/7/16 20:02:14
800+免费API资源宝库:开发者必备的一站式接口大全

800+免费API资源宝库:开发者必备的一站式接口大全

800免费API资源宝库:开发者必备的一站式接口大全 【免费下载链接】public-api-lists A curated list of free public APIs — searchable, community-maintained, with a free JSON API. 项目地址: https://gitcode.com/GitHub_Trending/pu/public-api-lists …

2026/7/16 19:57:13

月新闻