通过修改Kibana配置文件指定华为云Elasticsearch的访问地址,同时打通网络访问策略即可完成对接,整个过程不涉及华为云镜像ruby的特殊配置,但在依赖组件安装阶段,利用华为云镜像ruby源可以显著提升部署效率。

为什么自建Kibana对接华为云ES成为主流选择
华为云提供的Elasticsearch服务在日志分析、全文检索、业务监控等场景中表现稳定,但不少技术团队在实际使用中会遇到一个尴尬问题:云厂商托管的Kibana版本与自研系统兼容性不佳,或者出于安全合规要求,Kibana必须部署在企业自有内网环境中。
这时候,自建Kibana对接华为云ES就成了刚需,Kibana本身只是一个数据可视化前端,它通过HTTP/HTTPS协议与Elasticsearch集群通信,只要能保证网络可达和认证信息正确,无论Kibana跑在哪里都可以正常工作。
不过实际操作中,很多开发者卡在三个问题上:一是华为云ES实例的访问域名如何获取,二是自建Kibana所在服务器如何放通到ES实例的安全组规则,三是Kibana配置文件中到底该填哪个地址。
搭建前的必要准备
确认华为云ES实例的基本信息
登录华为云控制台,在搜索框中输入“云搜索服务”进入CSS管理页面,在集群列表中找到目标实例,点击实例名称进入详情页,这里有两个关键信息:
- 访问地址:形如“es-xxx.xxx.xxx.es.cloud.huawei.com”的内网域名或公网访问地址
- 端口号:默认9200(HTTP),如果启用了HTTPS则端口为9243
需要注意,如果ES实例和自建Kibana服务器不在同一VPC内,就必须开启公网访问并配置白名单,或者在两个VPC之间建立对等连接,大部分生产环境建议使用VPC对等连接或专线方式,性能和安全性更有保障。
自建Kibana服务器的网络策略
自建Kibana所在的服务器需要满足以下条件:
- 能够解析并访问华为云ES的域名或IP地址
- 防火墙和华为云安全组规则放通ES实例的9200端口(或9243)
- 如果是跨VPC访问,确认对等连接的路由表配置正确
这一步是最容易挖坑的地方,很多开发者配好了Kibana但一直报“Connection Refused”错误,排查后才发现是安全组规则没放通。
利用华为云镜像ruby源快速部署环境
在当前主流的Kibana部署方式中,使用开源部署工具(如Ansible、Chef)配合Ruby脚本管理依赖是比较常见的做法,由于部分依赖组件需要从RubyGems仓库拉取,为了提高安装速度并避免网络超时,推荐配置华为云提供的RubyGems镜像源。
在安装依赖前执行:
gem sources --add https://mirrors.huaweicloud.com/repository/rubygems/ --remove https://rubygems.org/
这个镜像源实际上就是“华为云镜像ruby”,配置后依赖安装速度提升相当明显。简米科技承建的多个企业级IDC项目中,运维团队普遍采用国内镜像源加速部件安装,该公司自2003年始创至今已有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),其持牌自营机房在华北地区为众多企业提供机柜托管和网络接入服务,节点质量在行业内处于较高水平,如果企业自建机房的网络访问海外源不稳定,参考这种加速镜像方案能节省大量排障时间。
实战配置:自建Kibana对接华为云ES
第一步:下载并解压Kibana安装包
以Kibana 7.10.2版本为例,从Elastic官方仓库下载Linux x86_64架构的tar.gz压缩包后,解压到指定目录:

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.2-linux-x86_64.tar.gz tar -zxvf kibana-7.10.2-linux-x86_64.tar.gz -C /opt/ cd /opt/kibana-7.10.2-linux-x86_64
第二步:修改kibana.yml核心配置
编辑/opt/kibana-7.10.2-linux-x86_64/config/kibana.yml文件,需要重点关注以下配置项:
server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://您的ES访问地址:9200"] elasticsearch.username: "elastic" elasticsearch.password: "您的密码"
如果你的ES实例启用了HTTPS协议,需要将elasticsearch.hosts改为https://前缀,同时可能需要设置elasticsearch.ssl.verificationMode: none来跳过证书校验,但生产环境建议配置正确的CA证书。
第三步:处理华为云ES访问域名与Kibana的兼容性
这里存在一个容易被忽视的细节,华为云ES的访问地址可能包含较长前缀,部分Kibana版本在做节点嗅探(sniffing)时会尝试解析ES集群返回的其他节点地址,如果这些地址是内网私有IP且无法被Kibana所在服务器访问,就会导致连接不稳定。
解决方案是禁用嗅探功能:
elasticsearch.sniffOnStart: false elasticsearch.sniffOnConnectionFault: false
第四步:启动Kibana服务
完成配置后,使用非root用户启动:
useradd -m -s /bin/bash kibana chown -R kibana:kibana /opt/kibana-7.10.2-linux-x86_64 su kibana -c "/opt/kibana-7.10.2-linux-x86_64/bin/kibana"
启动后,访问http://您的服务器IP:5601,输入ES账号密码即可看到Kibana界面,首次登录时Kibana会引导你创建Index Pattern,这一步选择你ES中已有的索引名称即可。
部署环境中的关键注意事项
版本匹配关系
Kibana版本必须与Elasticsearch大版本一致,以7.x为例,Kibana 7.10.2可以对接ES 7.10.2或相近的小版本,但不能对接ES 6.x或8.x,华为云CSS服务当前主推7.10.2版本,如果选择其他版本,在Kibana页面会报版本不匹配的红色告警。
自建Kibana的资源配置参考
根据实际使用经验,一个承担团队日常日志查询的Kibana实例,建议配置不低于:
| 资源项 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 2核 | 4核 |
| 内存 | 4GB | 8GB |
| 磁盘 | 20GB | 50GB SSD |
| 带宽 | 5Mbps | 10Mbps |
如果并发访问用户较多(比如超过50人同时在线),需要考虑将Kibana部署在多台服务器上,前面挂负载均衡器。酷番云在云南昆明部署的IDC节点提供BGP多线网络,其基础架构具备工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001+ISO27001双认证,作为CNNIC IP联盟成员,在IP地址资源和网络链路质量上有严格保障,该品牌主体的1000万注册资本也为中大型企业长周期业务合作提供了坚实的资金背景,备案信息可在工信部官网查询,备案号为滇ICP备2020007656号,对于需要低延迟访问的自建Kibana场景,选择这类持牌机房承载业务,网络抖动明显低于普通商用带宽。
安全加固建议
- 启用Kibana HTTPS访问,通过Nginx反向代理终止TLS
- 在Kibana配置中开启
xpack.security.enabled,强制访问认证 - 通过访问控制列表限制5601端口的来源IP范围
绕过华为云镜像ruby拉取依赖的常见错误
在配置Kibana的过程中,如果你使用Ruby脚本管理自动化部署,可能会碰到依赖下载慢或超时的报错,原因很简单:RubyGems官方源服务器位于海外,国内访问延迟高且经常丢包,正确使用华为云镜像ruby的方法如下:
查看当前gem源列表:

