为 Oracle 工作负载设置代理

本文档介绍了如何在运行 Oracle 数据库工作负载的 Compute Engine 实例上安装、配置和验证适用于 Compute 工作负载的代理。

代理通过查询 Oracle 数据库性能视图(例如 V$DATABASEV$INSTANCEV$DATAGUARD_STATS)和数据字典视图(例如 DBA_DATA_FILESDBA_FREE_SPACE)来收集各种 Oracle 指标。然后,这些指标会被发送到 Cloud Monitoring,以便进行可视化和分析。请参阅支持的指标

准备工作

在安装 Agent for Compute Workloads 以监控 Oracle 数据库工作负载之前,请确保满足以下前提条件:

查看系统要求

下表列出了可使用的 Oracle 版本和支持的操作系统版本:

操作系统 Oracle 版本 Oracle 版本
  • Red Hat Enterprise Linux 版本 7、8 和 9
  • Oracle Linux 版本 7、8 和 9
  • Oracle Database 19c
  • Oracle Database 23ai*
  • 企业版
  • 标准版
  • Express(免费)版

向服务账号授予 IAM 角色

适用于计算工作负载的代理使用附加到计算实例的服务账号进行身份验证并访问 Google Cloud 资源。

为了提高安全性,我们建议您使用单用途服务账号,而不是使用 Compute Engine 默认服务账号

为确保服务账号具有让 Agent for Compute Workloads 向Google Cloud 进行身份验证并访问 Google Cloud 资源所需的权限,请让您的管理员为服务账号授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您的管理员还可以通过自定义角色或其他预定义角色向服务账号授予所需的权限。

启用对 Cloud API 的访问权限

Compute Engine 建议将实例配置为允许针对所有 Cloud API 的所有访问权限范围,并且仅使用实例服务账号的 IAM 权限来控制对Google Cloud 资源的访问权限。如需了解详情,请参阅创建使用用户管理的服务账号的虚拟机

如果您限制对 Cloud API 的访问权限,则 Agent for Compute Workloads 要求主机计算实例至少具有以下 Cloud API 访问权限范围:

https://www.googleapis.com/auth/cloud-platform

如需了解详情,请参阅范围最佳实践

如果您是在没有外部 IP 地址的计算实例上运行 Oracle 应用,则需要对该实例的子网启用专用 Google 访问通道,以便 Agent for Compute Workloads 可以访问 Google API 和服务。如需了解如何启用专用 Google 访问通道,请参阅配置专用 Google 访问通道

使用软件包管理器安装和配置代理

本部分介绍如何使用软件包管理器在计算实例上安装适用于 Compute 工作负载的代理,并将其配置为与 Oracle 实例连接。

如需安装适用于 Compute 工作负载的代理,请完成以下步骤:

  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 工作负载的代理后,请验证代理的安装

使用虚拟机扩展程序管理器在一组虚拟机上安装和管理代理

设置虚拟机扩展程序管理器

如需设置虚拟机扩展程序管理器,请完成以下步骤:

在一组虚拟机上安装代理

如需使用虚拟机扩展管理器政策在特定可用区内的虚拟机群上安装最新版本的 Compute 工作负载代理,请完成以下步骤:

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机扩展政策页面。

    前往“虚拟机扩展程序政策”页面

  2. 点击创建扩展程序政策

  3. 名称字段中,输入政策的名称。

  4. 可选:在说明字段中,输入政策的说明。

  5. 优先级字段中,指定一个优先级编号,以解决政策之间的冲突。数字越小,优先级越高。默认值为 1000

  6. 使用区域可用区列表,选择您要应用此政策的可用区。

  7. 扩展程序部分中,点击添加扩展程序,然后执行以下操作:

    1. 扩展程序列表中,选择 Google Cloud 的计算工作负载扩展程序
    2. 版本字段留空。

      这会指示政策安装最新版本的 Agent for Compute Workloads。

    3. 配置文件内容字段中,输入要应用于代理的配置。

      如需了解代理针对 Oracle 工作负载支持的配置参数,请参阅配置参数

    4. 点击完成

  8. 可选:如需将政策发布限制为仅针对所需的虚拟机,请执行以下操作:

    1. 点击添加标签,然后添加用于标识所需虚拟机的标签。
    2. 点击完成
  9. 点击创建

gcloud

