您可以在主机上与 Oracle 数据库一起设置 Google Cloud的 Agent for Compute Workloads,以收集指标并监控 Oracle 数据库工作负载。
本文档介绍了如何在运行 Oracle 数据库工作负载的 Compute Engine 实例上安装、配置和验证适用于计算工作负载的代理。
代理通过查询 Oracle 数据库性能视图(例如 V$DATABASE
、V$INSTANCE
和 V$DATAGUARD_STATS
)和数据字典视图(例如 DBA_DATA_FILES
和 DBA_FREE_SPACE
)来收集各种 Oracle 指标。然后,这些指标会被发送到 Cloud Monitoring,以便进行可视化和分析。请参阅支持的指标。
系统要求
操作系统 | Oracle 版本 | Oracle 版本 |
---|---|---|
|
|
|
前提条件
在安装 Agent for Compute Workloads 以监控 Oracle 数据库工作负载之前,请确保满足以下前提条件:
创建一个 Compute Engine 实例(如果您还没有)。将访问权限范围配置为
cloud-platform
。启用与 Google Cloud API 端点的连接,可通过公共网络访问或专用网络访问。
如果您想启用指标收集,请在 Secret Manager 中创建 Secret,以存储稍后在本指南中创建的数据库用户的数据库密码。
在本指南的示例中,我们假设该值为
wlmagent-password
。向服务账号授予 Identity and Access Management (IAM) 角色。
Google Cloud的 Agent for Compute Workloads 使用附加到虚拟机的 Identity and Access Management (IAM) 服务账号,以便向 Google Cloud 进行身份验证并获得访问 Google Cloud 资源的权限。使用包含以下 IAM 角色的新服务账号:
- Compute Viewer (roles/compute.viewer)
- Monitoring Metric Writer (roles/monitoring.metricWriter)
Secret Manager Secret Accessor (roles/secretmanager.secretAccessor)
为了遵循最小权限原则,我们建议您在 Secret 级层而非项目级层授予
Secret Manager Secret Accessor
角色。这样可将访问权限仅限于服务账号所需的特定 Secret。
如需了解如何授予角色,请参阅管理对服务账号的访问权限。
启用对 Google Cloud API 的访问权限。
如需启用对 Google Cloud API 的访问权限,请参阅创建虚拟机并关联服务账号。
我们建议您将虚拟机实例配置为可访问 Google CloudAPI,并使用分配给服务账号的 IAM 权限来管理访问权限控制。请参阅用户代管式服务和授权。
如果您是在没有外部 IP 地址的虚拟机实例上运行 Oracle 数据库,则需要对该虚拟机的子网启用专用 Google 访问通道,以便 Agent for Compute Workloads 可以访问Google Cloud API 和服务。如需在子网上启用专用 Google 访问通道,请参阅配置专用 Google 访问通道。
安装代理
如需安装适用于 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-agent
rpm 软件包。sudo yum install google-cloud-workload-agent
安装 Oracle 代理后,请验证代理的安装。
验证代理安装
如需验证代理是否正在运行,请选择您的操作系统,然后按照以下步骤操作:
- 使用 SSH 连接到您的虚拟机实例。
运行以下命令:
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 |
INFO 。
|
|
log_to_cloud |
如需将代理的日志重定向到 Cloud Logging,请指定 |
|
oracle_configuration.enabled |
可选。确定 Oracle 服务是否处于活动状态。如果设置为 |
|
仅当您指定 oracle_configuration.enabled: true 时,以下子参数才适用。 |
||
oracle_configuration.oracle_discovery.enabled |
可选。确定 Oracle 发现是否处于活跃状态。 默认值为 |
|
oracle_configuration.oracle_discovery.update_frequency |
可选。指定采样时间间隔(以秒为单位),用于确定 Agent for Compute Workloads 运行发现流程的频率。默认值为 3600 秒(1 小时)。 请确保该值以小写字母“s”结尾,表示秒。例如: |
|
oracle_configuration.oracle_metrics.enabled |
可选。如需启用 Agent for Compute Workloads 以收集 Oracle 监控指标,请指定 |
|
仅当您指定 |
||
oracle_configuration.oracle_metrics.collection_frequency |
可选。指定采样时间间隔(以秒为单位),用于确定 Agent for Compute Workloads 查询 Oracle 数据库实例以收集 Oracle 监控指标的频率。默认值为 60 秒。 请确保该值以小写字母“s”结尾,表示秒。例如: |
|
oracle_configuration.oracle_metrics.query_timeout |
可选。指定对 Oracle 数据库实例执行的每个查询的超时时间。默认值为 10 秒。 请确保该值以小写字母“s”结尾,表示秒。例如: |
|
oracle_configuration.oracle_metrics.connection_parameters.username |
指定用于查询 Oracle 数据库实例的用户账号。 确保此用户具有读取 Oracle 数据库中的性能视图所需的权限。 |
|
oracle_configuration.oracle_metrics.connection_parameters.host |
指定托管数据库实例的本地机器的标识符。 |
|
oracle_configuration.oracle_metrics.connection_parameters.port |
指定 Oracle 数据库实例接收查询的端口。 |
|
oracle_configuration.oracle_metrics.connection_parameters.service_name |
指定您希望代理监控的 Oracle 数据库实例的服务名称。 |
|
oracle_configuration.oracle_metrics.connection_parameters.secret.project_id |
指定 Secret Manager 的项目 ID,以检索向数据库发出查询的用户的密码。 |
|
oracle_configuration.oracle_metrics.connection_parameters.secret.secret_name |
指定 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
用户身份,向监控用户授予以下权限,以便其查询性能视图:SESSION
SELECT_CATALOG_ROLE
SYSDG
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_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
-
读取操作(小规模 + 大规模)的总次数
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
-
重做应用延迟时间(以秒为单位)
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 用户是否拥有以下查询性能视图所需的权限:
SESSION
SELECT_CATALOG_ROLE
SYSDG
运行以下 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"
解决方法:如需解决此问题,请使用配置参数初始化凭据配置。