瞭解如何設定 Java Management Service 進階功能

Java Management Service (JMS) 是 Oracle Cloud Infrastructure (OCI) 上的原生服務。JMS 可用於管理、監督及保護您自己管理之運算執行處理 (內部部署或 OCI) 中的 Java 安裝項目。

您可以使用 JMS:

  • 可見性:探索及管理整個企業的 Java
  • 洞察:分析 Java Virtual Machine (JVM) 組態、安全性、規範、效能
  • 調整:安全性、移轉、最佳化及自動化

您是否想知道目前的安全態勢是否符合 Oracle 針對 Java 程式實際執行所做的安全建議,以及是否為最新狀態?JMS 可能會協助您找出答案,它會報告應用程式所使用的任何有問題的 Java 程式庫,並檢查您已在執行中的應用程式是否在安全區域中沒有瑕疵。您是否難以瞭解 Java 應用程式的效能,或是難以瞭解 Java 資源回收器的日誌?JMS 透過效能分析進行救援。您是否不確定能輕易切換至較新版本的 Java?我們為您提供 Java 移轉分析的保障。

使用 JMS 時,Java Flight Recorder (JFR) 記錄從未如此簡單,您只需要在 JMS 中選取應用程式,即可提供一些詳細資訊並送出記錄要求。JFR 錄製工作要求完成後,您便可以從 JMS 機組的儲存桶輕鬆存取。此外,JMS 也提供 Java 生命週期管理功能,例如安裝 Java 程式實際執行或提供有關 Java 應用程式伺服器的其他詳細資訊。

本解決方案手冊概述了設定 JMS 進階功能以解決上述 Java IT 問題的步驟。

JMS 進階功能可用來深入瞭解您環境中 Java 的不同層面。例如,使用進階功能時,您可以:

  • 掃描應用程式使用的 Java 程式庫,以識別和報告與第三方 Java 程式庫相關的潛在漏洞 (CVE)。
  • 利用效能分析,透過 JVM 調整建議來最佳化 Java 工作負載效能。
  • 使用「Java 移轉分析」評估將 Java 應用程式移轉至較新 JDK 版本所需的可行性和人力。
  • 使用「加密事件分析」找出可停止使用 Oracle JRE 和 JDK 加密藍圖中近期更新的弱加密用途,協助保護您的應用程式安全。
  • 透過掃描 Java 伺服器,瞭解每個 Java 應用程式伺服器上正在執行哪些服務和應用程式。
  • 執行 JDK Flight Recorder 以遠端收集應用程式洞察分析。
  • 下載、安裝及設定 Java 程式實際執行。
  • 移除回報的 Oracle Java 版本。
  • 分配或移除部署規則集。

Before You Begin - 開始之前

需有 Oracle Cloud (OCI) 帳戶才能存取 Java Management Service。您可以使用自己的雲端帳戶,或取得 OCI 免費層帳戶。

在本解決方案手冊中概述的範例中,我們使用 OCI 命令行工具。如果您想要自行嘗試這些範例,請根據下列命令行介面 (CLI) 指南設定並設定 OCI CLI。執行此範例的其他需求是,jq 命令行公用程式存在於您要執行 oci 工具命令的機器上。幾乎可從每個平台的 GitHub 專案頁面取得此公用程式:https://github.com/jqlang/jq

確定已正確設定 Oracle Linux 機器,以允許與 OCI 服務進行通訊。機器可以是:

  • 您的租用戶中可用的 OCI 運算執行處理。如果您尚未設定執行處理,請參閱建立 OCI 運算執行處理
  • 非 OCI 主機,即內部部署 (位於您自己的資料中心、第三方雲端等等),應透過 JMS 服務進行監控。
