为 SAP 工作负载设置代理

SAP 解决方案的 Workload Manager 使用 Google Cloud的 Agent for SAP 来检测和收集元数据,以评估 SAP 系统配置。如需支持并监控在 Google Cloud上运行的 SAP 系统(包括 SAP NetWeaver、SAP HANA、SAP ASE 和 SAP MaxDB),所有运行 SAP 系统的虚拟机实例上都需要安装 Agent for SAP 和 SAP Host Agent。

准备工作

在安装和配置 Google Cloud的 Agent for SAP 之前,您需要确保满足以下前提条件:

代理所需的 IAM 角色

Agent for SAP 使用附加到计算实例的服务账号进行身份验证,并访问 Google Cloud 资源。

为了提高安全性,我们建议您使用单用途服务账号,而不是使用 Compute Engine 默认服务账号

如需确保服务账号具有让 Agent for SAP 向Google Cloud 进行身份验证并访问 Google Cloud 资源所需的权限,请让您的管理员为服务账号授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您的管理员还可以通过自定义角色或其他预定义角色向服务账号授予所需的权限。

启用对 Cloud API 的访问权限

Compute Engine 建议将实例配置为允许使用针对所有 Cloud API 的所有访问权限范围。如需控制对 Google Cloud资源的访问权限,请仅使用实例服务账号的 IAM 权限。如需了解详情,请参阅创建使用用户管理的服务账号的虚拟机

如果您限制对 Cloud API 的访问权限,则 Agent for SAP 要求主机计算实例至少具有以下 Cloud API 访问权限范围:

https://www.googleapis.com/auth/cloud-platform

如需了解详情,请参阅范围最佳实践

如果您是在没有外部 IP 地址的计算实例上运行 SAP 应用,则需要在该实例的子网上启用专用 Google 访问通道,以便 Agent for Compute Workloads 可以访问 Google API 和服务。如需了解如何启用专用 Google 访问通道,请参阅配置专用 Google 访问通道

使用软件包管理器安装和配置代理

本部分介绍了如何使用软件包管理器在计算实例上安装 Agent for SAP,并将其配置为与 SAP 工作负载连接。

如果您想在一组虚拟机上安装和配置代理,则可以改用虚拟机扩展程序管理器政策。如需了解详情,请参阅使用虚拟机扩展程序管理器在虚拟机舰队上安装和管理代理

安装代理

如果尚未安装,请在运行 SAP 工作负载的所有计算实例上安装 Google Cloud的 Agent for SAP:

如需在 Compute Engine 实例上安装代理,请按照以下步骤操作:

  1. 与您的计算实例建立 SSH 连接。
  2. 在您的终端中,通过运行特定于您的操作系统的命令来安装此代理:
    • (推荐)如需安装代理 3.14 版(最新版),请运行以下命令:

      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 install google-cloud-sap-agent

      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

      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
    • 如需安装代理的特定版本,请运行以下命令:

      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 install 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。如需了解您可以安装的代理版本,请参阅列出代理的所有可用版本

      如需了解如何将代理降级到特定版本,请参阅降级 Google Cloud的 Agent for SAP

配置 Workload Manager 评估指标收集

安装 Agent for SAP 后,您需要配置代理以收集 Workload Manager 评估指标。

