設定 Agent for Oracle

您可以在主機上設定 Google Cloud的 Compute Workloads 代理程式,與 Oracle 資料庫並存,以收集指標及監控 Oracle 資料庫工作負載。

本文說明如何在執行 Oracle Database 工作負載的 Compute Engine 執行個體上,安裝、設定及驗證 Compute Workloads 專用代理程式。

代理程式會查詢 Oracle 資料庫效能檢視畫面 (例如 V$DATABASEV$INSTANCEV$DATAGUARD_STATS) 和資料字典檢視畫面 (例如 DBA_DATA_FILESDBA_FREE_SPACE),藉此收集各種 Oracle 指標。這些指標隨後會傳送至 Cloud Monitoring,供您查看及分析。請參閱「支援的指標」。

系統需求

作業系統 Oracle 版本 Oracle 版本
  • Red Hat Enterprise Linux 7、8 和 9 版
  • Oracle Linux 7、8 和 9 版
  • Oracle Database 19c
  • Oracle Database 23ai*
  • Enterprise 版
  • Standard 版
  • Express (免費) 版

必要條件

安裝 Agent for Compute Workloads 來監控 Oracle Database 工作負載之前,請確認符合下列必要條件:

安裝代理程式

如要安裝運算工作負載代理程式,請執行下列操作:

  1. 建立存放區設定檔。

    sudo tee /etc/yum.repos.d/google-cloud-workload-agent.repo << EOM
    [google-cloud-workload-agent]
    name=Google Cloud Workload Agent
    baseurl=https://packages.cloud.google.com/yum/repos/google-cloud-workload-agent-\$basearch
    enabled=1
    gpgcheck=0
    repo_gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    EOM
    
  2. 更新套件管理員的中繼資料。

    sudo yum makecache
    
  3. 安裝 google-cloud-workload-agent rpm 套件。

    sudo yum install google-cloud-workload-agent
    

安裝 Oracle 專用代理程式後,請驗證代理程式安裝作業。

驗證代理程式安裝

如要確認代理程式是否正在執行,請選取您的作業系統,然後按照下列步驟操作:

  1. 使用 SSH 連線至 VM 執行個體。
  2. 執行下列指令:

    systemctl status google-cloud-workload-agent
    

    如果代理程式正常運作,輸出內容會包含 active (running)。 例如:

    google-cloud-workload-agent.service - Google Cloud Workload Agent
    Loaded: loaded (/usr/lib/systemd/system/google-cloud-workload-agent.service; enabled; preset: disabled)
    Active: active (running) since Tue 2024-09-03 22:29:57 UTC; 3s ago
    Main PID: 274972 (google_cloud_wo)
     Tasks: 10 (limit: 100440)
    Memory: 51.2M (max: 1.0G limit: 1.0G available: 972.7M)
       CPU: 625ms
    CGroup: /system.slice/google-cloud-workload-agent.service
           └─274972 /usr/bin/google_cloud_workload_agent startdaemon
    
    Sep 03 22:29:57 my_gce_instance systemd[1]: Started Google Cloud Workload Agent.
    

    如果代理程式未執行,請嘗試重新啟動代理程式

設定代理程式

安裝 Compute Workloads 專用代理程式後,您可以選擇更新代理程式的設定檔,啟用代理程式的其他功能。如需可為 Oracle Database 工作負載設定的參數清單,請參閱「設定參數」。

設定代理程式後,您可以再次驗證安裝,確認代理程式設定正確無誤。

設定參數

運算工作負載代理程式支援 Oracle 的下列設定參數:

參數 說明
log_level

String

如要設定代理程式的記錄層級,請新增記錄層級。 可用的記錄層級如下:
  • DEBUG
  • INFO
  • WARNING
  • ERROR
預設值為 INFO
log_to_cloud

Boolean

如要將代理程式記錄重新導向至 Cloud Logging,請指定 true。預設值為 true

oracle_configuration.enabled

Boolean

(選用步驟) 判斷 Oracle 服務是否處於啟用狀態。如果設為 true,或未設定但工作負載存在,您就可以設定探索功能和指標收集作業。如果設為 false,Oracle 服務及其相關功能就會停用。