設定 JMS
  1. 如下列解決方案所述設定 JMS:設定 Java Management Service 以監督 Oracle Linux 主機上的 Java 使用狀況
  2. 新增進階功能的必要原則,如下所述: JMS Fleets Policy Statements
    1. 以管理員身分登入 OCI 主控台。
    2. 開啟導覽功能表,然後按一下識別與安全原則,瀏覽至 JMS 原則文件。
    3. 尋找 JMS 相關原則文件,例如 JMS_Policy_Fleet_Compartment,然後按一下該文件。
    4. 按一下敘述句 (Statement) ,然後按一下編輯原則敘述句 (Edit Policy Statement)
    5. 新增下列三個原則敘述句:
      
      ALLOW dynamic-group JMS_DYNAMIC_GROUP to MANAGE object-family IN COMPARTMENT Fleet_Compartment
      ALLOW group FLEET_MANAGERS to MANAGE object-family IN COMPARTMENT Fleet_Compartment
      ALLOW resource jms SERVER-COMPONENTS to MANAGE object-family IN COMPARTMENT Fleet_Compartment
    6. 按一下儲存變更
  3. 啟用 JMS 進階功能:
    1. 以管理員身分登入 OCI 主控台。
    2. 開啟導覽功能表,按一下可觀測性與管理,然後按一下 Java 管理下的機組
    3. 選取您的機組。
    4. 機組特性段落中,檢查是否已啟用所有 JMS 進階功能。
    5. 如果沒有,請按一下動作,然後選取編輯特性
    6. 進階功能區段中,針對所有列出的進階功能按一下啟用按鈕
    7. 驗證並確認 JMS 進階功能的需求,然後按一下啟用按鈕
    8. 啟用所有進階功能之後,請按一下儲存變更

    附註:

    如果找不到 JMS 原則文件或 JMS 機組,請嘗試變更您的區間。在此解決方案手冊中,我們使用名稱為機組區間的區間。

    您也可以在建立機組期間啟用所有進階功能,如「設定 JMS」區段的第一個步驟所述。

架構

本手冊提供內建 Java Management Service 進階功能的簡介,其中特別提供 Java 安裝的洞察分析,並視需要採取更正動作。此解決方案適用於啟用 JMS 中的進階功能、OCI、內部部署及第三方雲端中的 Oracle 安裝。

受管理執行處理上已安裝 JMS 代理程式,以收集 Java 使用狀況遙測和 Java 使用狀況描述資料。系統會傳送遙測資料給您的租用戶,並加以儲存以提供隱私保護。

下圖說明生產中 JMS 服務的拓樸。此圖表顯示部署來追蹤在 OCI 上執行之 Java、內部部署桌面、筆記型電腦與伺服器,以及第三方雲端服務的代理程式。這些代理程式會部署在您的受管理執行處理中,並與您在租用戶中建立的資源 (機組) 關聯。

安裝在您租用戶中的代理程式會從您的租用戶擷取 Java 用量描述資料。JMS 會使用此描述資料來產生洞察分析,例如 Java 版本、安全基準以及即將進行的 Java 更新以及應用程式使用狀況;當您登入 OCI 主控台時會顯示此資訊。除了處理擷取的中繼資料外,Oracle 存取權完全沒有。

使用 JMS 的進階功能,您可以分析 Java 應用程式伺服器的使用狀況、識別環境中執行之應用程式所使用的 Java 程式庫潛在漏洞、使用 Java Flight Recorder 進行效能與加密分析,以及在您的環境中管理 Oracle Java Runtimes (JDK 版本)。您可以使用進階功能來管理環境中執行的 Java。

下圖說明此架構。



jms- 社會主題 -oracle.zip

以下小節概略描述如何在受管理執行處理上安裝的 JMS 代理程式與 OCI 上的 JMS 服務之間流動資料:

  • 您可以在受管理的執行處理上安裝代理程式,而且代理程式會向 OCI 註冊。
  • 您可以設定或啟用 JMS Plugin (將 JMS 機組當作參數傳送)。JMS 代理程式現在與想要的 JMS 機組關聯。
  • 註冊的 JMS 代理程式會輪詢 JMS 的工作。JMS 會以適當的工作要求 (如果有的話) 回應輪詢。
  • JMS 代理程式會定期掃描受管理執行處理,以進行 Java 安裝或使用狀況追蹤器中的項目,並將 Java 測量結果和 Java 描述資料傳送至 OCI。

如需有關 JMS 代理程式與 OCI 服務之間的資料流程,以及在您的主機機器 (內部部署) 上安裝之 JMS 代理程式與在 OCI 中執行之 JMS 之間流量的詳細資訊,請參閱監控及管理您的 Java 與 Java 應用程式安裝

