Monitoring Java 虛擬機器 (JVM)
Java 感應器提供 受支援技術的自動化程式碼檢測、JVM 實例的零配置性能監視,以及所有系統中要求的端對端追蹤。
支援的資訊
支援的語言
Instana 支援下列語言:
- Clojure
- Java
- Kotlin
- Scala
支援的作業系統
Java 感應器支援與主機代理程式需求一致的作業系統,可以在每一個主機代理程式的「支援的作業系統」區段中進行檢查,例如 Unix 支援的作業系統。
支援的 Java 感應器版本
Instana 支援從第 6 版至第 19 版的所有 Java 執行時期。 如需 Java 感應器的系統需求及版本的相關資訊,請參閱 系統需求。
Instrumented 架構和程式庫
Java 感應器使用許多技術來收集 Java 應用程式效能的相關資料。 如需相關資訊,請參閱 Instrumented 架構及程式庫。
安裝
Java 感應器由 Instana 代理程式自動部署、配置及安裝。 為了確保已檢測 Java 應用程式,請確定支援 JVM 發行套件 。
選用配置
安裝 Instana 代理程式之後,會自動安裝並配置 Java 感應器。 雖然您不需要立即可用的度量及分散式追蹤的任何配置,但您可以配置感應器的個別元件。
如需配置感應器的相關資訊,請參閱 Java 配置。
特性
配置 Java 感應器之後,它會自動開始從 JVM 收集度量值。 您可以在 Instana 使用者介面中檢視這些度量值。 Java 感應器也支援 Instana 的其他特性,例如自動追蹤、自訂追蹤及自動側寫。
度量值集合
Java 感應器會監視 JVM 實例,並從中收集下列度量:
若要檢視這些度量,請完成下列步驟:
- 在 Instana 使用者介面的資訊看板中,選取 基礎架構。
- 按一下特定的受監視主機。
JVM 儀表板會顯示針對 JVM 實例所收集的所有度量。
配置資料
| 配置 | 說明 |
|---|---|
| Java 版本 | Java 版本。 |
| Java 執行環境 | Java 執行時期環境 (JRE)。 |
| 資料堆上限 | JVM 可用的資料堆大小上限。 |
| 類別路徑 | JVM 中設定的類別路徑參數。 |
效能度量
| 效能度量 | 說明 | 資料點 |
|---|---|---|
| 已用的記憶體 | JVM 使用的總記憶體。 即會顯示現行測量 KPI 值。 | 從 java.lang.Runtime#totalMemory收集位元組計數。 |
| 執行緒 | 處於不同狀態的執行緒數目: new、 runnable、 timed-waiting、 waiting或 blocked。 在選取的時段內,這些值會顯示在圖形上。 |
-從 java.lang.management.ThreadMXBean#getAllThreadIds收集現行執行緒 ID。 -從 ThreadMXBean#getThreadInfo收集執行緒狀態。 |
| 資料堆記憶體 | JVM 可用的資料堆大小上限。 | -位元組計數計算為 java.lang.Runtime#totalMemory - java.lang.Runtime#freeMemory。 -圖形中顯示的資料堆大小上限是透過剖析 -Xmx 指令行參數來決定,或從 java.lang.Runtime#maxMemory收集。 -已用資料堆記憶體佔資料堆記憶體總數的百分比。 |
| 記憶體儲存區 | 在選取的時段內,資料堆及非資料堆儲存區的記憶體儲存區使用情形會顯示在圖形上。 | -從 ManagementFactory#getMemoryPoolMXBeans收集儲存區資訊。 -從每一個儲存區收集圖形值 java.lang.management.MemoryUsage。-從 getMax收集最大值,從 getInit收集起始值,從 getUsage收集現行值。 |
| 記憶體回收 | 記憶體回收啟動和執行時期值會在所選取時段的圖形上顯示。 | -從 ManagementFactory#getGarbageCollectorMXBeans收集記憶體回收資訊。 -從每一個收集器收集圖形值 java.lang.management.GarbageCollectorMXBean。 -從 getCollectionTime收集記憶體回收執行時期,根據 Javadoc ,這是累計記憶體回收的大約經歷時間 (毫秒)。 -從 getCollectionCount收集呼叫計數。 - getCollectionTime 和 getCollectionCount 值都是 1 秒期間計算的差異。 |
| 暫停 | 在所選時段內圖形上顯示的應用程式執行延遲。 | 根據應用程式內 Instana 測量執行緒計算。 |
性能簽章
每一個感應器都有經過策劃的性能簽章知識庫,可根據送入的度量來持續評估。 這些性能簽章用來提出取決於使用者影響的問題或發生事件。
內建事件 會根據實體上失敗的性能簽章來觸發問題或突發事件,而 自訂事件 會根據任何實體的個別度量值臨界值來觸發問題或突發事件。
如需 Java 感應器內建事件的相關資訊,請參閱 內建事件參照。
自訂度量值
Instana 支援部分一般 Java 度量值程式庫:
其他度量
除了配置、效能及自訂度量之外, Java 感應器還會收集其他度量,例如即時執行緒傾出及資料堆傾出。
Live Thread 傾出
若要檢視 JVM 的即時執行緒傾出,請按一下 取得執行緒傾出。
資料堆傾出
若要建立 JVM 的資料堆傾出,請按一下 取得資料堆傾出。 若要儲存資料堆傾出,請指出 JVM 的本端位置。
Instana AutoTrace™
依預設, Java 感應器會監視所有要求,並自動為每一個要求建立分散式追蹤。 此分散式追蹤包括跨主機及跨語言追蹤。
如需相關資訊,請參閱 Instana AutoTrace™。
記載
「Java 追蹤器」只會擷取 WARN 層次及更高層次的日誌。
當使用 Log4j、 Log4j2或 Logback 來啟用記載和追蹤的更精確相關性時, Instana 會自動將追蹤 ID 移入「對映診斷環境定義 (MDC)」。 MDC 變數名稱是 instana.trace.id。 如需在格式字串中使用記載架構的相關資訊,請參閱記載架構的說明文件。
自訂追蹤
Java 感應器提供完全自動化的現成追蹤設備測試。 但在某些情況下,您可能偏好將自訂追蹤資料傳送至 Instana 儀表板。 您可以使用下列方法來實作自訂追蹤:
Java 追蹤 SDK
如果您想要檢測 Instana 尚未支援的架構,或監視自訂應用程式的要求,請使用 Java 追蹤 SDK,並檢視 GitHub 儲存庫。
在使用 SDK 實作自訂追蹤之前,請參閱 追蹤最佳作法。
配置型 Java 追蹤 SDK
您可能會遇到下列情況: 使用「Java 追蹤 SDK」需要操作原始碼,或聯絡可以執行該動作的人員,這並不可行或不需要。 在這些情況下,請使用 配置型 Java 追蹤 SDK。 雖然相較於程式化 Java 追蹤 SDK,特性的豐富程度較少,但配置型 Java 追蹤 SDK 容許以宣告方式來配置涵蓋許多一般使用案例的文字段和標籤。
在使用 配置型 Java 追蹤 SDK來實作自訂追蹤之前,請參閱 追蹤最佳作法。
Java OpenTracing API
若要收集透過 OpenTracing API 說明的追蹤資料,您必須使用 Java OpenTracing。 如需相關資訊,請參閱 OpenTracing。
重要事項: 在使用 Java OpenTracing API 之前,請先停用自動追蹤 (Instana AutoTrace™)。 如需相關資訊,請參閱 停用自動檢測。
OpenCensus Instana 追蹤匯出器
Instana 為以 Java 撰寫的應用程式提供 OpenCensus Trace Exporter 。 使用 Instana 代理程式處理程序作為 Proxy , Instana 會將使用 Census 檢測的應用程式所匯出的追蹤資料轉遞至其後端。
如需相關資訊,請參閱 OpenCensus Exporters。
重要事項: 如果在與「人口普查」相同的主機上使用代理程式,請停用自動追蹤 (Instana AutoTrace™)。 如需相關資訊,請參閱 停用自動檢測。
Instana AutoProfile™
設定檔對於尋找程式碼層次的效能熱點和瓶頸非常重要。 它們有助於減少資源消耗和改善效能。
AutoProfile™ 會產生程序設定檔並將其報告給 Instana。 與開發時間及隨需應變側寫程式不同,您必須手動起始側寫, AutoProfile™ 會自動排程並持續執行適用於重要正式作業環境的側寫。
如需相關資訊,請參閱我們的 Instana AutoProfile™ 文件。
疑難排解
您可能會遇到 Instana 的一些監視問題。 如需相關資訊,請參閱疑難排解。