设置 Agent for Oracle

您可以在主机上与 Oracle 数据库一起设置 Google Cloud的 Agent for Compute Workloads,以收集指标并监控 Oracle 数据库工作负载。

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

代理通过查询 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*
  • 企业版
  • 标准版
  • Express(免费)版

前提条件

在安装 Agent for Compute Workloads 以监控 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 代理后,请验证代理的安装。

验证代理安装

如需验证代理是否正在运行,请选择您的操作系统,然后按照以下步骤操作:

  1. 使用 SSH 连接到您的虚拟机实例。
  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.
    

    如果代理未在运行,请尝试重启代理

配置代理

安装 Agent for Compute Workloads 后,您可以选择更新代理的配置文件,以启用该代理的其他功能。如需查看可为 Oracle 数据库工作负载配置的参数列表,请参阅配置参数

配置代理后,您可以再次验证安装,以确保代理已正确配置。

配置参数

适用于计算工作负载的代理支持以下 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"

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