此架構具有下列元件:

  • 地區

    OCI 區域是本地化的地理區域,包含一或多個代管可用性網域的資料中心。區域獨立於其他地區,且遠距離能夠分離它們 (跨國家,甚至是大陸)。

  • 可用性網域

    可用性網域是區域內獨立的資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域不會共用基礎架構,例如電源或冷卻系統,或內部可用性網域網路。因此,一個可用性網域發生故障不應影響該區域中的其他可用性網域。

  • Tenancy

    租用戶是一個安全且隔離的分割區,當您在註冊 OCI 時,Oracle 會在 Oracle Cloud 內建立此分割區。您可以在租用戶內的 OCI 上建立、組織及管理您的資源。租用戶與公司或組織同義字。通常,公司會有單一租用戶,並反映其在該租用戶內的組織結構。單一租用戶通常與單一訂閱關聯,而單一訂閱通常只有一個租用戶。

  • 區間

    區間是 OCI 租用戶內的跨區域邏輯分割區。使用區間組織、控制存取,以及設定 Oracle Cloud 資源的使用配額。在指定的區間中,您可以定義控制資源存取和設定權限的原則。

  • 虛擬雲端網絡 (VCN) 與子網路

    虛擬雲端網路 (VCN) 是您在 OCI 區域中設定的可自訂軟體定義網路。與傳統資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的無類別網域間路由 (CIDR) 區塊,您可以在建立 VCN 之後變更這些區塊。您可以將 VCN 分隔到子網路中,而子網路的作用領域可以調整到某個區域或可用性網域。每個子網路都是由連續的位址範圍所組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用網路或專用網路。

  • 執行處理集區

    執行處理集區是區域內的一組執行處理,這些執行處理是從相同的執行處理組態建立,並以群組方式管理。

  • 內部部署網路

    這是貴組織使用的區域網路。

  • OCI API 閘道

    Oracle Cloud Infrastructure API Gateway 可讓您發布具有可從網路存取之專用端點的 API,並視需要向公用網際網路公開這些 API。端點支援 API 驗證、要求與回應轉換、CORS、認證與授權,以及要求限制。

  • 動態路由閘道 (DRG)

    DRG 是一個虛擬路由器,提供相同區域 VCN 之間、VCN 與區域外部網路 (例如另一個 OCI 區域中的 VCN、內部部署網路,或其他雲端提供者中的網路) 的專用網路流量路徑。

  • 服務閘道

    服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。從 VCN 到 Oracle 服務的流量會透過 Oracle 網路結構傳送,而不會周遊網際網路。

  • Oracle Autonomous Database

    Oracle Autonomous Database 是完全受管理且預先設定的資料庫環境,可用於交易處理和資料倉儲工作負載。您不需要設定或管理任何硬體,或安裝任何軟體。OCI 會處理資料庫的建立、備份、修正、升級及調整。

  • 堡壘主機

    堡壘主機是一個運算執行處理,可作為雲端外部拓樸的安全、受控制的進入點。堡壘主機通常佈建在非軍事區域 (DMZ) 中。它可以讓您將機密資源放在無法直接從雲端外部存取的專用網路中,以保護機密資源。拓樸具有單一的已知進入點,您可以定期監視與稽核。因此,您可以避免讓拓樸更敏感的元件洩漏存取。

  • Oracle Cloud 代理程式

    Oracle Cloud 代理程式是一種輕量型處理作業,可管理 OCI 上運算執行處理上執行的 Plugin 生命週期。JMS Plugin 會從您在 OCI 中受管理執行處理上部署的環境收集 Java 描述資料。JMS Plugin 會將此 Java 描述資料擷取至 OCI 中的 JMS 服務。

  • OCI Compute

    您可以使用 Oracle Cloud Infrastructure Compute 在雲端佈建及管理運算主機。您可以啟動資源配置符合 CPU、記憶體、網路頻寬和儲存資源需求的運算執行處理。建立運算執行處理之後,您可以安全地存取、重新啟動、連附及取消連附磁碟區,然後在不再需要運算執行處理時予以終止。

  • OCI DNS

    Oracle Cloud Infrastructure 網域名稱系統 (DNS) 服務是高度可擴展的全球任一傳播網域名稱系統 (DNS) 網路,可提供增強的 DNS 效能、抗逆力和可擴展性,讓一般使用者可以隨時隨地快速連線至網際網路應用程式。

  • Kafka 串流

    Kafka 串流是用於建置應用程式和微服務的從屬端程式庫,其中輸入和輸出資料會儲存在 Kafka 叢集中。它結合了在用戶端上撰寫和部署標準 Java 和 Scala 應用程式的簡單性,以及 Kafka 伺服器端叢集技術的優點。

  • OCI 記錄日誌
    Oracle Cloud Infrastructure Logging 是可高度擴展且完全受管理的服務,可讓您從雲端資源存取下列類型的日誌:
    • 稽核日誌:與 OCI Audit 產生之事件相關的日誌。
    • 服務日誌:由個別服務 (例如 OCI API GatewayOCI EventsOCI FunctionsOCI Load BalancingOCI Object Storage 和 VCN 流量日誌) 發布的日誌。
    • 自訂日誌:包含自訂應用程式、其他雲端提供者或內部部署環境之診斷資訊的日誌。
  • Oracle Management Agent

    Oracle Management Agent 是一項服務,可在 Oracle Cloud Infrastructure 與內部部署管理的執行處理之間,提供低延遲的互動式通訊和資料收集。管理代理程式會從您想要監督的來源收集資料。管理代理程式服務是 Oracle Cloud Service,可管理管理代理程式的生命週期以及服務的 Plug-in。

  • OCI 監控

    Oracle Cloud Infrastructure Monitoring 主動並被動監控您的雲端資源,並使用警訊在指標符合指定的觸發器時通知您。

  • OCI Object Storage

    OCI Object Storage 可讓您存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及豐富的內容 (例如影像和影片)。您可以直接從應用程式或雲端平台內安全地儲存資料。您可以擴展儲存,而不會發生任何效能或服務可靠性的降低情況。

    針對需要快速、立即及頻繁存取的「熱」儲存使用標準儲存。將封存儲存用於保留一段很長的時間和很少或很少存取的「冷」儲存。

  • 原則

    Oracle Cloud Infrastructure Identity and Access Management 原則會指定誰可以存取哪些資源,以及存取方式。會在群組和區間層級授予存取權,這表示您可以撰寫一個原則,讓群組在特定區間或租用戶內擁有特定類型的存取權。

  • 安全清單

    您可以為每個子網路建立安全規則,指定允許進出子網路的來源、目的地和流量類型。

  • 安全區

    安全區域會對整個區間 (例如加密資料) 強制實行金鑰 Oracle 安全最佳做法,以防止公用存取網路。安全區域會與相同名稱的區間關聯,並且包含適用於該區間及其子區間的安全區域原則 (處方)。您無法新增或移動標準區間至安全區域區間。

  • OCI 保存庫

    Oracle Cloud Infrastructure Vault 可讓您建立並集中管理加密金鑰,這些加密金鑰可保護您的資料,以及用來保護雲端資源存取的安全機密證明資料。預設金鑰管理是 Oracle 管理的金鑰。您也可以使用使用使用 OCI Vault 的客戶管理金鑰。OCI Vault 提供一組豐富的 REST API 來管理保存庫和金鑰。

  • OCI 工作流程

    Oracle Cloud Infrastructure Workflow 是無伺服器工作流程引擎,具備適用於開發人員和架構師的圖形化流程設計工具。它可加速建立、執行及協調 OCI 服務,例如 OCI Functions 或 AI/ML。