如需配置 Google Cloud的 Agent for SAP,请完成以下步骤:

  1. 如需让代理收集 Workload Manager 评估指标,请运行以下命令:

    sudo /usr/bin/google_cloud_sap_agent configure -feature=workload_evaluation -enable

  2. 可选:如需在 Workload Manager 中启用“SAP HANA 数据分析”和“SAP HANA 安全最佳实践”指标收集功能,请在代理的配置文件中将 workload_validation_db_metrics_config 部分添加到 collect_workload_validation_metrics 之后,然后指定以下参数:

    • hana_db_user:指定用于查询 SAP HANA 实例的用户账号。
    • hostname:指定托管 SAP HANA 实例的机器(本地或远程)的标识符。
    • port:指定 SAP HANA 实例接收查询的端口。
    • hana_db_password_secret_name:指定 Secret Manager 中用来存储用户账号密码的 Secret 的名称。

      作为 Secret 的替代方案,您可以使用 hdbuserstore_key 配置参数。

    • hdbuserstore_key:指定 hdbuserstore 密钥,它用于对您为 hana_db_user 指定的用户进行身份验证

      如果您指定 hdbuserstore_key,则跳过指定 hostnameport 参数。

    如需了解这些参数,请参阅配置参数

    以下示例是Google Cloud的 Agent for SAP 的已完成配置文件,该代理在Compute Engine 实例上运行,其中启用了 Workload Manager 评估指标收集功能。

    对于 SAP HANA 身份验证,代理会按以下优先顺序使用参数:如果指定了 hdbuserstore_key 配置参数,则优先使用该参数,而不是 hana_db_password 参数,后者优先于 hana_db_password_secret_name 参数。我们建议您在配置文件中仅设置一个身份验证选项。

    • 以下示例使用安全用户存储区 (hdbuserstore) 中的密钥进行 SAP HANA 身份验证:
      {
        "provide_sap_host_agent_metrics": true,
        "bare_metal": false,
        "log_level": "INFO",
        "log_to_cloud": true,
        "collection_configuration": {
          "collect_workload_validation_metrics": true,
          "workload_validation_db_metrics_frequency": 3600,
          "workload_validation_db_metrics_config": {
            "hana_db_user": "system",
            "sid": "DEH",
            "hdbuserstore_key": "user_store_key"
          },
          "collect_process_metrics": false
        },
        "discovery_configuration": {
          "enable_discovery": true,
          "enable_workload_discovery": true
        },
        "hana_monitoring_configuration": {
          "enabled": false
        }
      }
    • 以下示例使用用户名和 Secret Manager 中的 Secret 进行 SAP HANA 身份验证:
      {
        "provide_sap_host_agent_metrics": true,
        "bare_metal": false,
        "log_level": "INFO",
        "log_to_cloud": true,
        "collection_configuration": {
          "collect_workload_validation_metrics": true,
          "workload_validation_db_metrics_frequency": 3600,
          "workload_validation_db_metrics_config": {
            "hana_db_user": "system",
            "sid": "DEH",
            "hana_db_password_secret_name": "instance-id-hana-db-password-secret",
            "hostname": "localhost",
            "port": "30015"
          },
          "collect_process_metrics": false
        },
        "discovery_configuration": {
          "enable_discovery": true,
          "enable_workload_discovery": true
        },
        "hana_monitoring_configuration": {
          "enabled": false
        }
      }
    • 以下示例使用用户名和密码进行 SAP HANA 身份验证。我们建议您改用 Secret Manager 中的 Secret 或安全用户存储区 (hdbuserstore) 中的密钥进行 SAP HANA 身份验证。
      {
        "provide_sap_host_agent_metrics": true,
        "bare_metal": false,
        "log_level": "INFO",
        "log_to_cloud": true,
        "collection_configuration": {
          "collect_workload_validation_metrics": true,
          "workload_validation_db_metrics_frequency": 3600,
          "workload_validation_db_metrics_config": {
            "hana_db_user": "system",
            "sid": "DEH",
            "hana_db_password": "TempPa55word",
            "hostname": "localhost",
            "port": "30015"
          },
          "collect_process_metrics": false
        },
        "discovery_configuration": {
          "enable_discovery": true,
          "enable_workload_discovery": true
        },
        "hana_monitoring_configuration": {
          "enabled": false
        }
      }

  3. 重启代理以使新设置生效:

    sudo systemctl restart google-cloud-sap-agent

    代理成功重启后,便会开始将 Workload Manager 评估指标发送到 Workload Manager。

使用虚拟机扩展程序管理器在一组虚拟机上安装和管理代理

本部分介绍如何使用虚拟机扩展程序管理器在虚拟机群组中安装和管理 SAP 代理。

设置虚拟机扩展程序管理器

如需设置虚拟机扩展程序管理器,请完成以下步骤:

在一组虚拟机上安装和配置代理

如需使用虚拟机扩展程序管理器政策在特定可用区内的虚拟机群上安装最新版本的 Agent for SAP,请完成以下步骤:

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机扩展程序政策页面。

    前往“虚拟机扩展程序政策”

  2. 点击创建扩展程序政策

  3. 名称字段中,输入政策的名称。

  4. 可选:在说明字段中,输入政策的说明。

  5. 优先级字段中,指定一个优先级编号,以解决政策之间的冲突。数字越小,优先级越高。默认值为 1000

  6. 使用区域可用区列表,选择您要应用此政策的可用区。

  7. 扩展程序部分中,点击添加扩展程序,然后执行以下操作:

    1. 扩展程序列表中,选择 Google Cloud 的计算工作负载扩展程序
    2. 版本字段留空。

      这会指示政策安装最新版本的Google Cloud的 Agent for SAP。

    3. 配置文件内容字段中,输入要应用于代理的配置。

      如需了解代理为 SAP 工作负载支持的配置参数,请参阅配置参数

    4. 点击完成

  8. 可选:如需将政策发布限制为仅针对所需的虚拟机,请执行以下操作:

    1. 点击添加标签,然后添加用于标识所需虚拟机的标签。
    2. 点击完成
  9. 点击创建

