本指南介绍了如何解决 Google Cloud的 Agent for SAP 3.8 版(最新版)的问题。
如需了解 SAP 的问题排查和支持信息,请参阅以下 SAP 说明:
- 1642148 - 常见问题解答:SAP HANA 数据库备份和恢复
- 2031547 - SAP 认证的第三方备份工具及相关支持流程概览
- 2705632 - Google Cloud Storage 的支持流程
日志记录
检查特定于您的操作系统的目录中的日志。
如需查看 Google Cloud的 Agent for SAP 的日志,请前往以下路径:
Linux
/var/log/google-cloud-sap-agent.log
Windows
C:\Program Files\Google\google-cloud-sap-agent\logs\google-cloud-sap-agent.log
查看与 Backint 相关的日志
如果您启用了 Google Cloud的 Agent for SAP 的 Backint 功能,请查看以下日志:
- SAP HANA
backup.log
文件,其中包含有关 SAP HANA 备份和恢复操作的信息。 - SAP HANA
backint.log
文件,其中包含对代理的 Backint 功能和其他外部备份工具所使用的备份接口的调用。 - Google Cloud的 Agent for SAP 的 Backint 日志文件:
/var/log/google-cloud-sap-agent/backint.log
。此文件包含有关 Backint 功能启用时间和相关操作事件的信息,并介绍了 Cloud Storage 的通信错误和相关配置或权限问题。 - Cloud Logging 中的 Google Cloud 日志,可能包含与 Google Cloud的 Agent for SAP 使用的服务账号相关的错误。如需查看这些日志,请在 Google Cloud 控制台中前往 Logs Explorer 页面。
常见问题
以下部分介绍了与使用Google Cloud的 SAP for Agent 相关的常见问题及其原因和解决方法。
问题:IAM 权限不足
问题: Google Cloud的 Agent for SAP 日志显示 IAM 权限不足错误。
原因:代理使用的服务账号没有访问 Cloud Monitoring API 或 Workload Manager API 所需的 IAM 权限,或者如果您使用的是代理的 Backint 功能,则没有足够权限访问 Cloud Storage 存储桶。
解决方法:要解决此问题,请执行以下步骤:
在 Google Cloud 控制台的“虚拟机实例详细信息”页面上,记下服务账号的名称。例如:
sap-example@example-project-123456.
。转到 IAM 和管理页面,确保所述服务账号包含以下 IAM 角色:
功能 所需 IAM 角色 SAP Host Agent 指标收集 - Compute Viewer (
roles/compute.viewer
):用于从托管 SAP 系统的 Compute Engine 实例中收集指标。 - Monitoring Viewer (
roles/monitoring.viewer
):用于将收集的指标写入 Cloud Monitoring。
Process Monitoring 指标收集 - Compute Viewer (
roles/compute.viewer
):用于从托管 SAP 系统的 Compute Engine 实例中收集 Process Monitoring 指标。 - Monitoring Metric Writer (
roles/monitoring.metricWriter
):用于将收集的指标写入 Cloud Monitoring。 - (可选)Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor
):如果您使用 Secret Manager 存储用于连接到 SAP HANA 数据库的密码。
代理健康指标收集 - Monitoring Metric Writer (
roles/monitoring.metricWriter
):用于将收集的指标写入 Cloud Monitoring。
Workload Manager 评估指标收集 - Compute Viewer (
roles/compute.viewer
):用于从托管 SAP 系统的 Compute Engine 实例中收集 Workload Manager 评估指标。 - Workload Manager Insights Writer (
roles/workloadmanager.insightWriter
):用于将收集的指标写入 Workload Manager 数据仓库。 - (可选)Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor
):如果您使用 Secret Manager 存储用于连接到 SAP HANA 数据库的密码。
SAP HANA 监控指标收集 - Compute Viewer (
roles/compute.viewer
):用于从托管 SAP 系统的 Compute Engine 实例中收集 SAP HANA 监控指标。 - Monitoring Metric Writer (
roles/monitoring.metricWriter
):用于将收集的指标写入 Cloud Monitoring。 - (可选)Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor
):如果您使用 Secret Manager 存储用于连接到 SAP HANA 数据库的密码。
适用于 SAP HANA 的基于 Backint 的备份和恢复 - Storage Object Admin (
roles/storage.objectAdmin
):用于从 Cloud Storage 存储桶写入和读取备份文件 - (可选)Cloud KMS CryptoKey Encrypter/Decrypter (
roles/cloudkms.cryptoKeyEncrypterDecrypter
):如果您已使用客户管理的加密密钥来加密 Cloud Storage 中的 SAP HANA 备份。如需了解此功能,请参阅备份的加密选项。
如需了解详情,请参阅所需的 Cloud Storage 权限。
适用于 SAP HANA 的基于磁盘快照的备份和恢复 此功能的 IAM 权限取决于 SAP 系统的磁盘配置。如需了解详情,请参阅使用磁盘快照备份和恢复 SAP HANA 中的“设置权限”部分。 - Compute Viewer (
如需详细了解Google Cloud的 Agent for SAP 所需的身份验证,请参阅身份验证和访问权限。
如需确认 Cloud Monitoring 代理所需的权限,请参阅以下 Monitoring 文档:
问题:Compute Engine 实例的服务账号的访问权限范围不正确
问题:如果您限制主机计算实例的访问权限范围,则Google Cloud的 Agent for SAP 日志可能会显示 IAM 权限不足错误。
原因: Google Cloud的 Agent for SAP 要求主机计算实例具有最小 Cloud API 访问权限范围。当服务账号没有所需的访问权限范围时,会发生此错误。
解决方法:访问权限范围是为计算实例指定权限的传统方法。Compute Engine 建议将计算实例配置为允许使用针对所有 Cloud API 的所有访问权限范围,并且仅使用服务账号的 IAM 权限来控制对 Google Cloud 资源的访问权限。
如需解决此问题,最佳实践是对计算实例设置所有 cloud-platform
访问权限范围,然后使用 IAM 角色安全地限制服务账号的 API 访问权限。例如:
https://www.googleapis.com/auth/cloud-platform
如果您限制了计算实例的访问权限范围,则必须确保主机计算实例具有以下访问权限范围:
https://www.googleapis.com/auth/source.read_write
https://www.googleapis.com/auth/compute
https://www.googleapis.com/auth/servicecontrol
https://www.googleapis.com/auth/service.management.readonly
https://www.googleapis.com/auth/logging.admin
https://www.googleapis.com/auth/monitoring
https://www.googleapis.com/auth/trace.append
https://www.googleapis.com/auth/devstorage.full_control
如果您已启用 Process Monitoring 指标或 SAP HANA 监控指标的收集,则主机计算实例的访问权限范围还必须具有将指标数据发布到 Google Cloud 项目的写入权限:
https://www.googleapis.com/auth/monitoring.write
如需更改访问权限范围,您需要停止计算实例,进行更改,然后重启计算实例。如需查看相关说明,请参阅 Compute Engine 文档。您无需针对此问题对 IAM 角色的权限进行任何更改。
问题:SAP Host Agent 缺失或不正确
问题: Google Cloud的 Agent for SAP 日志显示 SAP Host Agent 缺失或不正确错误。
原因:未安装 SAP Host Agent 或 SAP Host Agent 所需的最低级别的补丁。为了使 Google Cloud的 Agent for SAP 正常运行,SAP 系统必须安装 SAP Host Agent,并保持 Host Agent 所需的最低补丁级别。
解决方法:如需解决此问题,请安装所需的 SAP Host Agent 版本。如需了解如何安装 SAP Host Agent,请参阅 SAP 文档。
如需了解 SAP Host Agent 的版本要求,请参阅以下 SAP 说明:
- Linux:SAP 说明 2460297 - Google Cloud Platform 上的 Linux 系统的 SAP:增强监控
- Windows:SAP 说明 1409604 - Windows 系统的虚拟化:增强监控
问题: Google Cloud的 Agent for SAP 安装失败
问题:在您运行软件包管理系统安装命令(例如 yum
、zypper
或 googet
)时,代理安装失败,或者您看到以下错误消息:Package matching google-cloud-sap-agent-VERSION_NUMBER
already installed. Checking for update.
。
原因:代理安装失败,原因如下:
- 您要将代理降级到非最新版本,并且您的计算实例运行的是旧版 RHEL for SAP,例如 7.9 版。
- 托管代理的计算实例是在没有外部 IP 地址的情况下创建的。
解决方法:如需解决此问题,请根据您的具体情况执行以下任一操作:
如果您想将代理实例降级到非最新版本,并且您的计算实例在较旧版本的 RHEL for SAP(例如 7.9 版)上运行,请运行以下命令:
RHEL
sudo tee /etc/yum.repos.d/google-cloud-sap-agent.repo << EOM [google-cloud-sap-agent] name=Google Cloud Agent for SAP baseurl=https://packages.cloud.google.com/yum/repos/google-cloud-sap-agent-el$(cat /etc/redhat-release | cut -d . -f 1 | tr -d -c 0-9)-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=0 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 downgrade google-cloud-sap-agent-VERSION_NUMBER.x86_64
SLES15
sudo zypper addrepo --refresh https://packages.cloud.google.com/yum/repos/google-cloud-sap-agent-sles15-x86_64 google-cloud-sap-agent sudo zypper install google-cloud-sap-agent-VERSION_NUMBER.x86_64
SLES 12
sudo zypper addrepo --refresh https://packages.cloud.google.com/yum/repos/google-cloud-sap-agent-sles12-x86_64 google-cloud-sap-agent sudo zypper install google-cloud-sap-agent-VERSION_NUMBER.x86_64
将
VERSION_NUMBER
替换为您要安装的代理的版本号,例如3.1-606637668
。如需了解您可以安装的代理版本,请参阅列出代理的所有可用版本。如果托管代理的计算实例没有外部 IP 地址,请设置 NAT 网关,以授予主机服务器对互联网的出站访问权限。如需了解如何设置 NAT 网关,请参阅你的 SAP 系统对应的部署指南。例如,对于 SAP NetWeaver,请参阅:
问题:收集 SAP HANA 监控指标失败
问题:在从适用于 SAP HANA 的监控代理升级时,安装 Google Cloud的 Agent for SAP 后,您会看到类似于以下内容的错误消息:
tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead
原因: Google Cloud的 Agent for SAP 无法开始收集 SAP HANA 监控指标,因为目标 SAP HANA 实例使用通过通用名称 (CN) 指定的 SSL 证书。
解决方法:要解决此问题,请按以下步骤操作:
对于要使用Google Cloud的 Agent for SAP 监控的 SAP HANA 实例,您必须切换为使用主题备用名称 (SAN) SSL 证书,而不是使用通用名称 (CN) 指定的 SSL 证书。
与主机 Compute Engine 实例或裸金属解决方案服务器建立 SSH 连接。
打开 Google Cloud的 Agent for SAP 的配置文件:
/etc/google-cloud-sap-agent/configuration.json
在
hana_monitoring_configuration
部分中,将参数enabled
设置为true
。在
hana_monitoring_configuration.hana_instances
部分中,对使用 TLS/SSL 协议进行安全通信的每个 SAP HANA 实例执行以下操作:指定参数
enable_ssl
并将其值设置为true
。指定参数
host_name_in_certificate
,并将 TLS/SSL 证书中指定的 SAP HANA 主机名设置为其值。指定参数
tls_root_ca_file
,并将 TLS/SSL 证书的存储路径设置为其值。
保存配置文件。
重启 Google Cloud的 Agent for SAP,以使新设置生效:
sudo systemctl restart google-cloud-sap-agent
验证代理是否正在收集 SAP HANA 监控指标。如需查看相关说明,请参阅查看其他指标。
卸载 SAP HANA 监控代理。
问题:连接遭拒错误
问题:SAP Host Agent 日志显示连接遭拒错误。
原因: Google Cloud的 Agent for SAP 无法启动,因为端口 18181
不可用。 Google Cloud的 Agent for SAP 监听端口 18181
上的请求。
此端口必须可用,代理才能启动。
解决方法:如需解决此问题,请确保端口 18181
可用于 Google Cloud的 Agent for SAP。如果其他服务正在使用端口 18181
,则您可能需要重启该服务,或将其重新配置为使用其他端口。
问题:对于操作系统映像 SLES 15 SP4 for SAP 及更高版本, Google Cloud的 Agent for SAP 不运行
问题:当您使用 SLES“for SAP”操作系统映像时,系统会为您预安装Google Cloud的 Agent for SAP。但是,对于操作系统映像 SLES 15 SP4 for SAP 及更高版本,预安装的 Agent for SAP 不会自行启动。
如需验证代理是否正在运行,请执行以下步骤:
- 连接到您的主机 Compute Engine 实例或裸金属解决方案服务器。
运行以下命令:
systemctl status google-cloud-sap-agent
如果代理未在运行,则输出包含
inactive (dead)
。例如:google-cloud-sap-agent.service - Google Cloud Agent for SAP Loaded: loaded (/usr/lib/systemd/system/google-cloud-sap-agent.service; disabled; vendor preset: disabled) Active: inactive (dead)
原因:由于操作系统打包存在问题,Agent for SAP 无法自行启动。
解决方法:如需解决此问题,请执行以下步骤:
- 连接到您的主机 Compute Engine 实例或裸金属解决方案服务器。
运行以下命令:
sudo sed -i 's~ /usr/sap~ -/usr/sap~g' /usr/lib/systemd/system/google-cloud-sap-agent.service sudo systemctl restart google-cloud-sap-agent
验证代理正在运行:
systemctl status google-cloud-sap-agent
您应该会看到类似于如下内容的输出:
google-cloud-sap-agent.service - Google Cloud Agent for SAP Loaded: loaded (/usr/lib/systemd/system/google-cloud-sap-agent.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2023-07-12 03:07:23 UTC; 7s ago Main PID: 6117 (google_cloud_sa) Tasks: 6 Memory: 8.8M (max: 1.0G limit: 1.0G available: 1015.1M) CGroup: /system.slice/google-cloud-sap-agent.service └─ 6117 /usr/bin/google_cloud_sap_agent startdaemon
问题:由于缺少对 /usr/sap
目录的执行权限,系统发现失败
问题:在 Google Cloud的 Agent for SAP 日志中,您看到了一条警告:No execute
permission for /usr/sap directory, some of the discovery operations will fail.
Please ensure that the root user has execute permission for /usr/sap directory.
原因:根用户没有 /usr/sap/
目录的执行权限。因此,根用户无法访问位于 /usr/sap
目录中的 SAP 系统配置文件和 SAP 工具。这可能会限制代理发现在主机计算实例上运行的 SAP 系统,从而限制代理功能的预期行为。
解决方法:如需解决此问题,请确保根用户对 /usr/sap/
目录具有执行权限。为此,请运行以下命令:
chmod +x /usr/sap
问题:吞吐量低
问题:您遇到了吞吐量低于预期的情况。
原因:对于 Google Cloud的 SAP for Agent 的 Backint 功能,您可能使用 compress
配置参数启用了压缩。
解决方法:要解决此问题,请验证压缩是否未启用。为此,请执行以下步骤:
使用 SSH 连接到您的 SAP HANA 主机。
打开您的 Backint 配置文件:
/usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters.json
将
SID
替换为您在其中安装 Backint 相关文件的系统的 SID。验证
compress
参数是否设置为false
。进行任何更改后,请保存配置文件。
问题:多流处理错误
问题:在多流处理数据备份时会收到错误。
原因:对于 Google Cloud的 Agent for SAP 的 Backint 功能,您可能指定了比较多的并行流。
解决方法:要解决此问题,请执行以下步骤:
使用 SSH 连接到您的 SAP HANA 主机。
打开您的 Backint 配置文件:
/usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters.json
将
SID
替换为您在其中安装 Backint 相关文件的系统的 SID。如果您为
parallel_streams
参数设置了值,请将其降低到1
。如果此操作无法解决该错误,请与 Customer Care 联系。
连接到 Cloud Storage 时遇到的问题
问题:您遇到了 Cloud Storage 存储桶的连接问题。
原因:可能的原因如下:
- 暂时性连接问题。
- Google Cloud的 Agent for SAP 使用的服务账号没有访问 Cloud Storage 所需的权限。
- 您的配置存在问题。
解决方法:要排查 Cloud Storage 存储桶的连接问题,请检查以下项:
- 重试失败的备份或恢复,以确保错误不是由于暂时的连接问题导致的。
- 如果 Google Cloud的 Agent for SAP 使用计算实例的服务账号,请确保计算实例具有所有云范围的访问权限,或者如果您限制访问权限,请确保计算实例有权访问
storage.googleapis.com
。如需了解详情,请参阅启用对 Cloud API 和元数据服务器的访问权限。 - 如果您创建了用于 Google Cloud的 Agent for SAP 的服务账号,请确保满足以下条件:
- 服务账号获得 Storage Object Admin 角色。
- 如果您使用客户管理的加密密钥来加密 Cloud Storage 中的备份,则服务账号获得 Cloud KMS CryptoKey Encrypter/Decrypter 角色。如需了解详情,请参阅备份的加密。
- 确保您已在 Backint 配置文件
PARAMETERS.json
和 SAP HANAglobal.ini
文件中正确指定参数。
您可以使用 Google Cloud的 Agent for SAP 中内置的自行诊断功能测试对 Cloud Storage 存储桶的访问权限。如需了解详情,请参阅自行诊断。
基于磁盘快照的备份或恢复操作问题
问题:使用代理的 hanadiskbackup
或 hanadiskrestore
命令为 SAP HANA 执行的备份或恢复操作未成功。
原因:此问题可能是由以下任何原因造成的:
- 代理遇到错误并退出备份或恢复操作。
- 由于底层Google Cloud 服务出现问题,代理创建磁盘快照或将其上传到 Cloud Storage 所花费的时间超过预期时间。
- 代理崩溃,没有明确的错误或成功消息。
- 由于操作系统级别出现问题,备份或恢复操作失败。
- 代理的等待时间超过 SAP HANA 数据库的预期时间,这可能是因为数据库遇到非常繁重的工作负载。
解决方法:如需解决此问题,请使用以下信息:
如果是备份操作失败,请执行以下操作:
验证代理是否正在运行。如果未运行,请重启代理,然后重试备份操作。
如果代理按预期运行,请检查快照创建的状态:
gcloud compute snapshots list --filter="sourceDisk:projects/PROJECT_ID/zones/ZONE_ID/disks/DISK_NAME"
替换以下内容:
PROJECT_ID
:在其中部署来源磁盘的 Google Cloud 项目ZONE_ID
:在其中部署来源磁盘的 Compute Engine 可用区,例如us-central1-a
DISK_NAME
:来源磁盘的名称
输出状态可以是以下状态之一:
CREATING
、UPLOADING
或READY
。如果快照创建的状态为
CREATING
或UPLOADING
,我们建议您等待此操作完成,尤其是当这是您为托管/hana/data
卷的磁盘创建的第一个快照时。如果此操作失败,则代理会自动退出该过程并更新日志。您可以通过运行
hanadiskbackup
命令来重试备份创建。代理会负责完成 SAP HANA 数据库中失败的备份操作,并创建基于快照的新备份。如果您将
-confirm-data-snapshot-after-create
参数与hanadiskbackup
命令搭配使用,并且快照上传操作失败,则需要手动删除 SAP HANA 备份目录中的快照条目,然后重试创建快照。如需删除 SAP HANA 备份目录中的条目,您可以使用BACKUP CATALOG DELETE
语句。如需了解-confirm-data-snapshot-after-create
参数,请参阅创建基于磁盘快照的备份中的说明。如果快照创建的状态为
READY
,但hanadiskbackup
命令似乎仍在运行,这表示代理正在等待 SAP HANA 完成备份过程中其负责的那一部分。如果
hanadiskbackup
命令的运行时间似乎超过预期时间,请执行以下操作,以恢复 SAP HANA 数据库的正常运行:取消冻结包含
/hana/data
卷的 XFS 文件系统:xfs_freeze -u PATH_TO_HANA_DATA_VOLUME
从 SAP HANA 数据库中,获取失败存储快照的备份 ID:
SELECT BACKUP_ID, STATE_NAME, COMMENT FROM M_BACKUP_CATALOG WHERE ENTRY_TYPE_NAME = 'data snapshot' and STATE_NAME = 'prepared'
在 SAP HANA 中,将失败快照的对应条目更新为未成功:
BACKUP DATA FOR FULL SYSTEM CLOSE SNAPSHOT BACKUP_ID UNSUCCESSFUL 'Do not use - manually terminated';
将
BACKUP_ID
替换为上一步中提取的BACKUP_ID
。如需解决失败备份操作的问题,请通过代理的支持包与客户服务联系。
如果是恢复操作失败,请完成以下步骤:
验证托管
/hana/data
卷的原始磁盘是否已挂接到主机计算实例。如果未挂接,请使用gcloud compute instances attach-disk
命令进行挂接。重新扫描卷组和逻辑卷:
sudo /sbin/dmsetup remove_all sudo /sbin/vgscan -v --mknodes sudo /sbin/vgchange -ay sudo /sbin/lvscan sudo mount -av
如果重新扫描失败,请重启主机计算实例。这会使操作系统重新扫描卷组。
在 SAP HANA 中,验证
/hana/data
卷是否已生效。如果
/hana/data
卷仍未生效,请通过代理的支持包与客户服务联系以解决此问题。
基于 SAP HANA 监控视图的指标缺失
问题:基于 SAP HANA 数据库中的监控视图的 SAP HANA 监控指标缺失,并且您可以在 Google Cloud的 Agent for SAP 日志中看到以下错误:
{sql: Scan error on column index 0, name \"MEM_USED\": converting NULL to int64 is unsupported"}
原因:您在代理的配置文件中为 hana_monitoring_configuration.hana_instances.user
参数指定的 SAP HANA 数据库用户无权读取 SAP HANA 数据库中的监控视图。因此,代理发送到监控视图的查询不会返回任何数据。
解决方法:如需解决此问题,请在 SAP HANA 数据库中向指定数据库用户授予 CATALOG READ
系统特权或 MONITORING
角色。如需授予此特权,请使用管理员用户(例如 SYSTEM
)运行 GRANT
语句。例如:
如需授予
MONITORING
角色,请运行以下命令:GRANT MONITORING TO DB_USERNAME
如需授予
CATALOG READ
系统特权,请运行以下命令:GRANT CATALOG READ TO DB_USERNAME
将
DB_USERNAME
替换为您在代理配置文件中为hana_monitoring_configuration.hana_instances.user
参数指定的 SAP HANA 数据库用户名。如需了解此配置参数,请参阅配置参数。
问题:超出 Filtered list cost overhead
配额
问题:您发现运行自己 SAP 系统的 Google Cloud 项目超出了以下某项配额:
- “过滤后的列表费用开销”
Filtered list cost overhead per minute per region
原因: Google Cloud的 Agent for SAP 3.7 版或更早版本会频繁调用 compute.zoneOperations.list
API,以确定 Compute Engine 实例是否在发生实时迁移事件。在操作次数较多的 Google Cloud 项目中,这些频繁的调用可能会导致配额耗尽。
解决方法:如需解决此问题,请将代理实例更新为 3.8 版或更高版本。从 3.8 版开始,代理不再调用 compute.zoneOperations.list
API 来进行实时迁移检查,从而避免了此配额问题。
如需了解如何更新 Google Cloud的 Agent for SAP,请参阅更新 Google Cloud的 Agent for SAP。
获取 Google Cloud的 Agent for SAP 支持
如果您在解决 Google Cloud的 Agent for SAP 的问题时需要帮助,请收集所需的诊断信息并与 Cloud Customer Care 联系。 如需了解详情,请参阅 Google Cloud的 Agent for SAP 诊断信息。