Google Cloud 的 Agent for SAP 问题排查指南

本指南介绍了如何解决 Google Cloud的 Agent for SAP 3.8 版(最新版)的问题。

如需了解 SAP 的问题排查和支持信息,请参阅以下 SAP 说明:

日志记录

检查特定于您的操作系统的目录中的日志。

如需查看 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

如果您启用了 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 存储桶。

解决方法:要解决此问题,请执行以下步骤:

  1. Google Cloud 控制台的“虚拟机实例详细信息”页面上,记下服务账号的名称。例如:sap-example@example-project-123456.iam.gserviceaccount.com

  2. 转到 IAM 和管理页面,确保所述服务账号包含以下 IAM 角色:

    功能 所需 IAM 角色
    SAP Host Agent 指标收集
    Process Monitoring 指标收集
    代理健康指标收集
    Workload Manager 评估指标收集
    SAP HANA 监控指标收集
    适用于 SAP HANA 的基于 Backint 的备份和恢复

    如需了解详情,请参阅所需的 Cloud Storage 权限

    适用于 SAP HANA 的基于磁盘快照的备份和恢复 此功能的 IAM 权限取决于 SAP 系统的磁盘配置。如需了解详情,请参阅使用磁盘快照备份和恢复 SAP HANA 中的“设置权限”部分。

如需详细了解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 说明:

问题: Google Cloud的 Agent for SAP 安装失败

问题:在您运行软件包管理系统安装命令(例如 yumzyppergooget)时,代理安装失败,或者您看到以下错误消息: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 证书。

解决方法:要解决此问题,请按以下步骤操作:

  1. 对于要使用Google Cloud的 Agent for SAP 监控的 SAP HANA 实例,您必须切换为使用主题备用名称 (SAN) SSL 证书,而不是使用通用名称 (CN) 指定的 SSL 证书。

  2. 与主机 Compute Engine 实例或裸金属解决方案服务器建立 SSH 连接。

  3. 打开 Google Cloud的 Agent for SAP 的配置文件:

    /etc/google-cloud-sap-agent/configuration.json
  4. hana_monitoring_configuration 部分中,将参数 enabled 设置为 true

  5. hana_monitoring_configuration.hana_instances 部分中,对使用 TLS/SSL 协议进行安全通信的每个 SAP HANA 实例执行以下操作:

    1. 指定参数 enable_ssl 并将其值设置为 true

    2. 指定参数 host_name_in_certificate,并将 TLS/SSL 证书中指定的 SAP HANA 主机名设置为其值。

    3. 指定参数 tls_root_ca_file,并将 TLS/SSL 证书的存储路径设置为其值。

  6. 保存配置文件。

  7. 重启 Google Cloud的 Agent for SAP,以使新设置生效:

    sudo systemctl restart google-cloud-sap-agent
  8. 验证代理是否正在收集 SAP HANA 监控指标。如需查看相关说明,请参阅查看其他指标

  9. 卸载 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 不会自行启动。

如需验证代理是否正在运行,请执行以下步骤:

  1. 连接到您的主机 Compute Engine 实例或裸金属解决方案服务器。
  2. 运行以下命令:

    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 无法自行启动。

解决方法:如需解决此问题,请执行以下步骤:

  1. 连接到您的主机 Compute Engine 实例或裸金属解决方案服务器。
  2. 运行以下命令:

    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
  3. 验证代理正在运行:

    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 配置参数启用了压缩。

解决方法:要解决此问题,请验证压缩是否未启用。为此,请执行以下步骤:

  1. 使用 SSH 连接到您的 SAP HANA 主机。

  2. 打开您的 Backint 配置文件:

    /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters.json

    SID 替换为您在其中安装 Backint 相关文件的系统的 SID。

  3. 验证 compress 参数是否设置为 false

  4. 进行任何更改后,请保存配置文件。

问题:多流处理错误

问题:在多流处理数据备份时会收到错误。

原因:对于 Google Cloud的 Agent for SAP 的 Backint 功能,您可能指定了比较多的并行流。

解决方法:要解决此问题,请执行以下步骤:

  1. 使用 SSH 连接到您的 SAP HANA 主机。

  2. 打开您的 Backint 配置文件:

    /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters.json

    SID 替换为您在其中安装 Backint 相关文件的系统的 SID。

  3. 如果您为 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 HANA global.ini 文件中正确指定参数。

