JVM

JVM 整合功能會收集透過 Java 管理擴充功能 (JMX) 公開的 JVM 指標。這項整合功能主要會收集記憶體和垃圾收集的指標。此外,您也可以查看其他執行階段指標,例如執行緒計數和載入的類別。

如要進一步瞭解 JVM,請參閱 JVM 說明文件

必要條件

如要收集 JVM 遙測資料,請安裝 Ops Agent

  • 如要使用指標,請安裝 2.2.0 以上版本。

這項整合功能支援 Java 16 和 Java 11 的 JVM 版本。

設定 JVM 執行個體

如要公開 JMX 端點,啟動 JVM 時必須設定 com.sun.management.jmxremote.port 系統屬性。我們也建議將 com.sun.management.jmxremote.rmi.port 系統屬性設為相同連接埠。

如要遠端公開 JMX 端點,您也必須設定 java.rmi.server.hostname 系統屬性。

如要使用指令列引數設定系統屬性,請在啟動 JVM 時,在屬性名稱前加上 -D

舉例來說,如要將 com.sun.management.jmxremote.port 設為通訊埠 9999,請在啟動 JVM 時指定下列項目:

-Dcom.sun.management.jmxremote.port=9999

設定 JVM 適用的作業套件代理程式

按照「設定作業套件代理程式」指南操作,新增必要元素,從 JVM 執行個體收集遙測資料,然後重新啟動代理程式

範例設定

下列指令會建立設定,收集及擷取 JVM 的遙測資料:

set -e

# Check if the file exists
if [ ! -f /etc/google-cloud-ops-agent/config.yaml ]; then
  # Create the file if it doesn't exist.
  sudo mkdir -p /etc/google-cloud-ops-agent
  sudo touch /etc/google-cloud-ops-agent/config.yaml
fi

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    jvm:
      type: jvm
      endpoint: service:jmx:rmi:///jndi/rmi://127.0.0.1:9010/jmxrmi
  service:
    pipelines:
      jvm:
        receivers:
          - jvm
EOF

如要讓這些變更生效,請重新啟動 Ops Agent:

Linux

  1. 如要重新啟動代理程式,請在執行個體上執行下列指令:
    sudo systemctl restart google-cloud-ops-agent
    
  2. 如要確定代理程式已重新啟動,請執行下列指令,並驗證「指標代理程式」和「Logging 代理程式」元件是否已啟動:
    sudo systemctl status "google-cloud-ops-agent*"
    

Windows

  1. 使用遠端桌面協定或類似工具連線至執行個體,並登入 Windows。
  2. 以滑鼠右鍵按一下 PowerShell 圖示,然後選取「以系統管理員身分執行」,以管理員權限開啟 PowerShell 終端機。
  3. 如要重新啟動代理程式,請執行下列 PowerShell 指令:
    Restart-Service google-cloud-ops-agent -Force
    
  4. 如要確定代理程式已重新啟動,請執行下列指令,並驗證「指標代理程式」和「Logging 代理程式」元件是否已啟動:
    Get-Service google-cloud-ops-agent*
    

設定指標收集

如要從 JVM 擷取指標,您必須為 JVM 產生的指標建立接收器,然後為新的接收器建立管道。

這個接收器不支援在設定中使用多個執行個體,例如監控多個端點。所有這類執行個體都會寫入相同的時間序列,而 Cloud Monitoring 無法區分這些執行個體。

如要為 jvm 指標設定接收器,請指定下列欄位:

欄位 預設 說明
collection_interval 60s 時間長度值,例如 30s5m
endpoint localhost:9999 用於建構服務網址的 JMX 服務網址或主機和通訊埠。這個值必須為 service:jmx:<protocol>:<sap>host:porthost:port 形式的值會用於建立 service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi 的服務網址。
password 如果 JMX 設定為需要驗證,則為設定的密碼。
type 這個值必須是 jvm
username 如果 JMX 設定為需要驗證,則為設定的使用者名稱。

監控的內容

下表列出作業套件代理程式從 JVM 執行個體收集的指標。

指標類型
類型
受監控資源
標籤
workload.googleapis.com/jvm.classes.loaded
GAUGEINT64
gce_instance
 
workload.googleapis.com/jvm.gc.collections.count
CUMULATIVEINT64
gce_instance
name
workload.googleapis.com/jvm.gc.collections.elapsed
CUMULATIVEINT64
gce_instance
name
workload.googleapis.com/jvm.memory.heap.committed
GAUGEINT64
gce_instance
 
workload.googleapis.com/jvm.memory.heap.init
GAUGEINT64
gce_instance
 
workload.googleapis.com/jvm.memory.heap.max
GAUGEINT64
gce_instance
 
workload.googleapis.com/jvm.memory.heap.used
GAUGEINT64
gce_instance
 