只有在指定 oracle_configuration.enabled: true 時,才能使用下列子項參數。
oracle_configuration.oracle_discovery.enabled

Boolean

(選用步驟) 決定 Oracle Discovery 是否處於啟用狀態。

預設值為 true

oracle_configuration.oracle_discovery.update_frequency

Int

(選用步驟) 以秒為單位指定取樣間隔,決定 Agent for Compute Workloads 執行探索程序的頻率。預設值為 3600 秒 (1 小時)。

請務必在值結尾加上小寫的「s」,表示秒數。例如:30s

oracle_configuration.oracle_metrics.enabled

Boolean

(選用步驟) 如要讓運算工作負載代理程式收集 Oracle 監控指標,請指定 true。預設值為 false

只有在指定 oracle_metrics.enabled: true 時,才能使用下列子項參數。

oracle_configuration.oracle_metrics.collection_frequency

Int

(選用步驟) 以秒為單位指定取樣間隔,這會決定 Agent for Compute Workloads 查詢 Oracle Database 執行個體的頻率,以收集 Oracle 監控指標。預設值為 60 秒。

請務必在值結尾加上小寫的「s」,表示秒數。例如:30s

oracle_configuration.oracle_metrics.query_timeout

String

(選用步驟) 為對 Oracle 資料庫執行個體發出的每個查詢指定逾時時間。預設值為 10 秒。

請務必在值結尾加上小寫的「s」,表示秒數。例如:30s

oracle_configuration.oracle_metrics.connection_parameters.username

String

指定用來查詢 Oracle Database 執行個體的使用者帳戶。

請確認這位使用者具備必要權限,可讀取 Oracle 資料庫中的效能檢視畫面。

oracle_configuration.oracle_metrics.connection_parameters.host

String

指定代管資料庫執行個體的本機識別碼。

oracle_configuration.oracle_metrics.connection_parameters.port

Int

指定 Oracle 資料庫執行個體接受查詢的通訊埠。

oracle_configuration.oracle_metrics.connection_parameters.service_name

String

指定要讓代理程式監控的 Oracle Database 執行個體服務名稱。

oracle_configuration.oracle_metrics.connection_parameters.secret.project_id

String

指定 Secret Manager 的專案 ID,以擷取查詢資料庫的使用者密碼。

oracle_configuration.oracle_metrics.connection_parameters.secret.secret_name

String

指定 Secret Manager 中儲存使用者帳戶密碼的密鑰名稱。

收集及查看 Oracle 指標

您可以啟用 Oracle 資料庫工作負載的指標收集功能。請參閱「支援的指標」。

啟用指標收集功能

如要使用 Agent for Compute Workloads 收集 Oracle 指標,請按照下列步驟操作:

  1. 使用 SSH 連線至 VM 執行個體。

  2. 以 Oracle OS 使用者身分執行 oraenv 工具,設定環境變數。我們假設您已在 /etc/oratab 檔案中定義 oracle 使用者和 ORACLE_SID

    sudo su - oracle
    export PATH=$PATH:/usr/local/bin
    . oraenv
    sqlplus / as sysdba
    
  3. SYSDBASYSOPER 使用者身分,在 Oracle Database 中建立用於監控的使用者,並設定與必要條件中建立的密鑰相符的密碼。

    CREATE USER wlmagent IDENTIFIED BY password;
    
  4. SYSDBASYSOPER 使用者身分,授予監控使用者下列權限,以便查詢效能檢視畫面:

    • SESSION
    • SELECT_CATALOG_ROLE
    • SYSDG
    GRANT CREATE SESSION,SELECT_CATALOG_ROLE,SYSDG TO wlmagent;
    
  5. 結束 sqlplusoracle 使用者。

  6. 以超級使用者身分,使用慣用的編輯器編輯代理程式的設定檔。

    sudo nano /etc/google-cloud-workload-agent/configuration.json
    
  7. 在設定檔中,編輯 oracle_metrics 區段,進行下列更新:

    1. 將參數 enabled 設為 true
    2. 設定 service_name 參數,指定要讓代理程式監控的 Oracle 執行個體服務名稱。
    3. 指定代理程式連線至資料庫時使用的 Oracle 使用者名稱。
    4. 設定代理程式的 hostport 參數,以便連線至資料庫。
    5. 設定代理程式的 secret 參數,以擷取使用者名稱的密碼:
      • project_id:包含 Secret Manager 資料的專案 ID。
      • secret_nameSecret Manager 中的密碼名稱。

    以下是設定檔範例:

    {
      "log_level": "INFO",
      "common_discovery": {"collection_frequency": "3600s" },
      "oracle_configuration": {
        "enabled": true,
        "oracle_metrics": {
          "enabled": true,
          "collection_frequency": "30s",
          "connection_parameters": [
            {
              "host": "localhost",
              "port": 1521,
              "service_name": "orcl",
              "username": "wlmagent",
              "secret": {
                "project_id": "my-project",
                "secret_name": "wlmagent_password"
              }
            }
          ]
        }
      }
    }
    
  8. 儲存設定檔。

  9. 重新啟動代理程式,讓新設定生效。

