腾讯云 Elasticsearch Service 目前还未提供托管的 APM Server,因此我们需要手动安装 APM Server 才能体验 Elastic APM 的功能,或将 OpenTelemetry 的数据导出到腾讯云 Elasticsearch Service。本文将详细介绍如何通过 Fleet 服务器在腾讯云 ES 上安装和配置 APM Server,解决安装过程中可能遇到的网络连接问题,并探讨使用 OpenTelemetry 与 APM 的价值。
安装 APM Server 的方法
安装 APM Server 时,您可以选择以下两种方法:
- Self Managed(自行管理):手动安装和管理 APM Server。
- Fleet Managed(通过 Fleet 服务器管理):通过 Elastic Agent 和 Fleet 服务器来管理和部署 APM Server。
本文主要介绍使用 Fleet 服务器的方法,因为这种方式更易于管理和扩展。
准备工作:解决网络连接问题
在使用 Fleet 服务器安装 APM Server 时,需要连接到 Elastic Package Registry(EPR)。由于 Kibana 和 ES 节点通常在腾讯云的 VPC 中,无法直接访问 EPR,因此需要通过腾讯云的售后支持,提交工单来解决网络连接问题。
开启外网访问
在腾讯云的 8.11 网络架构之后,您可以通过调整控制台配置,开启外网访问端口,让 Kibana 连接到 EPR。然而,实践中发现,由于网络带宽和出海流量的限制,直接从 EPR 下载工件效率较低,这会导致 Fleet 响应缓慢。因此,我们建议通过构建本地仓库来优化 Fleet 的使用体验。
通过构建本地仓库优化 Fleet 使用体验
为了提高安装和使用 Fleet 的效率,可以参考 Elastic 官方的无网络环境安装指南,通过构建本地的 Elastic Package Registry 来解决这一问题。
步骤 1:从 Docker 仓库中拉取镜像
首先,从公共 Docker 仓库中拉取 Elastic Package Registry 镜像:
代码语言:bash复制docker pull docker.elastic.co/package-registry/distribution:8.13.3
步骤 2:保存 Docker 镜像
将拉取的 Docker 镜像保存到本地:
代码语言:bash复制docker save -o package-registry-8.13.3.tar docker.elastic.co/package-registry/distribution:8.13.3
步骤 3:传输并加载镜像
将镜像文件传输到需要部署的无网络环境中,并加载镜像:
代码语言:bash复制docker load -i package-registry-8.13.3.tar
步骤 4:运行 Elastic Package Registry
使用以下命令启动 Elastic Package Registry:
代码语言:bash复制docker run -it -p 8080:8080 docker.elastic.co/package-registry/distribution:8.13.3
步骤 5:配置 Fleet 服务器
接下来,您可以提交工单,要求腾讯云售后团队在 kibana.yml
中增加以下配置,以便使用您本地的仓库:
xpack.fleet.registryUrl: "http://172.27.16.2:8080"
当我们配置好仓库的时候,你将可以查看和安装所有373个可用集成,这其中也包括我们需要的APM集成。
配置 APM 与 Fleet
接下来,您可以按照以下步骤来安装和配置 APM Server:
- 创建 Fleet Server:在 Kibana 中,按照提示创建一个新的 Fleet Server,该服务器将通过 Elastic Agent 安装在您选择的 CVM(管理主机)上。
- 增加 APM Integration:在默认的 Fleet Server 策略中,增加一个 APM 的 Integration。
- 配置 APM 服务器:在 APM 的配置页面中,设置服务器的主机地址为
0.0.0.0:8200
,URL 填写为 Elastic Agent 所安装主机的公网地址,例如:http://162.14.77.46:8200/
。 - 修改 Fleet 设置:将 Fleet 设置中的“指定代理将发送数据的位置”修改为腾讯云ES的公网地址,以便数据能够正确传输。
OpenTelemetry 与 APM 的价值
Elastic APM 支持与 OpenTelemetry 集成,使得您可以重用现有的 OpenTelemetry 仪器,轻松地将观测数据发送到 Elastic Stack 中。通过 OpenTelemetry,您可以利用已有的 API 和 SDK,实现与 Elastic APM 的无缝集成。Elastic 原生支持 OpenTelemetry 协议(OTLP),这意味着从 OpenTelemetry 代理收集的追踪数据和指标可以直接发送到 Elastic Stack。
这种集成不仅降低了对单一供应商的依赖,还让您能够使用 OpenTelemetry 捕获的丰富数据进行更深入的分析和观察,从而提升系统的性能和稳定性。
总结
通过本文指南,您将能够在腾讯云 Elasticsearch Service 上成功安装和配置 APM Server,并充分利用 OpenTelemetry 和 Elastic APM 的强大功能来提升应用的可观测性和性能分析能力。