workload.googleapis.com/jvm.memory.nonheap.committed
GAUGEINT64
gce_instance
 
workload.googleapis.com/jvm.memory.nonheap.init
GAUGEINT64
gce_instance
 
workload.googleapis.com/jvm.memory.nonheap.max
GAUGEINT64
gce_instance
 
workload.googleapis.com/jvm.memory.nonheap.used
GAUGEINT64
gce_instance
 
workload.googleapis.com/jvm.memory.pool.committed
GAUGEINT64
gce_instance
name
workload.googleapis.com/jvm.memory.pool.init
GAUGEINT64
gce_instance
name
workload.googleapis.com/jvm.memory.pool.max
GAUGEINT64
gce_instance
name
workload.googleapis.com/jvm.memory.pool.used
GAUGEINT64
gce_instance
name
workload.googleapis.com/jvm.threads.count
GAUGEINT64
gce_instance
 

驗證設定

本節說明如何確認您已正確設定 JVM 接收器。作業套件代理程式可能需要一到兩分鐘,才會開始收集遙測資料。

如要確認 JVM 指標是否已傳送至 Cloud Monitoring,請執行下列操作:

  1. 前往 Google Cloud 控制台的 「Metrics Explorer」頁面:

    前往 Metrics Explorer

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在查詢建構工具窗格的工具列中,選取名稱為  MQL PromQL 的按鈕。
  3. 確認已在「Language」(語言) 切換按鈕中選取「PromQL」。語言切換按鈕位於同一工具列,可供你設定查詢格式。
  4. 在編輯器中輸入下列查詢,然後按一下「執行查詢」
    fetch gce_instance
    | metric 'workload.googleapis.com/jvm.memory.heap.used'
    | every 1m
    

查看資訊主頁

如要查看 JVM 指標,您必須設定圖表或資訊主頁。JVM 整合功能包含一或多個資訊主頁。 設定整合功能後,Ops Agent 就會開始收集指標資料,並自動安裝所有資訊主頁。

您也可以查看資訊主頁的靜態預覽畫面,不必安裝整合服務。

如要查看已安裝的資訊主頁,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Dashboards」(資訊主頁) 頁面:

    前往「Dashboards」(資訊主頁)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 選取「資訊主頁清單」分頁,然後選擇「整合」類別。
  3. 按一下要查看的資訊主頁名稱。

如果您已設定整合功能,但尚未安裝資訊主頁,請檢查作業套件代理程式是否正在執行。如果資訊主頁中的圖表沒有指標資料,資訊主頁安裝作業就會失敗。作業套件代理程式開始收集指標後,系統就會為您安裝資訊主頁。

如要查看資訊主頁的靜態預覽畫面,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「Integrations」(整合) 頁面

    前往「整合」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 按一下「Compute Engine」部署平台篩選器。
  3. 找出「JVM」項目,然後按一下「查看詳細資料」
  4. 選取「資訊主頁」分頁標籤,即可查看靜態預覽畫面。如果已安裝資訊主頁,請點選「查看資訊主頁」前往。

如要進一步瞭解 Cloud Monitoring 中的資訊主頁,請參閱「資訊主頁和圖表」。

如要進一步瞭解如何使用「整合」頁面,請參閱「管理整合」一文。

安裝快訊政策

快訊政策會指示 Cloud Monitoring 在發生指定情況時通知您。 JVM 整合功能包含一或多項快訊政策,供您使用。您可以在 Monitoring 的「Integrations」(整合) 頁面中查看及安裝這些快訊政策。

如要查看可用快訊政策的說明並安裝,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「Integrations」(整合) 頁面

    前往「整合」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 找出 JVM 的項目,然後按一下「查看詳細資料」
  3. 選取「快訊」分頁標籤。這個分頁會說明可用的快訊政策,並提供安裝介面。
  4. 安裝快訊政策。快訊政策需要知道在觸發快訊時,要將通知傳送至何處,因此需要您提供安裝資訊。如要安裝快訊政策,請按照下列步驟操作:
    1. 從可用的警報政策清單中,選取要安裝的政策。
    2. 在「設定通知」部分,選取一或多個通知管道。您可以選擇停用通知管道,但這麼做的話,快訊政策會以無聲方式觸發。您可以在「監控」中查看狀態,但不會收到任何通知。

      如要進一步瞭解通知管道,請參閱「管理通知管道」。

    3. 按一下「建立政策」

如要進一步瞭解 Cloud Monitoring 中的快訊政策,請參閱快訊簡介

如要進一步瞭解如何使用「整合」頁面,請參閱「管理整合」一文。

後續步驟

如要逐步瞭解如何使用 Ansible 安裝作業套件代理程式、設定第三方應用程式,以及安裝範例資訊主頁,請觀看「 安裝 Ops Agent 以排解第三方應用程式的問題」影片。