共用方式為


針對 Java Web 專案中的 Azure 應用程式 Insights 進行疑難解答

本文提供 Application Insights Java 2.x 的 Q&A 格式常見問題的疑難解答解決方案。

注意

本文件適用於不再建議使用的Application Insights Java 2.x。

您可以在 Application Insights Java 3.x 找到最新版本的檔。

Java 中的 Azure 應用程式 Insights 有疑問或問題嗎? 以下是一些秘訣。

建置錯誤

在 Eclipse 或 Intellij Idea 中,當我透過 Maven 或 Gradle 新增 Application Insights SDK 時,會收到建置或總和檢查碼驗證錯誤

如果相依性 <版本> 專案使用的模式包含通配符 (例如 <version>[2.0,)</version> ,在 Maven 或 version:'2.+' Gradle) 中,請嘗試改為指定特定版本,例如 2.6.4

沒有數據

我已成功新增Application Insights並執行應用程式,但從未在入口網站中看到數據

  • 等候約一分鐘,然後選取 [ 重新整理]。 圖表會定期自行重新整理,但您也可以手動重新整理。 重新整理間隔取決於圖表的時間範圍。

  • 請確定您已在專案) 的 resources 資料夾中定義 ApplicationInsights.xml 檔案 (的檢測金鑰,或將其中一個設定為環境變數。

  • 確認 XML 檔案中沒有 <DisableTelemetry>true</DisableTelemetry> 節點。

  • 如有必要,請在防火牆中開啟 TCP 連接埠 80 和 443,以將傳出流量傳送到 dc.services.visualstudio.com。 請參閱 防火牆例外狀況的完整清單

  • 在 Microsoft Azure 起始面板中,查看服務狀態對應。 如果有一些警示指示,請等到它們回到 [確定],然後關閉並重新開啟Application Insights 應用程式刀鋒視窗。

  • 在專案) 的 resources 資料夾中,於ApplicationInsights.xml 檔案 (的根節點下新增 <SDKLogger> 元素,以開啟記錄。 然後檢查是否有任何可疑記錄開頭 AI: INFO/WARN/ERROR 為的專案。

  • 請確定 Java SDK 已成功載入正確的 ApplicationInsights.xml 檔案。 檢查主控台的輸出訊息中是否有「已成功找到組態檔」語句。

  • 如果找不到組態檔,請檢查輸出訊息,以查看要搜尋組態檔的位置。 請確定 ApplicationInsights.xml 位於其中一個搜尋位置。 根據經驗法則,您可以將配置檔放在 Application Insights SDK JAR 附近。 例如,在 Tomcat 中,資料夾會是 WEB-INF/classes。 在開發期間,您可以將 ApplicationInsights.xml 放在 Web 專案的 resources 資料夾中。

  • 如需 SDK 的已知問題,請查看 GitHub 問題頁面

  • 請務必使用相同版本的 Application Insights 核心、Web、代理程式和記錄附加器,以避免任何版本衝突問題。

注意事項

本文最近更新為使用 「Azure 監視器記錄 」一詞,而不是 Log Analytics。 記錄數據仍會儲存在Log Analytics工作區中,而且仍由相同的Log Analytics服務收集和分析。 我們正在更新術語,以更清楚地反映 Azure 監視器中的記錄角色。 如需詳細資訊,請參閱 Azure 監視器術語變更

我過去常看到數據,但數據已停止

  • 您是否達到數據點的每月配額? 開> [設定配額] 和 [定價] 以瞭解。若是如此,您可以升級您的方案,或支付更多容量。 如需詳細資訊,請參閱 定價配置

  • 您最近是否已升級 SDK? 請確定項目目錄內只有唯一 SDK jar 存在。 不應該有兩個不同版本的 SDK 存在。

  • 您是否正在查看正確的 AI 資源? 請務必將應用程式的 iKey 與您預期遙測的資源相符。 它們應該相同。

我看不到我預期的所有數據

  • 開啟 [ 使用量和估計成本 ] 頁面,並檢查 取樣 是否在運作中。 (100% 傳輸表示取樣不在作業中。) Application Insights 服務可以設定為只接受從應用程式抵達的遙測部分。 該設定可協助您保持在遙測的每月配額內。

  • 您是否已開啟 SDK 取樣? 如果是,則會以針對所有適用型別指定的速率來取樣數據。

  • 您是否正在執行舊版的 Java SDK? 從 2.0.1 版開始,我們引進了容錯機制來處理間歇性網路和後端失敗,以及本機磁碟驅動器上的數據持續性。

  • 檢查過多的遙測是否造成節流。 如果您開啟 INFO 記錄,您會看到「應用程式已節流」記錄訊息。 我們目前的限制大約是每秒 32,000 個遙測專案。

Java 代理程式無法擷取相依性數據

  • 您是否 已設定 Java 代理程式

  • 請確定 Java 代理程式 jar 檔案和 AI-Agent.xml 檔案都放在相同的資料夾中。

  • 請確定您嘗試自動收集的相依性支持自動收集。 目前我們只支援 MySQL、Microsoft SQL Server、Oracle DB 和 Azure Cache for Redis 相依性集合。

沒有使用量數據

我看到有關要求和回應時間的數據,但沒有頁面檢視、瀏覽器或用戶數據

您已成功設定應用程式以從伺服器傳送遙測。 現在,您的下一個步驟是 設定網頁以從網頁瀏覽器傳送遙測

或者,如果您的用戶端是 手機或其他裝置中的應用程式,您可以從該處傳送遙測。

使用相同的檢測金鑰來設定客戶端和伺服器遙測。 數據會出現在相同的 Application Insights 資源中,而且您將能夠將來自用戶端和伺服器的事件相互關聯。

停用遙測

如何停用遙測收集?

請遵循下列其中一個解決方案:

  • 停用程式代碼中的集合:

    TelemetryConfiguration config = TelemetryConfiguration.getActive();
    config.setTrackingIsDisabled(true);
    
  • 更新 專案) 中 resources 資料夾中的ApplicationInsights.xml(。 在根節點下新增下列 XML 元素:

    <DisableTelemetry>true</DisableTelemetry>
    

    如果您使用 XML 方法,則必須在變更值時重新啟動應用程式。

變更目標

如何變更專案傳送數據的 Azure 資源?

  • 取得新資源的檢測金鑰

  • 如果您使用適用於 Eclipse 的 Azure 工具組將 Application Insights 新增至專案,請以滑鼠右鍵按兩下您的 Web 專案,選取 [Azure>設定 Application Insights],然後變更密鑰。

  • 如果您已將檢測金鑰設定為環境變數,請務必使用新的 iKey 更新環境變數的值。

  • 否則,請在您專案的 resources 資料夾中 更新ApplicationInsights.xml 中的金鑰。

從 SDK 偵錯數據

如何找出SDK正在做什麼?

若要取得 API 中發生情況的詳細資訊,請在ApplicationInsights.xml 組態檔的根節點內新增 <SDKLogger> 元素。

ApplicationInsights.xml

<SDKLogger> 元素中,您也可以指示記錄器輸出至檔案:

<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>

Spring Boot 入門版

若要使用 Application Insights Spring Boot 入門版來啟用使用 Spring Boot 應用程式的 SDK 記錄,請將下列幾行新增至 application.properties 檔案:

azure.application-insights.logger.type=file
azure.application-insights.logger.base-folder-path=C:/agent/AISDK
azure.application-insights.logger.level=trace

或者,您可以列印到標準錯誤數據流:

azure.application-insights.logger.type=console
azure.application-insights.logger.level=trace

Java 代理程式

若要啟用 JVM 代理程式記錄, 請更新 AI-Agent.xml 檔案

<AgentLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AIAGENT</BaseFolderPath>
</AgentLogger>

Java 命令行屬性

自 2.4.0 版起

若要使用命令列選項來啟用記錄,而不是變更組態檔,請執行下列命令:

java -Dapplicationinsights.logger.file.level=trace \
    -Dapplicationinsights.logger.file.uniquePrefix=AI \
    -Dapplicationinsights.logger.baseFolderPath="C:/my/log/dir" \
    -jar MyApp.jar

或者,執行下列命令以列印至標準錯誤數據流:

java -Dapplicationinsights.logger.console.level=trace -jar MyApp.jar

Azure 開始畫面

我正在查看 Azure 入口網站。 地圖是否告知我的應用程式相關信息?

否,它會顯示全球 Azure 伺服器的健康情況。

如何? 從 Azure 開始面板 (主畫面) 尋找應用程式的相關資料嗎?

假設您 已設定 Application Insights 的應用程式,請選取 [ 流覽>Application Insights],然後選取您為應用程式建立的應用程式資源。 若要在未來更快到達,請將您的應用程式釘選到起始面板。

內部網路伺服器

我可以監視內部網路上的伺服器嗎?

是,前提是您的伺服器可以透過公用因特網將遙測傳送至 Application Insights 入口網站。

您可能需要 在伺服器的防火牆中開啟一些傳出埠 ,以允許 SDK 將數據傳送至入口網站。

資料保留

在入口網站中保留數據多久? 是否安全?

請參閱 數據保留和隱私權

偵錯記錄

Application Insights 使用 org.apache.http。 此命名空間會重新放置在命名空間 com.microsoft.applicationinsights.core.dependencies.http下的 Application Insights 核心 jar 內。 此重新配置可讓 Application Insights 處理相同 不同版本 org.apache.http 存在於一個程式代碼基底中的案例。

注意事項

如果您為應用程式中的所有命名空間啟 DEBUG用層級記錄,所有執行中的模組都會接受此功能, (包括 org.apache.http 重新命名為 com.microsoft.applicationinsights.core.dependencies.http) 。 Application Insights 將無法對這些呼叫套用篩選,因為 Apache 連結庫正在進行記錄呼叫。 DEBUG層級記錄會產生相當大量的記錄數據,不建議用於即時生產實例。

後續步驟

我為 Java 伺服器應用程式設定 Application Insights。 我還可以做什麼?

取得說明

協力廠商資訊免責聲明

本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群