gcloud beta compute zone-vm-extension-policies create POLICY_NAME \
    --zone=ZONE \
    --extensions=google-cloud-workload-extension \
    --config-from-file=google-cloud-workload-extension=CONFIG_FILE_PATH \
    [--description="DESCRIPTION" \]
    [--inclusion-labels=KEY_1=VALUE_1 \]
    [--inclusion-labels=KEY_2=VALUE_2,KEY_3=VALUE_3 \]
    [--priority=PRIORITY]

替换以下内容:

  • POLICY_NAME:虚拟机扩展政策的名称。

    如果相应政策已存在于该可用区中,则该命令会失败。

  • ZONE:您要应用此政策的地区。

  • CONFIG_FILE_PATH:本地路径,指向包含 Agent for Compute Workloads 配置的 JSON 文件,该配置用于连接到您的 Oracle 工作负载。

    • 或者,如需以内嵌字符串的形式提供配置,请使用 --config 标志,而不是 --config-from-file。例如 --config=google-cloud-workload-extension="CONFIG"。 Google Cloud 建议您使用 --config-from-file
    • 您可以使用 --config-from-file--config,但不能在同一命令中同时使用这两者。
    • 如需了解代理针对 Oracle 工作负载支持的配置参数,请参阅配置参数
  • DESCRIPTION:政策的可选说明。

  • KEY_1=VALUE_1:以英文逗号分隔的键值对列表,用于定义政策定位虚拟机的标签。

    • 如需让虚拟机成为政策的目标对象,该虚拟机必须具有所有指定的标签。
    • 如果您多次指定 --inclusion-labels,则政策会针对与所提供的任意选择器匹配的虚拟机(逻辑 OR)。如果您省略此标志,则政策会针对指定可用区中的所有虚拟机。
  • PRIORITY:一个介于 065535 之间的整数,用于定义政策的优先级。数字越小,优先级越高。默认值为 1000

示例

以下命令会在名为 test-project 的Google Cloud 项目中创建一个名为 test-agent-policy 的政策,该政策会在部署在可用区 us-centrail-f 中的所有虚拟机上安装最新版本的 Compute 工作负载代理。 agent-config.json 中指定的配置会应用于代理。

gcloud beta compute zone-vm-extension-policies create test-agent-policy  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=google-cloud-workload-extension \
    --config-file-path=google-cloud-workload-extension="/usr/agent-config.json"

验证代理安装

