本指南介绍了如何解决 Google Cloud 的 Agent for SAP 3.5 版(最新版)的问题。
如需了解 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 所需的 IAM 权限,或者如果您使用的是代理的 Backint 功能,则没有足够权限访问 Cloud Storage 存储桶。
解决方法:要解决此问题,请执行以下步骤:
在 Google Cloud 控制台的“虚拟机实例详情”页面上,记下虚拟机服务账号的名称。例如:
sap-example@example-project-123456.iam.gserviceaccount.com
。转到 IAM 和管理页面,确保所述服务账号包含以下 IAM 角色:
如需详细了解 Google Cloud 的 Agent for SAP 所需的身份验证,请参阅身份验证和访问权限。
如需确认 Cloud Monitoring 代理所需的权限,请参阅以下 Monitoring 文档:
问题:虚拟机服务账号的访问权限范围不正确
问题:如果您限制主机虚拟机实例的访问权限范围,则 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's Agent for SAP 后,您会看到类似于以下内容的错误消息:
tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead
原因:Google Cloud's Agent for SAP 无法开始收集 SAP HANA 监控指标,因为目标 SAP HANA 实例使用通过通用名称 (CN) 指定的 SSL 证书。
解决方法:要解决此问题,请按以下步骤操作:
对于要使用 Google Cloud's Agent for SAP 监控的 SAP HANA 实例,您必须切换为使用主题备用名称 (SAN) SSL 证书,而不是使用通用名称 (CN) 指定的 SSL 证书。
与主机虚拟机实例或裸金属解决方案服务器建立 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's 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 不会自行启动。
如需验证代理是否正在运行,请执行以下步骤:
- 连接到您的主机虚拟机实例或裸金属解决方案服务器。
运行以下命令:
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 无法自行启动。
解决方法:如需解决此问题,请执行以下步骤:
- 连接到您的主机虚拟机实例或裸金属解决方案服务器。
运行以下命令:
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 数据库用户名。如需了解此配置参数,请参阅配置参数。
获取 Google Cloud 的 Agent for SAP 支持
如果您在解决 Google Cloud 的 Agent for SAP 的问题时需要帮助,请收集所需的诊断信息并与 Cloud Customer Care 联系。如需了解详情,请参阅 Google Cloud 的 Agent for SAP 诊断信息。