針對 Java Web 專案中的 Azure 應用程式 Insights 進行疑難解答
本文提供 Application Insights Java 2.x 的 Q&A 格式常見問題的疑難解答解決方案。
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 意應見反社群。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應