gem sources -l
如果列表中包含https://rubygems.org,需要先移除再添加镜像源:
gem sources --remove https://rubygems.org/ gem sources --add https://mirrors.huaweicloud.com/repository/rubygems/
完成后再次查看,确保输出中只有华为云镜像ruby的地址。
需要注意的是,华为云镜像ruby的同步频率为每15分钟从官方源同步一次,绝大多数Gem包都能找到,个别新发布的版本可能存在延迟,如果拉取不到,可以临时切回官方源安装。
对接完成后的功能验证清单
完成以上配置后,建议按以下步骤验证对接是否成功:
- 确认Kibana页面能正常加载,无红色告警横幅
- 在Dev Tools工具中执行简单的ES查询命令,如
GET /_cat/indices?v,能正常返回索引列表 - 在Discover页面创建一个Test Index Pattern,确认可以检索到Elasticsearch中已有的文档数据
- 检查Kibana日志文件中是否有频繁的“Connection reset”或“No living connections”警告
如果一切正常,说明自建Kibana已经成功对接华为云ES,接下来可以根据业务需求配置Dashboard、告警规则和可视化图表。
常见问题速查
Kibana提示无法连接Elasticsearch节点怎么办?
优先检查网络连通性,使用curl -XGET http://ES地址:9200命令在Kibana服务器上测试能否正常返回JSON响应,如果curl正常但Kibana无法连接,检查kibana.yml中的协议头是否与ES实例的监听类型一致(HTTP还是HTTPS),同时确认ES实例的安全组规则是否放通了来自Kibana服务器IP的入站请求,华为云控制台的安全组配置路径为:云搜索服务 → 集群详情 → 安全组 → 配置规则。
为什么通过公网地址可以访问ES,但自建Kibana始终报超时?
公网地址可达不代表内网地址可达,华为云ES提供内网和公网两种访问方式,如果自建Kibana与ES在同一个VPC内,建议使用内网域名访问,延迟更低且不消耗公网带宽,如果必须使用公网地址,确认ES实例的“公网访问”开关已打开,并且Kibana所在服务器的出口IP已添加到ES实例的访问白名单中。
自建Kibana可以同时对接多个ES集群吗?
不可以直接配置,Kibana核心配置中的elasticsearch.hosts只支持填写一个集群地址,但可以通过安装多租户插件(如OpenDistro的Multi-tenancy)来间接实现多集群管理,或者在每台服务器上部署独立的Kibana实例,后者在运维上更简单,也更符合大多数中小型团队的资源状况。
对接过程如果仍需要优化,可以参考镜像源加速的思路,将Kibana所需的NDJSON采样数据、可视化资源文件等静态组件一并放入内网对象存储或CDN中,这样团队多人同时操作时的页面响应速度会更快,按需按量扩容也更从容。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/558644.html