注意事項

啟用進階功能時,您應該考慮下列幾點。

  • 使用「JMS 進階」功能需要其他原則
  • 加密事件分析、效能分析以及 JDK Flight Recorder 可能會增加應用程式 JVM 的整體記憶體使用量。
  • 對於 Crypto 事件分析、效能分析以及 JDK Flight Recorder,應用程式的 Java 程式實際執行版本必須是 8u361 或更新的版本。
  • 每個 JFR 錄製的密碼編譯事件分析和效能分析上限設為 4096 MB。
  • 使用 OCI Object StorageOCI Logging 服務來儲存 JMS 進階功能產生的資料,可能會收取額外費用。
  • Java 生命週期管理
    • 「部署規則集」功能僅適用於 Java 8 程式實際執行。機組之受管理執行處理的原則 Jar 分佈額外負荷。
    • Java 安裝可能會更改受管理執行處理上的 Java 系統組態。請依照所選 Java 程式實際執行版本和受管理執行處理平台的安裝指示進行。
    • 移除 Java 程式實際執行可能會更改受管理執行處理上的 Java 系統組態。例如,如果選取的 Java 程式實際執行是受管理執行處理上唯一設定的系統程式實際執行。
  • 進階使用追蹤
    • 若要偵測執行中的 Java 應用程式伺服器,其 Java 程式實際執行至少必須為 8u361 或更新版本。
    • 磁帶櫃偵測可能會大幅增加受管理執行處理在應用程式及其磁帶櫃檢查期間的資源使用量,尤其是 CPU 和 IO 使用量可能會增加。
    • 視在受管理執行處理上偵測到的應用程式伺服器和程式庫數目而定,傳送至 JMS 的有效負載可能會比平常高。在正常情況下,它應該在數百 KB 的範圍內。
  • 加密事件分析
    • 視錄製期間每個應用程式使用 JVM 安全相關子系統的數量而定,JFR 錄製檔的最終大小可能會有所不同,在一般情況下,錄製檔的大小會介於數百 KB 到幾 MB 之間。
    • 如果應用程式閒置,某些偵測機制可能無法回報潛在的問題。
    • 視受管理執行處理數目、應用程式數目以及每筆記錄的大小而定,可能會增加網路使用量。將 JFR 錄製項目上傳至 OCI 進行分析時會使用網路。
  • 效能分析
    • 每個 JFR 錄製檔的最終大小取決於應用程式行為。擷取數個與效能相關的 JFR 事件,例如資源回收、記憶體等等的相關詳細資訊。在一般情況下,一般記錄大小是幾 MB。
    • 如果應用程式閒置,某些偵測機制可能無法回報潛在的效能問題。
    • 視受管理執行處理數目和每筆記錄的大小而定,可能會增加網路使用量。將 JFR 錄製項目上傳至 OCI 進行分析時會使用網路。
  • JDK Flight Recorder (JFR)
    • JFR 錄製檔的最終大小取決於選取的設定檔或提供的自訂 JFC 組態,影響大小的另一個因素則是針對應用程式選取的錄製持續時間。
  • Java 遷移分析
    • 資源使用率可能會在應用程式分析期間增加。
    • 分析的結果通常為數百 KB,視應用程式本身的大小及其相依性而定。

