Ruby 疑難排解
Instana gem 已設計為完全自動,但如果發生錯誤,請 將問題單存檔 ,並讓我們知道! 我們喜歡聽取意見 (好或壞) ,因此我們可以不斷改進。
下列頁面概述您可以採取的一些步驟,以潛在診斷可能產生的任何問題。
支援的元件
在花太多時間診斷問題之前,請先確定有問題的元件和環境受到支援。 您可以在「 Ruby 支援的版本 」頁面中找到所有受支援元件的清單。
問題區域
Ruby 處理程序未顯示在儀表板中
1. 驗證您的環境受支援,且您正在執行受支援版本的 Ruby
在花太多時間診斷問題之前,請先確定有問題的元件和環境受到支援。 您可以在「 Ruby 支援的版本 」頁面中找到所有受支援元件的清單。
2. 驗證安裝步驟
驗證已適當遵循 安裝步驟 。
3. 驗證 Instana Ruby gem 已安裝在 應用程式軟體組 中
您可以透過查看應用程式中的 gem "instana" Gemfile 和 查看 Gemfile.lock 檔案中 instana 的提及項目,來驗證此問題。
或者, 從 Ruby 應用程式目錄,您可以執行 bundle exec gem list。 這會列出應用程式組合中的所有 Ruby Gem。 驗證 Instana Ruby Gem 是否在該清單中。
4. 請確定 Instana Gem 是最新版本。
最新版本可在 Rubygems上找到。
在 Gemfile.lock中,您應該會看到 Instana Ruby gem 的最新版本以及名稱 (例如 instana (x.x.x))。
5. 驗證應用程式日誌輸出中是否提及 Instana。
應用程式及/或容器日誌應該一律具有類似於 Stan is on the scene. Starting Instana instrumentation version x.x.x 的開機訊息
6. 啟用除錯輸出並重新檢查應用程式或儲存器日誌。
為 Ruby 處理程序設定環境變數 INSTANA_DEBUG=true ,並重新驗證應用程式或容器日誌 (與 #3相同)。
請特別注意,查看是否有任何 Instana 相關錯誤訊息。
7. 請檢查 Instana 主機代理程式日誌,以取得與此 Ruby 處理程序相關的任何訊息。
8. 嘗試從主控台以詳細模式啟動 Ruby 應用程式
請參閱這裡 ,以瞭解如何執行此動作。 請特別注意,以查看 Ruby 應用程式輸出中是否有任何 Instana 相關錯誤訊息。
9. 將支援問題單存檔。
如果您已驗證上述所有項目,且 Ruby 處理程序仍未顯示在 Instana 儀表板中,請將 支援問題單 存檔,以便我們可以進一步調查。
支援問題單應該包括:
- 環境詳細資料; 平台、Ruby 版本、使用中的架構
- 上述所有驗證的摘要。
Ruby 應用程式沒有追蹤資料
如果 Instana Ruby 應用程式位於 Instana 儀表板上,但似乎沒有來自應用程式的追蹤資料,請檢查下列項目:
1. 支援您的應用程式架構嗎?
請檢查 Ruby 應用程式中使用的元件 是否受支援。
2. ::Instana::Rack 中介軟體是否在作用中?
如果您使用機架型架構 (例如 Ruby on Rails) ,請確定 ::Instana::Rack 中介軟體已適當地安裝為中介軟體。 在一般情況下,會針對各種架構自動安裝此中介軟體。
若要在 Ruby on Rails 中驗證,您可以執行:
bundle exec rake middleware
您應該會看到 ::Instana::Rack的項目。 如果必須這麼做,您可以 手動安裝它。
3. 您在 Gemfile 中使用 require => false 延遲載入 Instana gem 嗎?
不鼓勵延遲載入 Instana Ruby gem ,因為各種堆疊中的開機處理程序通常嚴格且順序相依。 延遲載入的常見症狀是缺少 ::Instana::Rack 機架中介軟體,它會起始追蹤送入的要求。
如果基於某些原因,您仍然偏好延遲載入 Instana Ruby gem ,請務必遵循 手動指示 (必要的話) 來安裝 Instana Rack 中介軟體
4. 啟用除錯輸出並重新檢查應用程式或儲存器日誌。
為 Ruby 處理程序設定環境變數 INSTANA_DEBUG=true ,並重新驗證應用程式或容器日誌 (與 #3相同)。
請特別注意,查看是否有任何 Instana 相關錯誤訊息。
5. 從應用程式主控台產生自訂追蹤
如果所有其他都失敗,您可以開啟應用程式主控台,並執行下列動作來產生自訂追蹤:
require "instana"
Instana::Tracer.start_or_continue_trace(:my_custom_trace) do
sleep 1
end
在成功並已啟用除錯輸出 (在前一個步驟中說明) 時,您應該會在應用程式日誌中看到下列內容:
Instana:: Reporting 1 spans
然後檢查您的 Instana 儀表板 (在查詢分析下,以取得 SDK的 call.span_type )。 您應該會看到名為 "my_custom_trace" 的追蹤。
6. 請檢查 Instana 主機代理程式日誌,以取得與此 Ruby 處理程序相關的任何訊息。
7. 將支援問題單存檔。
如果您已驗證上述所有項目,且在 Instana 儀表板中仍然看不到 Ruby 追蹤資料,請將 支援問題單 存檔,以便我們可以進一步調查。
支援問題單應該包括:
- 環境詳細資料; 平台、Ruby 版本、使用中的架構
- 上述所有驗證的摘要。
儲存器化環境中的
高代理程式 CPU 使用率
在具有使用 fork 作為並行基本元素的 Ruby 處理程序的儲存器化環境中,代理程式在嘗試追蹤新建立的處理程序時可能會變得超載。
確保代理程式有足夠資源來處理要求
如果您已採取步驟來限制代理程式所需的 CPU 及記憶體 數量,請確保現有限制提供足夠資源,讓代理程式能夠完成其所有必要作業。
停用程序查閱
您也可以將下列內容新增至代理程式配置,以停用代理程式的「捷徑」。 這可以減少代理程式所耗用的資源,但如果處理程序在能夠將任何資料傳送至代理程式之前結束,則可能會導致捨棄追蹤資料。 此問題通常針對使用
fork作為協同基本元素且短期存活的子處理程序的應用程式呈現。com.instana.processlookup: enabled: false
記載與環境變數
依預設, gem 只會記載指出是否發生任何問題的訊息。 如果您想要更詳細的記載輸出,請設定 INSTANA_DEBUG 環境變數。 它會在 Instana Gem 中啟用除錯層次記載。

在上述範例中,您可以看到主機代理程式無法使用 (因為它不在執行中或未安裝)。 一旦主機代理程式可用, Instana Gem 將自動重新連接,無需任何人為介入。
甚至還有更多方法來控制記載輸出。 如需詳細資料,請參閱「 Ruby 配置 」頁面。
在應用程式中測試
如果要從應用程式診斷 Instana Gem ,通常只要開啟應用程式主控台來詳細記載,就足以識別問題:

在上述範例中,您可以看到 Instana Ruby gem 起始設定、檢測部分元件及成功通知: Host agent available. We're in business。
停用個別元件
如果 gem 的特定部分 (例如檢測) 會為您造成問題,您可以透過僅停用該元件來暫時避免此問題。 如需如何啟用及停用個別元件的相關資訊,請參閱「 Ruby 配置 」頁面。