ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Grafana 8.5 连接华为云 ES 7.10.2 问题排查记录

Grafana 8.5 连接华为云 ES 7.10.2 问题排查记录

Grafana 8.5 连接华为云 ES 7.10.2 问题排查记录

在日常的系统运维与优化过程中,常常会遇到各类技术难题,本次就 Grafana 8.5 版本与华为云 Elasticsearch(ES)7.10.2 之间的连接问题进行详细记录与分享。

一、问题初现

在配置 Grafana 的数据源连接华为云 ES 时,进行数据源测试操作,界面却反馈 “Elasticsearch Error:Unexpected error”。此错误提示表明 Grafana 在尝试与 ES 建立连接或进行数据交互时遭遇了异常状况,但具体原因尚不明确。

二、网络排查

初步怀疑问题出在网络连接方面。于是对 Grafana 与 ES 之间的网络进行了全面排查,涵盖了网络配置检查、端口连通性测试以及路由策略确认等多个环节。通过使用 pingtraceroute 等工具对网络路径进行跟踪,确保各节点之间不存在网络中断或延迟过高的问题;同时,检查防火墙规则,确认 Grafana 与 ES 之间通信所需的端口(如 ES 的 9200 端口)均已开放。然而,经过一系列详尽的排查,并未发现网络存在明显故障,因此排除网络问题导致连接异常的可能性。

三、版本怀疑与尝试

鉴于网络排查无果,开始怀疑 Grafana 版本与华为云 ES 7.10.2 的兼容性问题。为验证这一猜想,将 Grafana 升级至 12 版本进行测试。令人欣喜的是,升级后 Grafana 能够顺利连接华为云 ES,数据源测试通过,这似乎表明版本兼容性问题确实存在。

四、方案受阻

然而,由于业务需求依赖于 Grafana 8.5 版本的特定插件,升级 Grafana 版本的方案不得不被否决。因此,需要继续寻找在不升级 Grafana 版本的前提下解决连接问题的方法。

五、现象新发现

在持续排查过程中,注意到一个特殊现象:当通过 https://grafana.xxxxxxx/datasources/edit/1gD1tkGDk 测试数据源时,问题依旧存在;而使用 http://grafana.xxxxxxxx/datasources/edit/1gD1tkGDk 进行测试,数据源却能正常通过。这一现象表明,问题似乎与访问协议(HTTP 与 HTTPS)存在某种关联。

六、深入排查

为了进一步找出问题根源,联系华为云团队支持进行协同排查。通过抓包工具对 Grafana 与 ES 之间的通信数据进行分析,结果发现:当使用 HTTPS 协议时,ES 未能正常返回 JSON 格式的数据回包;而在 HTTP 协议下,ES 可以正常响应并返回 JSON 数据回包。这一发现为解决问题提供了关键线索。

七、问题定位

经过深入定位分析,发现当通过 https://xx 访问 8.5.27 版本的 Grafana 时,Grafana 会在请求头中的 Accept - Encoding 字段声明使用 zstd 压缩方式,这意味着 Grafana 期望 ES 在返回响应时通过 zstd 方法对响应体进行压缩。然而,当前所使用的华为云 ES 7.10.2 版本并不支持这种压缩方式。由于 ES 无法按照 Grafana 的期望进行响应,导致页面一直处于卡顿状态,从而引发数据源连接测试失败。基于此情况,给出的建议是升级 Grafana 版本或等待华为云 ES 产品进行迭代以支持 zstd 压缩方式。

八、临时解决方案确定

考虑到业务紧急性和现有条件限制,决定采用一种临时解决方案:在 Grafana 的弹性负载均衡器(ELB)443 端口监听转发规则中添加转发动作,写入请求头 Accept - Encoding:gzip,deflate。这样做的目的是通过修改请求头,使 Grafana 在通过 HTTPS 访问时,告知 ES 使用其支持的 gzipdeflate 压缩方式,从而解决因 zstd 压缩方式不支持而导致的连接问题。

通过本次问题排查,不仅解决了 Grafana 与华为云 ES 的连接难题,也积累了宝贵的技术经验,希望能为其他遇到类似问题的技术人员提供参考与借鉴。

以上就是关于 Grafana 8.5 连接华为云 ES 7.10.2 问题的完整排查记录。

返回列表