針對 Java Web 專案中的 Azure 應用程式 Insights 進行疑難解答
本文針對 Application Insights Java 2.x 的 Q&A 格式常見問題,提供疑難解答解決方案。
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 資料夾中。
請務必使用相同的 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 意見反應社群提交產品意見反應。