gcloud

gcloud compute zone-vm-extension-policies create POLICY_NAME \
    --zone=ZONE \
    --extensions=google-cloud-sap-extension \
    --config-from-file=google-cloud-sap-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:JSON 文件的本地路径,该文件包含代理连接到 SAP 工作负载所需的配置。

    • 或者,如需以内嵌字符串的形式提供配置,请使用 --config 标志,而不是 --config-from-file。例如 --config=google-cloud-sap-extension="CONFIG"。 Google Cloud 建议您使用 --config-from-file
    • 您可以使用 --config-from-file--config,但不能在同一命令中同时使用这两者。
    • 如需了解代理为 SAP 工作负载支持的配置参数,请参阅配置参数
  • DESCRIPTION:政策的可选说明。

  • KEY_1=VALUE_1:用于定义政策定位虚拟机的标签的逗号分隔列表(以键值对形式)。

    • 虚拟机必须具有所有指定标签,才能成为政策的目标。
    • 如果您多次指定 --inclusion-labels,则政策会以与所提供的任何选择器匹配的虚拟机为目标(逻辑 OR)。如果您省略此标志,则政策会以指定可用区中的所有虚拟机为目标。
  • PRIORITY:一个介于 065535 之间的整数,用于定义政策的优先级。数字越小,优先级越高。默认值为 1000

示例

以下命令会在名为 test-project 的Google Cloud 项目中创建一个名为 test-agent-policy 的政策,该政策会在部署在可用区 us-centrail-f 中的所有虚拟机上安装最新版本的 Compute 工作负载代理。 agent-config.json 中指定的配置会应用于代理。

gcloud compute zone-vm-extension-policies create test-agent-policy  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=google-cloud-sap-extension \
    --config-from-file=google-cloud-sap-extension="/usr/agent-config.json"

验证代理版本

Google Cloud 建议您安装最新版本的 Agent for SAP,以便准确评估 SAP 工作负载,因为定期发布的 Agent for SAP 版本可能会添加或更改用于评估的指标。

为了确保您使用的是最新版本的 Google Cloud的 Agent for SAP,您需要定期检查更新并相应更新该代理。

检查更新

选择您的操作系统,然后按照以下步骤操作:

RHEL

  1. 与您的实例建立 SSH 连接。
  2. 运行以下命令:
    sudo yum check-update google-cloud-sap-agent

SLES

  1. 与您的实例建立 SSH 连接。
  2. 运行以下命令:
    sudo zypper list-updates -r google-cloud-sap-agent

安装更新

选择您的操作系统,然后按照以下步骤操作:

RHEL

  1. 与您的实例建立 SSH 连接。
  2. 更新您的代理实例:
    • (推荐)如需更新到代理 3.14 版(最新版),请运行以下命令:
      sudo yum --nogpgcheck update google-cloud-sap-agent
    • 要更新到代理的特定版本,请运行以下命令:
      sudo yum install google-cloud-sap-agent-VERSION_NUMBER.x86_64

      VERSION_NUMBER 替换为您要安装的代理的版本号,例如 3.1-606637668。如需了解您可以安装的代理版本,请参阅列出代理的所有可用版本

SLES

  1. 与您的实例建立 SSH 连接。
  2. 更新您的代理实例:
    • (推荐)如需更新到代理 3.14 版(最新版),请运行以下命令:
      sudo zypper --no-gpg-checks update google-cloud-sap-agent
    • 要更新到代理的特定版本,请运行以下命令:
      sudo zypper install google-cloud-sap-agent-VERSION_NUMBER.x86_64

      VERSION_NUMBER 替换为您要安装的代理的版本号,例如 3.1-606637668。如需了解您可以安装的代理版本,请参阅列出代理的所有可用版本

验证 Workload Manager 评估指标收集功能的设置

您可以通过运行代理的 status 命令,验证自己是否已进行了正确的 Google Cloud 设置,以便收集 Workload Manager 评估指标。此命令从代理 3.7 版开始受支持。