您可以使用 Google Cloud的 Agent for SAP 中内置的自行诊断功能测试对 Cloud Storage 存储桶的访问权限。如需了解详情,请参阅自行诊断

基于磁盘快照的备份或恢复操作问题

问题:使用代理的 hanadiskbackuphanadiskrestore 命令为 SAP HANA 执行的备份或恢复操作未成功。

原因:此问题可能是由以下任何原因造成的:

  • 代理遇到错误并退出备份或恢复操作。
  • 由于底层Google Cloud 服务出现问题,代理创建磁盘快照或将其上传到 Cloud Storage 所花费的时间超过预期时间。
  • 代理崩溃,没有明确的错误或成功消息。
  • 由于操作系统级别出现问题,备份或恢复操作失败。
  • 代理的等待时间超过 SAP HANA 数据库的预期时间,这可能是因为数据库遇到非常繁重的工作负载。

解决方法:如需解决此问题,请使用以下信息:

  • 如果是备份操作失败,请执行以下操作:

    1. 验证代理是否正在运行。如果未运行,请重启代理,然后重试备份操作。

    2. 如果代理按预期运行,请检查快照创建的状态:

      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:来源磁盘的名称

      输出状态可以是以下状态之一:CREATINGUPLOADINGREADY

    3. 如果快照创建的状态为 CREATINGUPLOADING,我们建议您等待此操作完成,尤其是当这是您为托管 /hana/data 卷的磁盘创建的第一个快照时。

      如果此操作失败,则代理会自动退出该过程并更新日志。您可以通过运行 hanadiskbackup 命令来重试备份创建。代理会负责完成 SAP HANA 数据库中失败的备份操作,并创建基于快照的新备份。

      如果您将 -confirm-data-snapshot-after-create 参数与 hanadiskbackup 命令搭配使用,并且快照上传操作失败,则需要手动删除 SAP HANA 备份目录中的快照条目,然后重试创建快照。如需删除 SAP HANA 备份目录中的条目,您可以使用 BACKUP CATALOG DELETE 语句。如需了解 -confirm-data-snapshot-after-create 参数,请参阅创建基于磁盘快照的备份中的说明。

    4. 如果快照创建的状态为 READY,但 hanadiskbackup 命令似乎仍在运行,这表示代理正在等待 SAP HANA 完成备份过程中其负责的那一部分。

    5. 如果 hanadiskbackup 命令的运行时间似乎超过预期时间,请执行以下操作,以恢复 SAP HANA 数据库的正常运行:

      1. 取消冻结包含 /hana/data 卷的 XFS 文件系统:

        xfs_freeze -u PATH_TO_HANA_DATA_VOLUME
      2. 从 SAP HANA 数据库中,获取失败存储快照的备份 ID:

        SELECT BACKUP_ID, STATE_NAME, COMMENT FROM M_BACKUP_CATALOG WHERE ENTRY_TYPE_NAME = 'data snapshot' and STATE_NAME = 'prepared'
      3. 在 SAP HANA 中,将失败快照的对应条目更新为未成功:

        BACKUP DATA FOR FULL SYSTEM CLOSE SNAPSHOT BACKUP_ID UNSUCCESSFUL 'Do not use - manually terminated';
        

      BACKUP_ID 替换为上一步中提取的 BACKUP_ID

    6. 如需解决失败备份操作的问题,请通过代理的支持包与客户服务联系。

  • 如果是恢复操作失败,请完成以下步骤:

    1. 验证托管 /hana/data 卷的原始磁盘是否已挂接到主机计算实例。如果未挂接,请使用 gcloud compute instances attach-disk 命令进行挂接。

    2. 重新扫描卷组和逻辑卷:

      sudo /sbin/dmsetup remove_all
      sudo /sbin/vgscan -v --mknodes
      sudo /sbin/vgchange -ay
      sudo /sbin/lvscan
      sudo mount -av
      
    3. 如果重新扫描失败,请重启主机计算实例。这会使操作系统重新扫描卷组。

    4. 在 SAP HANA 中,验证 /hana/data 卷是否已生效。

    5. 如果 /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 诊断信息