查看指標

您可以透過 Metrics Explorer匯入自訂資訊主頁,查看收集到的指標,並監控 Oracle 效能和狀態。

在 Metrics Explorer 中查看指標

如要在 Metrics Explorer 中查看 Oracle 指標,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Monitoring」
  2. 按一下「指標探索工具」
  3. 在「Find resource type and metric」下方,執行下列操作:
    1. 在「資源類型」部分選取「VM 執行個體」
    2. 在「指標」中,選取要查看的 Oracle 指標。

您可以查看所選 Oracle 指標的即時和歷史資料,並視需要使用篩選器和匯總功能。

匯入自訂資訊主頁

如要查看代理程式收集的 Oracle 指標,請按照「建立及管理自訂資訊主頁」一文的說明,建立自訂 Cloud Monitoring 資訊主頁。

我們提供範例資訊主頁 oracle-status-overview.json 和匯入說明,oracle-status-overview.json 資訊主頁會顯示下列 Oracle 指標圖表:

  • 資料庫時間細目
  • 資料庫記憶體用量
  • 依等待類別劃分的平均有效工作階段數
  • 磁碟 I/O
  • CPU 使用率
  • 網路流量

如要匯入 oracle-status-overview.json 資訊主頁,請按照下列步驟操作:

  1. 確認已安裝最新版 gcloud CLI。如需操作說明,請參閱「安裝 gcloud CLI」。

  2. 從 Agent for Compute Workloads GitHub 存放區下載 oracle-status-overview.json 資訊主頁:

    $ curl -H "Accept: application/vnd.github.v3.raw" -o oracle-status-overview.json https://api.github.com/repos/GoogleCloudPlatform/workloadagent/contents/observability/dashboards/oracle-status-overview.json
    
  3. 執行下列指令匯入資訊主頁:

    gcloud alpha monitoring dashboards create --config-from-file=oracle-status-overview.json
    

    指令執行完畢後,自訂資訊主頁就會在 Cloud Monitoring 中建立。如要瞭解如何查看資訊主頁,請參閱「尋找及查看資訊主頁」。

支援的指標

Agent for Compute Workloads 收集的所有 Oracle 指標,都會顯示在 workload.googleapis.com/oracle 路徑下。