如需验证 Google Cloud 设置,请完成以下步骤:

  1. 与您的 Compute Engine 实例建立 SSH 连接。
  2. 运行以下命令:
    sudo /usr/bin/google_cloud_sap_agent status -f="workload_manager,sap_discovery"

    如果您为 Workload Manager 评估指标收集功能进行了正确的 Google Cloud 设置,则输出将包含以下内容。您的配置可能具有 default 之外的其他值。

        Agent Status:
            ...
            Systemd Service Enabled: True
            Systemd Service Running: True
            Cloud API Full Scopes: True
            Configuration File: /etc/google-cloud-sap-agent/configuration.json
            Configuration Valid: True
        ...
        ----------------------------------------------------------------------------
        System Discovery: Enabled
            Status: Fully Functional
            IAM Permissions: All granted
            Configuration:
                enable_discovery:                  true  (default)
                enable_workload_discovery:         true  (default)
                sap_instances_update_frequency:    60    (default)
                system_discovery_update_frequency: 14400 (default)
        ----------------------------------------------------------------------------
        Workload Manager Evaluation: Enabled
            Status: Fully Functional
            IAM Permissions: All granted
            Configuration:
                collect_workload_validation_metrics:      true       (default)
                config_target_environment:                PRODUCTION (default)
                fetch_latest_config:                      true       (default)
                workload_validation_db_metrics_frequency: 3600       (default)
                workload_validation_metrics_frequency:    300        (default)
        ...
        
  3. 如果输出表明缺少某些设置,请查看前面部分中提供的信息,执行所需的操作,然后重新运行 status 命令以重新验证设置。

示例配置文件

以下示例是Google Cloud的 Agent for SAP 的已完成配置文件,该代理在Compute Engine 实例上运行,其中启用了 Workload Manager 评估指标收集功能。

对于 SAP HANA 身份验证,代理会按以下优先顺序使用参数:如果指定了 hdbuserstore_key 配置参数,则优先使用该参数,而不是 hana_db_password 参数,后者优先于 hana_db_password_secret_name 参数。我们建议您在配置文件中仅设置一个身份验证选项。

  • 以下示例使用安全用户存储区 (hdbuserstore) 中的密钥进行 SAP HANA 身份验证:
    {
      "provide_sap_host_agent_metrics": true,
      "bare_metal": false,
      "log_level": "INFO",
      "log_to_cloud": true,
      "collection_configuration": {
        "collect_workload_validation_metrics": true,
        "workload_validation_db_metrics_frequency": 3600,
        "workload_validation_db_metrics_config": {
          "hana_db_user": "system",
          "sid": "DEH",
          "hdbuserstore_key": "user_store_key"
        },
        "collect_process_metrics": false
      },
      "discovery_configuration": {
        "enable_discovery": true,
        "enable_workload_discovery": true
      },
      "hana_monitoring_configuration": {
        "enabled": false
      }
    }
  • 以下示例使用用户名和 Secret Manager 中的 Secret 进行 SAP HANA 身份验证:
    {
      "provide_sap_host_agent_metrics": true,
      "bare_metal": false,
      "log_level": "INFO",
      "log_to_cloud": true,
      "collection_configuration": {
        "collect_workload_validation_metrics": true,
        "workload_validation_db_metrics_frequency": 3600,
        "workload_validation_db_metrics_config": {
          "hana_db_user": "system",
          "sid": "DEH",
          "hana_db_password_secret_name": "instance-id-hana-db-password-secret",
          "hostname": "localhost",
          "port": "30015"
        },
        "collect_process_metrics": false
      },
      "discovery_configuration": {
        "enable_discovery": true,
        "enable_workload_discovery": true
      },
      "hana_monitoring_configuration": {
        "enabled": false
      }
    }
  • 以下示例使用用户名和密码进行 SAP HANA 身份验证。我们建议您改用 Secret Manager 中的 Secret 或安全用户存储区 (hdbuserstore) 中的密钥进行 SAP HANA 身份验证。
    {
      "provide_sap_host_agent_metrics": true,
      "bare_metal": false,
      "log_level": "INFO",
      "log_to_cloud": true,
      "collection_configuration": {
        "collect_workload_validation_metrics": true,
        "workload_validation_db_metrics_frequency": 3600,
        "workload_validation_db_metrics_config": {
          "hana_db_user": "system",
          "sid": "DEH",
          "hana_db_password": "TempPa55word",
          "hostname": "localhost",
          "port": "30015"
        },
        "collect_process_metrics": false
      },
      "discovery_configuration": {
        "enable_discovery": true,
        "enable_workload_discovery": true
      },
      "hana_monitoring_configuration": {
        "enabled": false
      }
    }

如需了解 Agent for SAP 支持的配置参数,请参阅配置参数

后续步骤