某些進階功能 (例如加密分析和效能分析) 仰賴 JVM 連附 API。在工作要求執行期間,JMS Plugin 可能會傳送新事件至機組的產品目錄日誌物件。下列範例有效負載說明在這類情況下將傳遞至機組產品目錄日誌的內容:

{
  "datetime": 1752483223432,
  "logContent": {
    "id": "3d6a9915-af91-4527-a6d4-2a0d86106b15",
    "time": "2025-07-14T08:53:43.432Z",
    "oracle": {
      "compartmentid": "ocid1.compartment.oc1..compartment-id",
      "ingestedtime": "2025-07-14T08:55:27.274970180Z",
      "instanceid": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
      "loggroupid": "ocid1.loggroup.oc1.eu-frankfurt-1.log-group-id",
      "logid": "ocid1.log.oc1.eu-frankfurt-1.log-id",
      "tenantid": "ocid1.tenancy.oc1..tenant-id"
    },
    "source": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
    "specversion": "1.0",
    "subject": "Oracle JMS Plugin",
    "type": "jms.jvm.usage.attach.log",
    "data": {
      "data": {
        "additionalProperties": {
          "java.runtime.name": "Java(TM) SE Runtime Environment",
          "user.dir": "/home/opc/crypto",
          "user.name": "opc"
        },
        "applicationName": "spring-tls-server-1.1.0.jar",
        "classPath": "spring-tls-server-1.1.0.jar",
        "classPathElements": [
          "spring-tls-server-1.1.0.jar"
        ],
        "fleetId": "ocid1.jmsfleet.oc1.eu-frankfurt-1.fleet-id",
        "javaArgs": "n/a",
        "javaCommand": "spring-tls-server-1.1.0.jar --debug",
        "javaDistribution": "Java(TM) SE Runtime Environment",
        "javaHome": "/usr/lib/jvm/jdk-21-oracle-x64",
        "javaMajorVersion": "21",
        "javaVendor": "Oracle Corporation",
        "javaVersion": "21",
        "managedInstanceId": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
        "osArch": "amd64",
        "osName": "Linux",
        "osVersion": "5.15.0-306.177.4.el9uek.x86_64",
        "startTime": "2025-07-14T08:48:34.947541200Z",
        "typeOfStart": "VM start"
      },
      "datacontenttype": "application/json",
      "dataschema": "1.0",
      "id": "3d6a9915-af91-4527-a6d4-2a0d86106b15",
      "source": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
      "specversion": "1.0",
      "time": "2025-07-14T08:53:43.432Z",
      "type": "jms.jvm.usage.attach.log"
    }
  },
  "regionId": "eu-frankfurt-1"
}

其他考慮事項

在 JMS 中送出功能執行要求之後,JMS 服務會建立由唯一工作要求 OCID 識別的工作要求。以下是從 OCI 雲端主控台追蹤工作要求進度的一般程序。

  • 按一下 Observability & ManagementJava Management機組,瀏覽您的機組。
  • 選取您的機組。
  • 按一下機組的工作要求區段。

如何追蹤 OCI CLI 工作要求的進度:

  • 執行下列命令:
    oci jms work-request get --work-request-id $WORK_REQUEST_OCID
  • 如果您只想瞭解工作要求的目前狀態,可以使用 jq 公用程式執行上述敘述句:
    oci jms work-request get --work-request-id $WORK_REQUEST_OCID | jq .data.status

JMS API 也提供送出及追蹤功能工作要求的功能,可透過 OCI SDK 存取。