共用方式為


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

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

警告

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

如需最新版本的文件,請參閱 Application Insights Java 3.x

Java 中的 Azure Application Insights 疑問或問題? 以下是一些秘訣。

建置錯誤

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

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

無資料

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

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

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

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

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

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

  • 在ApplicationInsights.xml檔案的根節點下新增< SDKLogger> 元素,以開啟記錄功能(在您的專案中的 resources 資料夾中)。 然後檢查前面是否有 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);
    
  • 更新 ApplicationInsights.xml (在您的專案中的 resources 資料夾中)。 在根節點下新增下列 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 意見反應社群提交產品意見反應。