本文档介绍了如何在运行 Oracle 数据库工作负载的 Compute Engine 实例上安装、配置和验证适用于 Compute 工作负载的代理。
代理通过查询 Oracle 数据库性能视图(例如 V$DATABASE、V$INSTANCE 和 V$DATAGUARD_STATS)和数据字典视图(例如 DBA_DATA_FILES 和 DBA_FREE_SPACE)来收集各种 Oracle 指标。然后,这些指标会被发送到 Cloud Monitoring,以便进行可视化和分析。请参阅支持的指标。
准备工作
在安装 Agent for Compute Workloads 以监控 Oracle 数据库工作负载之前,请确保满足以下前提条件:
创建一个 Compute Engine 实例(如果您还没有)。将访问权限范围配置为
cloud-platform。启用与 Google Cloud API 端点的连接,可通过公共网络访问或专用网络访问实现。
如果您想启用指标收集,请在 Secret Manager 中创建 Secret,以存储稍后在本指南中创建的数据库用户的数据库密码。
在本指南的示例中,我们假设该值为
wlmagent-password。
查看系统要求
下表列出了可使用的 Oracle 版本和支持的操作系统版本:
| 操作系统 | Oracle 版本 | Oracle 版本 |
|---|---|---|
|
|
|
向服务账号授予 IAM 角色
适用于计算工作负载的代理使用附加到计算实例的服务账号进行身份验证并访问 Google Cloud 资源。
为了提高安全性,我们建议您使用单用途服务账号,而不是使用 Compute Engine 默认服务账号。
为确保服务账号具有让 Agent for Compute Workloads 向Google Cloud 进行身份验证并访问 Google Cloud 资源所需的权限,请让您的管理员为服务账号授予项目的以下 IAM 角色:
-
Compute Viewer (
roles/compute.viewer):用于从 Compute 实例中收集指标。 -
Workload Manager Insights Writer (
roles/workloadmanager.insightWriter):用于将数据写入 Workload Manager 数据仓库。 -
(推荐)Logs Writer (
roles/logging.logWriter): 用于将代理日志发送到 Cloud Logging。 -
(可选)Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor):如果您使用 Secret Manager 存储用于连接到 Oracle 实例的密码。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您的管理员还可以通过自定义角色或其他预定义角色向服务账号授予所需的权限。
启用对 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 工作负载的代理,请完成以下步骤:
创建代码库配置文件。
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
更新软件包管理器的元数据:
sudo yum makecache
安装
google-cloud-workload-agentrpm 软件包:sudo yum install google-cloud-workload-agent
安装适用于 Oracle 工作负载的代理后,请验证代理的安装。
使用虚拟机扩展程序管理器在一组虚拟机上安装和管理代理
设置虚拟机扩展程序管理器
如需设置虚拟机扩展程序管理器,请完成以下步骤:
- 在 VM Extension Manager 文档中,查看准备工作部分。
设置创建和管理虚拟机扩展程序管理器政策所需的 IAM 角色。如需了解详情,请参阅以下内容:
在一组虚拟机上安装代理
如需使用虚拟机扩展管理器政策在特定可用区内的虚拟机群上安装最新版本的 Compute 工作负载代理,请完成以下步骤:
控制台
在 Google Cloud 控制台中,前往虚拟机扩展政策页面。
点击创建扩展程序政策。
在名称字段中,输入政策的名称。
可选:在说明字段中,输入政策的说明。
在优先级字段中,指定一个优先级编号,以解决政策之间的冲突。数字越小,优先级越高。默认值为
1000。使用区域和可用区列表,选择您要应用此政策的可用区。
在扩展程序部分中,点击添加扩展程序,然后执行以下操作:
- 从扩展程序列表中,选择 Google Cloud 的计算工作负载扩展程序。
将版本字段留空。
这会指示政策安装最新版本的 Agent for Compute Workloads。
在配置文件内容字段中,输入要应用于代理的配置。
如需了解代理针对 Oracle 工作负载支持的配置参数,请参阅配置参数。
点击完成。
可选:如需将政策发布限制为仅针对所需的虚拟机,请执行以下操作:
- 点击添加标签,然后添加用于标识所需虚拟机的标签。
- 点击完成。
点击创建。
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:一个介于0到65535之间的整数,用于定义政策的优先级。数字越小,优先级越高。默认值为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"
验证代理安装
如需验证代理是否按预期运行,请完成以下步骤:
与您的计算实例建立 SSH 连接。
检查代理软件包的状态:
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
DEBUGINFOWARNINGERROR
INFO。log_to_cloudBoolean如需将代理的日志重定向到 Cloud Logging,请指定
true。默认值为true。oracle_configuration.enabledBoolean可选。确定 Oracle 服务是否处于活动状态。如果设置为
true,或者未设置但存在工作负载,您可以配置发现和指标收集。如果设置为false,则 Oracle 服务及其相关功能将被停用。仅当您指定 oracle_configuration.enabled: true时,以下子参数才适用。oracle_configuration.oracle_discovery.enabledBoolean可选。确定 Oracle 发现是否处于活跃状态。
默认值为
true。oracle_configuration.oracle_discovery.update_frequencyInt可选。指定采样时间间隔(以秒为单位),用于确定 Agent for Compute Workloads 运行发现流程的频率。默认值为 3600 秒(1 小时)。
请确保该值以小写字母“s”结尾,表示秒。例如:
30s。oracle_configuration.oracle_metrics.enabledBoolean可选。如需启用 Agent for Compute Workloads 以收集 Oracle 监控指标,请指定
true。默认值为false。仅当您指定
oracle_metrics.enabled: true时,以下子参数才适用。oracle_configuration.oracle_metrics.collection_frequencyInt可选。指定采样时间间隔(以秒为单位),用于确定 Agent for Compute Workloads 查询 Oracle 数据库实例以收集 Oracle 监控指标的频率。默认值为 60 秒。
请确保该值以小写字母“s”结尾,表示秒。例如:
30s。oracle_configuration.oracle_metrics.query_timeoutString可选。指定对 Oracle 数据库实例执行的每个查询的超时时间。默认值为 10 秒。
请确保该值以小写字母“s”结尾,表示秒。例如:
30s。oracle_configuration.oracle_metrics.connection_parameters.usernameString指定用于查询 Oracle 数据库实例的用户账号。
确保此用户具有读取 Oracle 数据库中的性能视图所需的权限。
oracle_configuration.oracle_metrics.connection_parameters.hostString指定托管数据库实例的本地机器的标识符。
oracle_configuration.oracle_metrics.connection_parameters.portInt指定 Oracle 数据库实例接收查询的端口。
oracle_configuration.oracle_metrics.connection_parameters.service_nameString指定您希望代理监控的 Oracle 数据库实例的服务名称。
oracle_configuration.oracle_metrics.connection_parameters.secret.project_idString指定 Secret Manager 的项目 ID,以检索向数据库发出查询的用户的密码。
oracle_configuration.oracle_metrics.connection_parameters.secret.secret_nameString指定 Secret Manager 中存储用户账号密码的 Secret 的名称。
收集和查看 Oracle 指标
您可以为 Oracle 数据库工作负载启用指标收集功能。请参阅支持的指标。
启用指标收集
如需启用使用 Agent for Compute Workloads 收集 Oracle 指标的功能,请执行以下操作:
使用 SSH 连接到您的虚拟机实例。
以 Oracle OS 用户身份运行
oraenv工具,以设置环境变量。我们假设您已在/etc/oratab文件中定义了oracle用户和ORACLE_SID。sudo su - oracle export PATH=$PATH:/usr/local/bin . oraenv sqlplus / as sysdba
以
SYSDBA或SYSOPER用户身份在 Oracle 数据库中创建一个用于监控的用户,并为其设置与您在前提条件中创建的 Secret 相匹配的密码。CREATE USER wlmagent IDENTIFIED BY password;
以
SYSDBA或SYSOPER用户身份,向监控用户授予以下权限,以便查询性能视图:SESSIONSELECT_CATALOG_ROLESYSDG
GRANT CREATE SESSION,SELECT_CATALOG_ROLE,SYSDG TO wlmagent;
退出
sqlplus和oracle用户。以根用户身份,使用您偏好的编辑器修改代理的配置文件。
sudo nano /etc/google-cloud-workload-agent/configuration.json
在配置文件中,修改
oracle_metrics部分以进行以下更新:- 将参数
enabled设置为true。 - 设置
service_name参数以指定您希望代理监控的 Oracle 实例的服务名称。 - 指定代理连接到数据库所用的 Oracle 用户名。
- 设置
host和port参数,以便代理连接到您的数据库。 - 设置
secret参数,以便代理检索用户名对应的密码:project_id:包含 Secret Manager 数据的项目的 ID。secret_name:Secret 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" } } ] } } }- 将参数
保存配置文件。
重启代理以使新设置生效。
查看指标
您可以使用 Metrics Explorer 查看收集的指标并监控 Oracle 性能和状态,也可以导入自定义信息中心。
在 Metrics Explorer 中查看指标
如需在 Metrics Explorer 中查看 Oracle 指标,请执行以下操作:
- 在 Google Cloud 控制台中,前往 Monitoring。
- 点击 Metrics Explorer。
- 在查找资源类型和指标下,执行以下操作:
- 在资源类型部分,选择虚拟机实例。
- 对于指标,请选择要查看的 Oracle 指标。
您可以查看所选 Oracle 指标的实时数据和历史数据,并根据需要使用过滤条件和聚合。
导入自定义信息中心
如需查看代理收集的 Oracle 指标,您可以按照创建和管理自定义信息中心中的说明创建自定义 Cloud Monitoring 信息中心。
我们提供了一个示例信息中心
oracle-status-overview.json以及有关如何导入该信息中心的说明。oracle-status-overview.json信息中心显示了以下 Oracle 指标图表:- 数据库时间细分
- 数据库内存用量
- 按等待类别划分的平均活跃会话数
- 磁盘 I/O
- CPU 利用率
- 网络流量
如需导入
oracle-status-overview.json信息中心,请执行以下操作:验证 gcloud CLI 是否已安装且为最新版本。如需查看相关说明,请参阅安装 gcloud CLI。
从 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
运行以下命令以导入信息中心:
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_cpuSQL 语句的执行时长
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
-
读取操作(小规模 + 大规模)的总次数
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此指标可具有以下值:
UNKNOWN0STARTED1MOUNTED2OPEN3OPEN MIGRATE4开放模式
instance/db_open_mode此指标可具有以下值:
UNKNOWN0MOUNTED1READ WRITE2READ ONLY3READ ONLY WITH APPLY4
-
重做应用延迟时间(以秒为单位)
dataguard/apply_lag重做传输延迟(以秒为单位)
dataguard/transport_lag
管理代理
重启代理
如果 Agent for Compute Workloads 停止运行或您要更新其配置,请重启该代理。
- 使用 SSH 连接到虚拟机实例。
运行以下命令:
sudo systemctl restart google-cloud-workload-agent
检查代理的版本
如需查看代理的版本,请完成以下步骤:
- 使用 SSH 连接到虚拟机实例。
运行以下命令:
yum info google-cloud-workload-agent
检查更新
- 使用 SSH 连接到虚拟机实例。
运行以下命令:
sudo yum check-update google-cloud-workload-agent
更新代理
为确保您使用的是最新版本的代理,请定期检查更新并更新代理:
- 使用 SSH 连接到虚拟机实例。
运行以下命令:
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 中查看代理的日志,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Logs Explorer 页面。
转到查询窗格。
从资源下拉菜单中选择全局,然后点击应用。
在查询编辑器中,输入
google-cloud-workload-agent。点击运行查询。
您可以查看在所有虚拟机实例上运行的代理生成的日志。您可以过滤特定实例的日志。
在 Cloud Logging 中配置代理日志
如需停用将代理的日志默认重定向到 Cloud Logging 的功能,请按以下步骤操作:
使用 SSH 连接到您的虚拟机实例。
打开代理的配置文件:
/etc/google-cloud-workload-agent/configuration.json
对于
log_to_cloud属性,将值更新为false。保存配置文件。
重启代理以使此更改生效。
问题排查
以下部分介绍了与使用 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 用户没有足够的权限来查询性能视图。
- 代理的配置存在错误。
解决方法:
如需解决服务账号权限不足的问题,请执行以下操作:
- 在 Google Cloud 控制台中,前往虚拟机实例详情页面,然后记下运行代理的实例所使用的服务账号。
- 前往 IAM 和管理页面,确保服务账号拥有前提条件中提及的所有必需角色和权限。向服务账号授予任何所需的缺失角色。
如需解决 Oracle 用户权限不足的问题,请执行以下操作:
验证 Oracle 用户是否拥有以下查询性能视图所需的权限:
SESSIONSELECT_CATALOG_ROLESYSDG
运行以下 SQL 命令,授予所有缺失的权限:
-- Grant the "wlmagent" user the required permissions GRANT CREATE SESSION,SELECT_CATALOG_ROLE,SYSDG TO USERNAME;
如需解决代理配置错误的问题,请执行以下操作:
- 使用 SSH 连接到您的虚拟机实例。
查看代理的日志,以找出阻止指标收集的任何错误或问题。您可以在
/var/log/google-cloud-workload-agent.log中找到日志。查找权限错误、配置错误或连接问题。
纠正所有错误。
重启代理,并检查是否开始收集指标。
未能加载配置文件
问题:如果配置文件包含无效值,您会看到以下错误。
"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"
解决方法:如需解决此问题,请使用配置参数初始化凭据配置。