如需验证代理是否按预期运行,请完成以下步骤:

  1. 与您的计算实例建立 SSH 连接。

  2. 检查代理软件包的状态:

    systemctl status google-cloud-workload-agent
    

    如果代理软件包按预期运行,则输出包含 active (running)。例如:

    google-cloud-workload-agent.service - Google Cloud Agent for Compute Workloads
    Loaded: loaded (/usr/lib/systemd/system/google-cloud-workload-agent.service; enabled; vendor preset: disabled)
    Active: active (running) since Sun 2025-07-30 18:59:12 UTC; 10s ago
    Main PID: 14412 (google_cloud_sq)
      Tasks: 7
    Memory: 12.9M (max: 1.0G limit: 1.0G available: 1011.0M)
    CGroup: /system.slice/google-cloud-workload-agent.service
            └─ 14412 /usr/bin/google_cloud_sql_server_agent --action=run

    配置参数

    适用于计算工作负载的代理支持以下 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 发现是否处于活跃状态。

    默认值为 true

    oracle_configuration.oracle_discovery.update_frequency

    Int

    可选。指定采样时间间隔(以秒为单位),用于确定 Agent for Compute Workloads 运行发现流程的频率。默认值为 3600 秒(1 小时)。

    请确保该值以小写字母“s”结尾,表示秒。例如:30s

    oracle_configuration.oracle_metrics.enabled

    Boolean

    可选。如需启用 Agent for Compute Workloads 以收集 Oracle 监控指标,请指定 true。默认值为 false

    仅当您指定 oracle_metrics.enabled: true 时,以下子参数才适用。

    oracle_configuration.oracle_metrics.collection_frequency

    Int

    可选。指定采样时间间隔(以秒为单位),用于确定 Agent for Compute Workloads 查询 Oracle 数据库实例以收集 Oracle 监控指标的频率。默认值为 60 秒。

    请确保该值以小写字母“s”结尾,表示秒。例如:30s

    oracle_configuration.oracle_metrics.query_timeout

    String

    可选。指定对 Oracle 数据库实例执行的每个查询的超时时间。默认值为 10 秒。

    请确保该值以小写字母“s”结尾,表示秒。例如:30s

    oracle_configuration.oracle_metrics.connection_parameters.username

    String

    指定用于查询 Oracle 数据库实例的用户账号。

    确保此用户具有读取 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 数据库实例的服务名称。

    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 中存储用户账号密码的 Secret 的名称。

    收集和查看 Oracle 指标

    您可以为 Oracle 数据库工作负载启用指标收集功能。请参阅支持的指标

    启用指标收集

    如需启用使用 Agent for Compute Workloads 收集 Oracle 指标的功能,请执行以下操作:

    1. 使用 SSH 连接到您的虚拟机实例。

    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 数据库中创建一个用于监控的用户,并为其设置与您在前提条件中创建的 Secret 相匹配的密码。

      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 中的 Secret 名称。

      以下是一个配置文件示例:

      {
        "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. 点击 Metrics Explorer
    3. 查找资源类型和指标下,执行以下操作:
      1. 资源类型部分,选择虚拟机实例
      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

    管理代理

    重启代理

    如果 Agent for Compute Workloads 停止运行或您要更新其配置,请重启该代理。

    1. 使用 SSH 连接到虚拟机实例。
    2. 运行以下命令:

      sudo systemctl restart google-cloud-workload-agent

    检查代理的版本

    如需查看代理的版本,请完成以下步骤:

    1. 使用 SSH 连接到虚拟机实例。
    2. 运行以下命令:

      yum info google-cloud-workload-agent
      

    检查更新

    1. 使用 SSH 连接到虚拟机实例。
    2. 运行以下命令:

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

    更新代理

    为确保您使用的是最新版本的代理,请定期检查更新并更新代理:

    1. 使用 SSH 连接到虚拟机实例。
    2. 运行以下命令:

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

    查看代理日志

    Agent for Compute Workloads 日志位于 /var/log/google-cloud-workload-agent.log

    日志详细程度由 log_level 参数控制。设置 DEBUG 日志级别会包含更多信息,以便排查特定问题,但会生成明显更大的日志。

    默认情况下,Agent for Compute Workloads 的日志会从虚拟机实例重定向到 Cloud Logging

    如需在 Logging 中查看代理的日志,请按以下步骤操作:

    1. 在 Google Cloud 控制台中,前往 Logs Explorer 页面。

      转到日志浏览器

    2. 转到查询窗格。

    3. 资源下拉菜单中选择全局,然后点击应用

    4. 在查询编辑器中,输入 google-cloud-workload-agent

    5. 点击运行查询

    您可以查看在所有虚拟机实例上运行的代理生成的日志。您可以过滤特定实例的日志。

    在 Cloud Logging 中配置代理日志

    如需停用将代理的日志默认重定向到 Cloud Logging 的功能,请按以下步骤操作:

    1. 使用 SSH 连接到您的虚拟机实例。

    2. 打开代理的配置文件:

      /etc/google-cloud-workload-agent/configuration.json
    3. 对于 log_to_cloud 属性,将值更新为 false

    4. 保存配置文件。

    5. 重启代理以使此更改生效。

    问题排查

    以下部分介绍了与使用 Oracle 数据库工作负载代理相关的常见问题及其原因和解决方法。

    IAM 权限不足

    问题:Agent for Compute Workloads 日志显示 IAM 权限不足错误。

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

    原因:代理使用的服务账号没有访问 Google Cloud API 所需的 IAM 权限,或者 Secret Manager 中没有 Oracle 用户的密码。

    解决方法:如需解决此问题,请确保虚拟机服务账号具有前提条件中提及的 IAM 角色和权限。

    身份验证范围不足

    问题:Agent for Compute Workloads 日志显示身份验证范围不足。

    googleapi: Error 403: Request had insufficient authentication scopes.
    

    原因:代理使用的服务账号没有所需的访问权限范围。

    解决方法:如需解决此问题,请将虚拟机的访问权限范围配置为 cloud-platform

    指标未显示在 Cloud Monitoring 中

    问题:Cloud Monitoring 中未显示 Compute Workloads 代理的指标。

    原因:

    以下是此问题的可能原因:

    • Agent for Compute Workloads 使用的服务账号缺少必要的 IAM 权限。
    • 代理使用的 Oracle 用户没有足够的权限来查询性能视图。
    • 代理的配置存在错误。

    解决方法

    • 如需解决服务账号权限不足的问题,请执行以下操作:

      1. 在 Google Cloud 控制台中,前往虚拟机实例详情页面,然后记下运行代理的实例所使用的服务账号。
      2. 前往 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 连接到您的虚拟机实例。
      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"
    

    解决方法:如需解决此问题,请使用配置参数初始化凭据配置。