以下列出支援的 Oracle 指標和對應的 Cloud Monitoring 路徑:

  • 程序記憶體

    • 目前使用的程序 (PGA) 記憶體,以位元組為單位。

      process/pga_memory/total_used_size

    • 分配的程序 (PGA) 記憶體,以位元組為單位

      process/pga_memory/total_allocated_size

  • 共用回憶集錦

    • 共用記憶體 (SGA) 項目的大小 (以位元組為單位)

      process/sga_memory/size

  • 系統等待事件

    • 註冊等待類別的等待總數

      sys_wait/count

    • 這個等待類別的總等待時間 (以秒為單位)

      sys_wait/time

    • 這個等待類別中的前景等待總數

      sys_wait/foreground/count

    • 這個等待類別的前景等待時間總計 (以秒為單位)

      sys_wait/foreground/time

  • 系統經過時間

    • 執行資料庫使用者層級呼叫所經過的時間 (以秒為單位)

      sys_time/db_time

    • 資料庫使用者層級呼叫耗費的 CPU 作業時間 (以秒為單位)

      sys_time/db_cpu

    • SQL 陳述式執行的時間量

      sys_time/sql_execute_elapsed_time

    • 剖析 SQL 陳述式所花費的時間量

      sys_time/parse_time_elapsed

    • 執行 PL/SQL 解譯器所經過的時間量

      sys_time/pl_sql_execution_elapsed_time

    • 資料庫背景程序耗費的時間 (以秒為單位)

      sys_time/background_elapsed_time

  • I/O 統計資料

    • 讀取作業總數 (小型 + 大型)

      iostat/read_ops_count

    • 寫入作業總數 (小型 + 大型)

      iostat/write_ops_count

    • 讀取的位元組總數

      iostat/read_bytes_count

    • 寫入的位元組總數

      iostat/write_bytes_count

    • 每項 I/O 作業的平均延遲時間

      iostat/average_latency_seconds

  • 資料檔案

    • 資料檔案的配置大小 (以位元組為單位)

      data_files/total_bytes

    • 目前使用的資料檔案空間 (以位元組為單位)

      data_files/bytes_used

    • 資料檔案可用空間 (以位元組為單位)

      data_files/available_bytes

    • 資料檔案自動擴充限制 (以位元組為單位)

      data_files/max_bytes

    • 已使用的資料檔案百分比

      data_files/percent_used

  • 資料庫執行個體

    • 執行個體運作時間 (以秒為單位)

      instance/uptime

    • 執行個體狀態

      instance/status

      這項指標可能的值如下:

      UNKNOWN 0
      STARTED 1
      MOUNTED 2
      OPEN 3
      OPEN MIGRATE 4
    • 開放模式

      instance/db_open_mode

      這項指標可能的值如下:

      UNKNOWN 0
      MOUNTED 1
      READ WRITE 2
      READ ONLY 3
      READ ONLY WITH APPLY 4
  • Oracle Data Guard

    • 重做套用延遲時間 (以秒為單位)

      dataguard/apply_lag

    • 重做傳輸延遲 (以秒為單位)

      dataguard/transport_lag

管理代理程式

重新啟動代理程式

如果 Compute Workloads 代理程式停止運作或您更新其設定,請重新啟動代理程式。

  1. 使用 SSH 連線至 VM 執行個體。
  2. 執行下列指令:

    sudo systemctl restart google-cloud-workload-agent

檢查代理程式版本

如要查看代理程式版本,請完成下列步驟:

  1. 使用 SSH 連線至 VM 執行個體。
  2. 執行下列指令:

    yum info google-cloud-workload-agent
    

檢查更新

  1. 使用 SSH 連線至 VM 執行個體。
  2. 執行下列指令:

    sudo yum check-update google-cloud-workload-agent

更新代理程式

為確保您使用的是最新版代理程式,請定期檢查更新並更新代理程式:

  1. 使用 SSH 連線至 VM 執行個體。
  2. 執行下列指令:

    sudo yum --nogpgcheck update google-cloud-workload-agent

查看代理程式記錄

您可以在 /var/log/google-cloud-workload-agent.log 找到 Agent for Compute Workloads 記錄。

記錄詳細程度由 log_level 參數控制。設定 DEBUG 記錄層級包含其他資訊,可協助排解特定問題,但會產生大量記錄。

根據預設,Compute Workloads 專用代理程式的記錄檔會從 VM 執行個體重新導向至 Cloud Logging

如要在 Logging 中查看代理程式的記錄,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往「Logs explorer」(記錄檔探索工具)

  2. 前往「查詢」窗格。

  3. 從「資源」下拉式選單中選取「全域」,然後按一下「套用」

  4. 在查詢編輯器中輸入 google-cloud-workload-agent

  5. 點選「執行查詢」

