針對 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 意應見反社群。