如何使用 Elastic APM 監控 Elastic Enterprise Search 性能
Elastic APM 是一種免費、開源且功能強大的可觀察性工具,可為無數的生產應用程式(例如 throughput, error rates, latency, resource usage, transaction traces)賦予智能。立刻啟用 Elastic APM 整合,以深入了解 Elastic Enterprise Search 部署的性能吧!
本文提供了啟用 Elastic APM 和 Enterprise Search 產品之間的整合步驟說明,並展示 Enterprise Search 團隊如何利用 Elastic APM 在開發生命週期中獲得更多智能以提高 Enterprise Search 性能。
Enterprise Search 中的 APM Ruby agent 收集的資料被傳送到 Elastic APM 伺服器並索引到 Elasticsearch 叢集中。
設定整合
步驟 1:部署 Elastic APM 伺服器
Elastic Cloud
部署 Elastic APM 伺服器的最簡單方法是在 Elastic Cloud 上。 APM 伺服器預設包含在新的 Elastic Cloud 部署(APM 和 Fleet 部分)中:
如果您已經部署 Elastic Cloud ,並且之前禁用了 APM 和 Fleet 節點,您可以透過在 APM 和 Fleet 部分點擊 APM & Fleet link > Edit deployment > Add Capacity 從雲端控制台重新啟用它。
您可以選擇在運行 Enterprise Search 的同一 Elastic Cloud 中部署 APM,但這不是強制性的。如果需要,您可以設定新的 Elastic Cloud 來部署 APM 並與現有的 Enterprise Search 整合。
地端
如果您的 Enterprise Search 部署在地端,您可以在基礎架構中安裝新的 Elastic APM 伺服器,使用現有的 Elastic APM 伺服器,或者使用 APM 建立 Elastic Cloud 部署(請參閱上面步驟 1 中的 “Elastic Cloud” 部分)並啟用 APM & Fleet 。
Enterprise Search 內嵌的 APM Ruby agent 與 APM 伺服器 6.5 以上的版本兼容。
如果您已經在使用 Elastic APM 解決方案來監控其他應用程式的性能,並且有可用的 APM 伺服器,請跳到步驟 2。
如果您要在基礎架構中安裝新的 APM 伺服器,請安裝最新的 APM 伺服器(僅按照步驟 1:在自我管理選項卡中啟動 Elastic Stack)並將其連接到新的或現有的 Elasticsearch 叢集。安裝 Kibana 實例以連接到 Elasticsearch 叢集,以便您可以在步驟 4 中視覺化( “自我管理” 選項卡)生成的 APM 資料。
步驟 2:複製 APM 伺服器端點和機密令牌
Elastic Cloud
在您的 Elastic Cloud 部署中啟用 APM & Fleet 後,從雲端用戶控制台複製 APM 端點和機密令牌。您將在 Enterprise Search 配置的步驟 3 中使用這些值。
地端
如果您將為地端 Enterprise Search 部署收集的 Enterprise Search APM 資料發送到 Elastic Cloud APM & Fleet 部署,請按照上面的 “Elastic Cloud” 說明複製端點和機密令牌以供後續使用。
如果您在基礎架構中使用新的或現有的 APM 伺服器,請啟動 APM 伺服器並啟動連接到您在步驟 1( “地端” 部分)中配置的 Elasticsearch 叢集的 Kibana 實例。在 Kibana 中,點擊 Observability > APM > Services。
向下滾動到頁面底部,然後點擊設定說明:
如果您在基礎架構中使用現有的 APM 伺服器設定並定義了現有服務,只需點擊服務頁面右上角的 Add data(而不是上面的 “設定說明” )
在結果頁面上,點擊 Ruby on Rails 選項卡:
Ruby on Rails 頁面提供了設定步驟列表。跳過步驟 1,因為您不必安裝 APM agent,因為它已嵌入 Enterprise Search 中。
保留 Default Standalone configuration 策略並複製 secret_token 和 server_url 的值。您將在 Enterprise Search configuration 的步驟 3 中使用這些值。
步驟 3: 在 Enterprise Search 中啟用 APM 整合
Elastic Cloud
使用雲端用戶控制台 Edit 您的 Enterprise Search 部署。點擊 Enterprise Search 下的 Edit user settings:
在 User settings 編輯器中添加以下設定:
將 <apm_server_url> 替換為 APM Server endpoint,將 <apm_secret_token> 替換為您從步驟 2(“Elastic Cloud”部分)複製的 secret token 。向下滾動並保存計劃更改。這將觸發 Enterprise Search 實例的滾動重啟。如果您已部署多個 Enterprise Search 實例以實現高可用性,則不會出現預期停機時間。
地端
如果您要將 Enterprise Search APM 資料傳送到 Elastic Cloud APM & Fleet 部署,請按照上面的 “Elastic Cloud” 說明啟用 APM 整合。
如果您使用的是地端 APM 伺服器,請將以下設定添加到 Enterprise Search 實例的 enterprise-search.yml 文件中:
將 <apm_server_url> 替換為 server_url,將 <apm_secret_token> 替換為您在步驟 2(“地端”部分)中從 Ruby on Rails 頁面複製的 secret_token。執行 Enterprise Search 實例的滾動重啟。如果您在負載平衡器或代理伺服器後面部署了多個 Enterprise Search 實例以實現高可用性,則不會出現預期停機時間。
步驟 4: 驗證 Enterprise Search APM 資料的成功索引
在步驟 3 中啟用 Enterprise Search 中的 APM 整合後,驗證是否正在為 Enterprise Search 收集 APM 資料。在 Kibana 中,點擊 Observability > APM > Services:
點擊 Enterprise Search > Transactions,您將看到交易列表:
確保您正在使用連接到您的 APM 伺服器索引的 Elasticsearch 叢集的 Kibana 實例進行測試。如果您可以從上面的視圖中看到交易資料,那麼您就大功告成了!
成果
Elastic APM 使 Enterprise Search 開發人員可以輕鬆地識別速度較慢的地方。
例如,要對 Enterprise Search 的 App Search 中的搜尋請求延遲進行故障排除,請點擊 Observability > APM > Services > Enterprise Search > Transactions 下的 LocoMoco::Api::V1::QueryController#search 交易名稱:
Trace sample 顯示 LocoMoco::Api::V1::QueryController#search 持續(8034 毫秒)的大部分時長都用於執行 Elasticsearch 查詢。點擊 “Search search 8,034ms” Elasticsearch 入口可提供有關跨度交易和 Enterprise Search 發送的底層 Elasticsearch 請求的詳細訊息:
有關在 Kibana 中查看 APM 交易的更多訊息,請參閱文檔。
藉由 Elastic APM,Enterprise Search 開發人員能夠快速查明速度慢的地方,專注於進階 Elasticsearch 性能故障排除(advanced Elasticsearch performance troubleshooting),從而主動加速 App Search 請求。
如您所見,Elastic APM 為包括我們自己的 Elastic Enterprise Search 產品在內的各種應用程式提供了驚人的應用程式性能監控能力。最重要的是,它是免費且開源的工具,您只需為使用的資源付費。
了解更多請參考歐立威 Elastic 產品介紹