您可以查看在所有 VM 執行個體上執行的代理程式所產生的記錄。您可以篩選特定執行個體的記錄。

在 Cloud Logging 中設定代理程式記錄

如要停用代理程式記錄預設重新導向至 Cloud Logging 的功能,請按照下列步驟操作:

  1. 使用 SSH 連線至 VM 執行個體。

  2. 開啟代理程式的設定檔:

    /etc/google-cloud-workload-agent/configuration.json
  3. log_to_cloud 屬性的值更新為 false

  4. 儲存設定檔。

  5. 重新啟動代理程式,讓這項變更生效。

疑難排解

下列各節提供使用 Oracle Database 工作負載代理程式時的常見問題、原因和解決方法。

身分與存取權管理權限不足

問題:Agent for Compute Workloads 記錄檔顯示 IAM 權限不足錯誤。

googleapi: Error 403: The client is not authorized to make this request.

原因:代理程式使用的服務帳戶沒有必要的 IAM 權限,無法存取 Google Cloud API,或是 Secret Manager 中 Oracle 使用者的密碼。

解決方法:如要解決這個問題,請確認 VM 服務帳戶具備必要條件中提及的 IAM 角色和權限。

驗證範圍不足

問題:Compute Workloads 專用代理程式記錄檔顯示驗證範圍不足。

googleapi: Error 403: Request had insufficient authentication scopes.

原因:代理程式使用的服務帳戶沒有必要的存取範圍。

解決方法:如要解決這個問題,請將 VM 的存取範圍設定為 cloud-platform

Cloud Monitoring 未顯示指標

問題:Cloud Monitoring 中未顯示 Agent for Compute Workloads 的指標。

原因:

這個問題的可能原因如下:

  • Agent for Compute Workloads 使用的服務帳戶缺少必要的 IAM 權限。
  • 代理程式使用的 Oracle 使用者權限不足,無法查詢效能檢視畫面。
  • 代理程式設定有誤。

解決方法:

  • 如要解決服務帳戶權限不足的問題,請按照下列步驟操作:

    1. 前往 Google Cloud 控制台的「VM instance details」(VM 執行個體詳細資料) 頁面,並記下執行代理程式的執行個體所使用的服務帳戶。
    2. 前往「IAM & admin」(IAM 與管理) 頁面,確認服務帳戶具備「必要條件」一節中提及的所有必要角色和權限。將任何缺少的必要角色授予服務帳戶。
  • 如要解決 Oracle 使用者權限不足的問題,請按照下列步驟操作:

    1. 確認 Oracle 使用者具備下列必要權限,可查詢效能檢視畫面:

      • SESSION
      • SELECT_CATALOG_ROLE
      • SYSDG
    2. 執行下列 SQL 指令,授予任何缺少的權限:

      -- Grant the "wlmagent" user the required permissions
      GRANT CREATE SESSION,SELECT_CATALOG_ROLE,SYSDG TO USERNAME;
      
  • 如要解決代理程式設定錯誤的問題,請按照下列步驟操作:

    1. 使用 SSH 連線至 VM 執行個體。
    2. 查看代理程式記錄,找出任何錯誤或問題,避免無法收集指標。您可以在 /var/log/google-cloud-workload-agent.log 找到記錄。

      找出權限錯誤、設定錯誤或連線問題。

    3. 解決所有錯誤。

    4. 重新啟動代理程式,並檢查指標收集作業是否已開始。

無法載入設定檔

問題:如果設定檔含有無效值,您會看到下列錯誤訊息。

"Failed to load configuration","pid":3524,"error":"proto: (line 19:42): unknown
field "{field_name}"

解決方法:如要解決這個問題,請使用「設定參數」中的詳細資料更新設定檔。

無法初始化資料收集作業

問題:安裝代理程式後,如果未更新設定檔,您會看到下列錯誤:

"Failed to initialize guest collection","pid":2112,"error":"invalid value for "user_name" "secret_name"

解決方法:如要解決這個問題,請使用設定參數初始化憑證設定。