Observability:使用 Elastic APM 监控 Elastic Enterprise Search 性能

Posted Elastic 中国社区官方博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Observability:使用 Elastic APM 监控 Elastic Enterprise Search 性能相关的知识,希望对你有一定的参考价值。

 Elastic APM 是一种免费、开放且功能强大的可观察性工具,可为无数生产应用程序(例如吞吐量、错误率、延迟、资源使用情况、事务跟踪)提供应用程序性能情报。 你现在可以启用 Elastic APM 集成以深入了解您的 Elastic Enterprise Search 部署的性能行为!

本文提供了如何实现 Elastic 的 APM 与企业搜索产品之间的集成的分步说明,并展示了我们的企业搜索团队如何利用 Elastic APM 来捕获更多智能,从而在开发生命周期中提高企业搜索性能。

Enterprise Search 中 APM Ruby 代理收集的数据被传送到 Elastic APM 服务器并索引到 Elasticsearch 集群中。

设置集成

步骤 1:部署弹性 APM 服务器

Elastic Cloud

部署弹性 APM 服务器的最简单方法是在 Elastic Cloud 上。 默认情况下,APM 服务器包含在新的 Elastic Cloud 部署(APM & Fleet 部分)中:

如果你已经有一个 Elastic Cloud 部署并且之前禁用了 APM & Fleet 节点,你可以从 Cloud 控制台重新启用它,方法是从 APM & Fleet 部分单击 APM & Fleet 链接 > Edit deployment > Add Capacity。

你可以选择在运行 Enterprise Search 的同一个 Elastic Cloud 部署中部署 APM,但这不是强制性的。 如果需要,你可以设置新的 Elastic Cloud 部署来部署 APM 并与现有的 Enterprise Search 部署集成。

本地部署

如果你的企业搜索部署在本地,你可以在基础架构中安装新的 Elastic APM 服务器,或使用现有的 Elastic APM 服务器,或创建一个具有 APM 及 Fleet 启动的 Elastic Cloud 部署(请参阅上面步骤 1 中的 “Elastic Cloud” 部分)。

Enterprise Search 嵌入的 APM Ruby 代理与 APM 服务器兼容 >= 6.5 版。

如果你已经在使用 Elastic APM 解决方案来监控其他应用程序的性能并且有可用的 APM 服务器,请跳到步骤 2。

如果你要在基础架构中安装新的 APM 服务器,请安装最新的 APM 服务器(仅遵循第 1 步:在 self-managed tab 下的 Spin up the Elastic Stack)并将其连接到新的或现有的 Elasticsearch 集群。安装 Kibana 实例以连接到 Elasticsearch 集群,以便你可以在步骤 4 中可视化(在 “self-managed”  tab 下)生成的 APM 数据。

步骤 2:复制 APM 服务器端点和秘密令牌

Elastic Cloud

在你的 Elastic Cloud 部署中启用 APM& Fleet  集群后,从 Cloud 用户控制台复制 APM 终端节点和秘密令牌。你将在企业搜索配置的步骤 3 中使用这些值。

 

本地部署

如果你要将为本地 Enterprise Search 部署收集的 Enterprise Search APM 数据传送到 Elastic Cloud APM & Fleet 部署,请按照上面的 “Elastic Cloud” 说明复制端点和秘密令牌以供以后使用。

如果你在基础架构中使用新的或现有的 APM 服务器,请启动 APM 服务器并启动连接到你在步骤 1(“本地部署”部分)中配置的 Elasticsearch 集群的 Kibana 实例。 在 Kibana 中,单击 Observability > APM > Services。

向下滚动到页面底部,然后单击 Setup Instructions:

如果你在基础架构中使用现有 APM 服务器设置并定义了现有服务,只需单击服务页面右上角的 Add data(而不是上面的“Setup instructions”)

 

在结果页面上,单击 Ruby on Rails 选项卡:

保留 Default Standalone configuration 策略并复制 secret_token 和 server_url 的值。 你将在企业搜索配置的步骤 3 中使用这些值。

步骤 3:在 Enterprise Search 中启用 APM 集成

Elastic Cloud

使用 Cloud 用户控制台编辑你的企业搜索部署。 单击企业搜索下的编辑用户设置:

 在 User settings 编辑器中添加以下设置:

apm.enabled: true
apm.server_url: "<apm_server_url>"
apm.secret_token: "<apm_secret_token>"

将 <apm_server_url> 替换为 APM Server endpoint,将 <apm_secret_token> 替换为你从步骤 2(“Elastic Cloud” 部分)中复制的秘密令牌。 向下滚动并保存更改。 这将触发你的企业搜索实例滚动重启。 如果你已部署多个 Enterprise Search 实例以实现高可用性,则不会出现预期的停机时间。

本地部署

如果你要将 Enterprise Search APM 数据传送到 Elastic Cloud APM & Fleet 部署,请按照上面的 “Elastic Cloud” 说明启用 APM 集成。

如果你使用的是本地 APM 服务器,请将以下设置添加到企业搜索实例的 enterprise-search.yml 文件中:

apm.enabled: true
apm.server_url: "<apm_server_url>"
apm.secret_token: "<apm_secret_token>"

将 <apm_server_url> 替换为 server_url,将 <apm_secret_token> 替换为你在第 2 步(“本地部署”部分)中从 Ruby on Rails 页面复制的 secret_token。 执行企业搜索实例的滚动重启。 如果你在负载平衡器或代理后面部署了多个 Enterprise Search 实例以实现高可用性,则不会出现预期的停机时间。

步骤 4:验证企业搜索 APM 数据是否成功建立索引

在步骤 3 中在 Enterprise Search 中启用 APM 集成后,验证是否正在为 Enterprise Search 收集 APM 数据。 在 Kibana 中,单击 Observability > APM > Services:

 单击 Enterprise Search > Transactions,你将看到一个交易列表:

 

确保你正在使用连接到你的 APM 服务器索引到的 Elasticsearch 集群的 Kibana 实例进行测试。

如果你能从上面的视图中看到交易数据,你就大功告成了!

魔法发生了!

Elastic APM 使企业搜索开发人员可以非常轻松地隔离运行缓慢的地方。

例如,要对 Enterprise Search 的 App Search 中的搜索请求延迟进行故障排除,请单击 Observability > APM > Services > Enterprise Search > Transactions 下的 LocoMoco::Api::V1::QueryController#search 事务名称:

Trace 示例显示 LocoMoco::Api::V1::QueryController#search 持续时间(8034 毫秒)的大部分时间都用于执行 Elasticsearch 查询。 点击 “Search search 8,034ms” Elasticsearch 条目提供了事务跨度和企业搜索发送的底层 Elasticsearch 请求的详细信息:

有关在 Kibana 中查看 APM 事务的更多信息,请参阅文档

借助 Elastic APM 使企业搜索开发人员能够快速查明速度缓慢的地方,我们现在可以专注于高级 Elasticsearch 性能故障排除,以主动加快应用搜索请求。

如你所见,Elastic APM 为包括我们自己的 Elastic Enterprise Search 产品在内的各种应用程序提供了惊人的应用程序性能监控功能。 最重要的是,它是免费和开放的——你只需为使用的资源付费

以上是关于Observability:使用 Elastic APM 监控 Elastic Enterprise Search 性能的主要内容,如果未能解决你的问题,请参考以下文章

Observability:使用 Elastic Agent 提取应用程序跟踪 - Elastic Stack 8.0

Observability:在容器里运行 Elastic Agent - Elastic Stack 8.x

Observability:使用 Elastic APM 监控 Elastic Enterprise Search 性能

Observability:使用 Elastic APM 监控 Elastic Enterprise Search 性能

Observability:使用 Elastic Agent 来进行 Uptime 监控

Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0