适用于 SAP HANA 的监控代理 V2.0 规划指南

借助适用于 SAP HANA 的 Google Cloud 监控代理,您可以使用 Cloud Monitoring 在 Google Cloud 控制台中显示 SAP HANA 系统指标。该代理会作为 systemd 服务在宿主机上运行。

为了收集指标,适用于 SAP HANA 的监控代理会使用 SAP 在 SAP HANA SQL 和系统视图参考中定义的 SQL 语法和系统视图来查询 SAP HANA。

您可以将 SAP HANA 内存利用率指标用于容量规划,或帮助管理基于内存的 SAP HANA 许可。将 SAP HANA 指标与 Compute Engine 指标相关联可帮助您确定使用情况和性能趋势。

如需更深入地了解 SAP HANA 安装,您可以定义自定义查询,以捕获更多指标。

您可以使用 Cloud Monitoring 创建信息中心,直观呈现您的 SAP HANA 指标,并根据指标阈值设置提醒。如需查看如何设置信息中心和提醒的完整信息,请参阅 Cloud Monitoring 文档

Cloud Monitoring 针对指标的价格

适用于 SAP HANA 的监控代理收集并发送到 Monitoring 的指标会被 Monitoring 分类为可计费指标。Monitoring 按提取量对计费指标进行定价。

查询的采样间隔(决定了适用于 SAP HANA 的监控代理从 SAP HANA 查询指标的频率)会影响发送到 Monitoring 的指标数量。

如需详细了解 Monitoring 价格,请参阅 Google Cloud Observability 的价格

如需详细了解查询采样间隔,请参阅查询的采样间隔

查询:默认和自定义

适用于 SAP HANA 的监控代理使用 SQL 查询从 SAP HANA 收集指标。该代理包含一组默认查询,您可以添加自定义查询。

默认查询和自定义查询都会检索由 SAP HANA 系统视图定义的指标,SAP HANA SQL 和系统视图参考文档中介绍了相关信息。

默认查询类型

默认查询是收集最常用的 SAP HANA 指标的内置查询。

默认查询的频率由 configuration.yaml 文件开头处的全局 sample_interval 属性决定。默认情况下,此值设置为 300 秒(5 分钟)。您可以修改此全局默认值。与自定义查询不同,您无法为单个默认查询设置采样间隔。

虽然您无法修改默认查询,但您可以在代理配置文件 configuration.yaml 中停用任何默认查询。

如需详细了解默认查询、它们收集的指标及其使用的基本 SQL 语句,请参阅默认查询参考文档

自定义查询类型

如需创建自定义查询,您可以在适用于 SAP HANA 的监控代理的 configuration.yaml 文件中定义它们。

对于自定义查询,您可以为每个查询指定 _sample_interval_,以替换所有查询的默认采样间隔。如需了解详情,请参阅查询的采样间隔

configuration.yaml 文件包含两个默认停用的自定义查询。您可以将系统提供的这些自定义查询用作模型,以创建自己的自定义查询。示例自定义查询如下面的自定义查询示例所示。

自定义查询的错误处理

在将查询提交到 SAP HANA 之前,代理不会验证自定义查询中的 SQL。

如果自定义查询失败并出现 SQL 异常,或者查询中的配置列与 SAP HANA 返回的结果不匹配,则代理会向日志中写入错误。在这两种情况下,代理都会运行自定义查询并将错误消息写入日志,直到自定义查询得到更正。

如需了解自定义查询所需的 SQL 语法,请参阅 SAP HANA SQL 和系统视图参考文档

查询的采样间隔

您可以为所有查询定义全局采样间隔,并为自定义查询定义单独的采样间隔。采样间隔决定了监控代理从 SAP HANA 中查询指标的频率。

所有查询的默认采样间隔均为 300 秒(5 分钟)。您可以在 configuration.yaml 文件开头处的 sample_interval 属性上指定不同的值,从而调整默认采样间隔。

通过在查询定义中指定 sample_interval 属性,您可以替换单个自定义查询的默认采样间隔。

安装架构

您可以在 Compute Engine 虚拟机或裸金属解决方案服务器上安装适用于 SAP HANA 的监控代理。

您可以在与 SAP HANA 相同的主机上或其他主机上安装代理。

该代理还可以监控在本地主机或其他云平台的主机上运行的 SAP HANA 实例,前提是这些主机可以使用适当配置的服务账号访问 Google Cloud API。

从中央 Compute Engine 虚拟机进行远程收集

下图展示了安装架构,其中代理安装在与运行 SAP HANA 实例的虚拟机或服务器不同的主机虚拟机上。

HANA 监控代理设置 1

Compute Engine 虚拟机和裸金属解决方案服务器上的本地收集

如果防火墙规则限制对环境的访问,您可以在同一 Compute Engine 虚拟机或裸金属解决方案服务器上安装具有 SAP HANA 实例的代理。

下图展示了安装架构,其中代理单独安装在 Compute Engine 虚拟机和裸金属解决方案服务器上。

HANA 监控代理设置 2

混合收集架构

您还可以将代理安装在与 SAP HANA 实例相同的主机虚拟机上,并将代理配置为监控裸金属解决方案服务器上的 SAP HANA 实例。

HANA 监控代理设置 3

如果要监控多个 Google Cloud 项目中的 SAP HANA 实例,则需要在包含要监控的 SAP HANA 实例的每个 Google Cloud 项目中为 SAP HANA 至少安装一个监控代理。

SAP HANA 监控代理的高可用性配置

如果要监控高可用性集群中的 SAP HANA 实例,请在并非集群内的节点的主机上安装此代理,以确保代理不受故障切换的影响。

在配置文件 configuration.yaml 中,我们建议您根据浮动 IP 地址配置监控。使用此配置时,系统只会收集当前活跃节点的指标。

HANA 监控代理设置 4

支持的操作系统

适用于 SAP HANA 的监控代理支持以下操作系统的常规产品和 SAP 产品:

  • Red Hat Enterprise Linux (RHEL) 7、8 和 9 说明
  • SUSE Linux Enterprise Server (SLES) 12 和 15

身份验证和访问权限

适用于 SAP HANA 的监控代理需要使用 Identity and Access Management (IAM) 服务账号进行 Google Cloud 身份验证,并获得 Google Cloud 资源的访问权限。

分配给该服务账号的 IAM 角色决定了此代理有权与哪些 Google Cloud 资源进行交互。

除非您使用现有或默认服务账号,否则您需要在 Google Cloud 项目中创建服务账号,并为服务账号分配一个或多个角色。

所需 IAM 角色

无论您是使用新的服务账号、现有服务账号还是默认服务账号,该服务账号都必须包含向该监控代理授予其所需权限的角色。

预定义的 IAM Monitoring Metric Writer 角色 (roles/monitoring.metricWriter) 授予将指标写入 Monitoring 的权限。

如果您使用 Secret Manager 存储密码,则需要满足以下条件:

  • 服务账号必须包含 Secret Manager Secret Accessor (roles/secretmanager.secretAccessor) 角色,该角色可授予访问 Secret Manager 中存储的密文的权限。
  • 虚拟机实例必须具有 cloud-platform 访问权限范围,该范围允许访问 Secret Manager API。如需了解详情,请参阅访问 Secret Manager API

指定服务账号

如果代理在 Compute Engine 虚拟机上运行,则代理默认使用主机虚拟机的服务账号。您无需在配置文件中指定服务账号。

主机虚拟机服务账号通常是您或您的同事创建的具备有限角色的服务账号,但它也可以是 Compute Engine 默认服务账号,该账号默认拥有广泛的权限。

如果您需要使用除主机虚拟机服务账号以外的服务账号,或者代理未在 Compute Engine 虚拟机上运行,则需要使用 JSON 服务账号密钥创建服务账号。您将 JSON 密钥文件存储在可访问的位置,并在代理的 configuration.yaml 文件的 service_account_json 属性中指定该 JSON 文件的路径。

如需详细了解服务账号、角色和权限,请参阅:

针对 Google Cloud API 的访问权限

如果代理未在 Compute Engine 虚拟机上运行,则需要与 Google Cloud API 建立连接。如需了解详情,请参阅配置适用于本地主机的专用 Google 访问通道

Cloud Monitoring 中的 SAP HANA 指标

适用于 SAP HANA 的监控代理会将其从 SAP HANA 检索的数据作为自定义指标数据发送到 Monitoring。为了发送数据,此代理会使用 Cloud Monitoring API,该 API 在创建 Google Cloud 项目时默认启用。

如需简要了解 Monitoring,请参阅 Cloud Monitoring 简介

在 Cloud Monitoring 中查找 SAP HANA 数据

一旦 Monitoring 收到来自 SAP HANA 的指标数据,您就可以立即查看这些数据。

如需在 Monitoring 中查看 SAP HANA 数据,请使用信息中心编辑器或 Metrics Explorer 工具在 Google Cloud 控制台中创建图表,并在指标字段中输入 sap_hana。然后,您可以从包含 sap_hana 的所有可用指标类型的下拉列表中按指标类型选择数据。

例如,在 Monitoring 中,如需仅显示特定 SAP HANA 实例的数据,您可以使用 SAP HANA 主机虚拟机的名称(即 Monitoring 中的指标标签)过滤您的视图。

有关详情,请参阅:

GitHub 上的 SAP HANA 的信息中心定义

在 GitHub 上,您可以找到可在 Google Cloud 项目中安装的 SAP HANA 的自定义信息中心定义。请参阅 GitHub 上的 GoogleCloudPlatform/monitoring-dashboard-samples 代码库。SAP HANA 信息中心定义文件 performance.jsonREADME.md 文件位于 /dashboards/sap-hana 子目录中。

安装 SAP HANA 的自定义信息中心后,您可以按原样使用,也可以在 Google Cloud 控制台中进一步自定义。

如需安装 SAP HANA 的自定义信息中心,请参阅可安装的信息中心

提醒通知

如需在指标达到您定义的阈值时收到提醒,您可以在 Monitoring 中配置提醒通知。

如需了解详情,请参阅提醒简介

密码管理

默认情况下,适用于 SAP HANA 的监控代理使用预定义的 SAP HANA SYSTEM 数据库用户账号查询 SAP HANA 指标。针对该代理监控的每个 SAP HANA 数据库,您都必须提供数据库用户账号的密码。

如需安全地向适用于 SAP HANA 的监控代理提供密码,您可以使用 Secret Manager,这是 Google Cloud 的一项付费服务。

或者,您可以在 configuration.yaml 文件中每个实例定义的 password 属性中,以纯文本形式指定数据库用户密码。

如需了解 Secret Manager 价格,请参阅价格

SSL/TLS 支持

如果 SAP HANA 实例使用传输层安全协议 (TLS)/安全套接字层 (SSL) 协议来保护 SAP HANA 数据库与使用 SAP HANA SQL 接口的客户端之间的通信,则需要在 configuration.yaml 文件的实例定义中指定 enable_ssl: true,以在适用于 SAP HANA 的监控代理中启用 TLS/SSL 支持。

如果 SAP HANA 还配置为验证证书,您可以将代理配置为支持证书验证,并指定密钥库和信任库的路径和密码。

有关 SSL 和证书检查的代理配置属性的说明,请参阅配置属性说明

日志记录

首次启动适用于 SAP HANA 的监控代理时,该代理会在本地主机上创建一个日志文件 /var/log/google-saphanamonitoring-agent.log,所有日志条目都会写入其中。

默认情况下,当这个日志文件达到 10.5 MB 时,在新日志附加到该文件时,较旧的日志会被舍弃。

该代理的日志记录由 conf/logging.properties 文件配置。

支持

如有 Google Cloud 基础架构或服务方面的问题,请与 Customer Care 联系。您可以在 Google Cloud 控制台中的“支持概览”页面上找到联系信息。如果 Customer Care 确定问题在于您的 SAP 系统,会将您引荐给 SAP 支持。

对于与 SAP 产品有关的问题,请通过 SAP 支持记录您的支持请求。 SAP 会评估支持服务工单,如果该问题似乎是 Google Cloud 基础架构问题,则 SAP 会将工单转移到其系统中的相应 Google Cloud 组成团队:BC-OP-LNX-GOOGLEBC-OP-NT-GOOGLE

支持要求

您必须满足最低支持方案要求,才能获得对 SAP 系统及其使用的 Google Cloud 基础架构和服务的支持。

如需详细了解 Google Cloud 上的 SAP 的最低支持要求,请参阅:

定义自定义查询

您可以在 configuration.yaml 文件中定义自定义查询。

自定义查询定义包含描述查询和返回指标的属性值,以及从 SAP HANA 中检索数据的 SQL 语句。

如需了解 SAP HANA 提供用于查询的系统视图的完整列表,请参阅 SAP HANA SQL 和系统视图参考

请注意,创建自定义查询时,Monitoring 最适合用于摘要或汇总数据,而并非用于存储高基数数据点。使用 SQL 聚合函数(如 SUM、AVG、COUNT、MIN 和 MAX)限制返回的记录数量。

如需查看自定义查询的示例,请参阅自定义查询示例

自定义查询属性

下表介绍了用于定义自定义查询的属性。

属性 说明
sample_interval Int configuration.yaml 文件的顶部,定义查询之间的默认时间间隔(以秒为单位)。在自定义查询的定义中,该属性仅定义该查询的采样间隔,并取代默认值。
query_timeout Int 在查询失败之前允许执行查询的时间(以秒为单位)。默认时间为 300 秒(5 分钟)。
queries 以下属性说明仅适用于自定义查询。
- name 字符串 查询的名称。
enabled 布尔值 确定代理是否将查询提交至 SAP HANA。有效值为 truefalse
description 字符串 您对查询检索到的指标的说明。
sql 字符串 您指定的代理向 SAP HANA 发出的 SQL 语句。SQL 语句必须符合 SAP 定义的 SQL 语法。如需了解详情,请参阅 SAP HANA SQL 和系统视图参考文档
columns 每列定义描述了一个由 Monitoring 处理的指标。
- name 字符串 指标的名称,用于定义 Monitoring 中的指标类型。
metric_type 字符串 供 Monitoring 处理,指标类型是 GAUGE 或 CUMULATIVE。
value_type 字符串 供 Monitoring 处理,指标的数据类型是:BOOL、INT64 或 DOUBLE。指定指标类型支持的一种数据类型。如需了解详情,请参阅支持的组合
description 字符串 指标的说明。
units 字符串 报告指标值时所用的单位。如需了解详情,请参阅 unit 字段文档

自定义查询示例

以下示例展示了两个自定义查询。安装适用于 SAP HANA 的监控代理时,这些查询也会包含在 /usr/sap/google-saphanamonitoring-agent/conf/ 目录内创建的 configuration.yaml 文件中。示例查询仅可用作自定义查询的模型。

- name: custom_memory_utilization
  enabled: false
  # sample_interval: 120
  description: |
    Custom Total memory utilization by services
  sql: |
    SELECT
           SUM(TOTAL_MEMORY_USED_SIZE) AS "mem_used",
           SUM(PHYSICAL_MEMORY_SIZE) AS "resident_mem_used"
    FROM M_SERVICE_MEMORY;
  columns:
  - name: mem_used
    metric_type: GAUGE
    value_type: INT64
    description: |
      Amount of memory from the memory pool.
    units: By
  - name: resident_mem_used
    metric_type: GAUGE
    value_type: INT64
    description: |
      Amount of memory used in total by all the services.
    units: By
- name: custom_total_memory_usage
  enabled: false
  # sample_interval: 120
  description: |
    Custom Amount of memory used in total by all column-tables
  sql: |
    SELECT
           SUM(MEMORY_SIZE_IN_TOTAL) AS "table_mem_used"
    FROM M_CS_TABLES;
  columns:
  - name: table_mem_used
    metric_type: GAUGE
    value_type: INT64
    description: |
      Amount of memory used in total (sum of memory size in the main, delta, and history
      parts) by all column-tables.
    units: By
# Add additional queries for custom metrics

默认查询参考

适用于 SAP HANA 的监控代理的内置默认查询会从 SAP HANA 检索以下信息。

如果您不需要某个默认查询提供的指标,可以通过在 configuration.yaml 文件中的查询名称后面指定 enabled: false 来停用该查询。

default_column_queries

内置查询 default_column_queries 可从 SAP HANA M_CS_ALL_COLUMNS 系统视图中按列检索内存用量信息。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
列内存大小 column/memory/total_size 指定 MEMORY_SIZE_IN_MAIN 和 MEMORY_SIZE_IN_DELTA 列的总和。

default_component_queries

内置查询 default_component_queries 可从 SAP HANA 按逻辑组件检索服务特定的内存用量。该查询使用 SAP HANA M_SERVICE_COMPONENT_MEMORY 系统视图。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
组件内存用量 component/memory/total_used_size 逻辑组件当前的内存用量。

default_connection_query

内置查询 default_connection_query 使用 SAP HANA M_CONNECTIONS 系统视图,从 SAP HANA 中检索正在运行的连接和空闲连接数。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
系统连接 system/connection/total 系统的空闲连接和正在运行的连接数量。

default_cpu_queries

内置查询 default_cpu_queries 使用 SAP HANA M_HOST_RESOURCE_UTILIZATION 系统视图,从 SAP HANA 中检索 CPU 使用情况信息。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
CPU 使用时间 host/cpu/usage_time 所花费的 CPU 时间。

default_alert_query

内置查询 default_alert_query 使用 _SYS_STATISTICS 架构的 SAP HANA STATISTICS_CURRENT_ALERTS 视图,从 SAP HANA Statistics Server 中检索当前提醒的数量和分级。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
提醒数量 system/alert/total 通过系统统计信息获得的当前提醒数量:“1”“2”“3”“4”或“5”。

default_host_queries

内置查询 default_host_queries 会从 SAP HANA 检索主机的内存用量。该查询使用 SAP HANA M_HOST_RESOURCE_UTILIZATION 系统视图。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
主机内存大小 host/memory/total_size 主机上的物理内存总量。
已用的主机内存 host/memory/total_used_size 主机上已使用的物理内存。
交换空间大小 host/swap_space/total_size 主机上的交换内存总量。
已用交换空间 host/swap_space/total_used_size 主机上已使用的交换内存
实例内存用量 host/instance_memory/total_used_size SAP HANA 进程当前实际使用的内存池的内存量。
已使用的实例内存峰值 host/instance_memory/total_peak_used_size 自实例启动以来,SAP HANA 进程所用的内存池的内存峰值(基于样本的值)。
已分配的实例内存 host/instance_memory/total_allocated_size 所有 SAP HANA 进程的内存池大小。
实例代码大小 host/instance_code/total_size 代码大小,包括 SAP HANA 进程的共享库。
已分配的实例共享内存 host/instance_shared_memory/total_allocated_size SAP HANA 进程的共享内存大小。

default_replication_query

内置查询 default_replication_query 使用 SAP HANA M_SERVICE_REPLICATION 系统视图,从 SAP HANA 中检索复制延迟信息。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
复制数据延迟时间 system/replication_data_latency/total_time 系统的数据复制延迟时间。

default_rowstore_query

内置查询 default_rowstore_query 使用 SAP HANA M_RS_TABLES 系统视图,从 SAP HANA 中检索行存储的大小。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
行存储的内存大小 rowstore/memory/total_size 行存储的内存大小,由固定部分和可变部分组成。

default_schema_type_queries

内置查询 default_schema_type_queries 使用 SAP HANA M_CS_TABLES 系统视图,从 SAP HANA 中检索内存用量和记录计数信息。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
架构内存大小 schema/memory/total_size 指定内存总大小,即主体、增量和历史记录部分中的内存大小之和。
架构记录计数 schema/record/total 指定记录的数量。

default_schema_queries

内置查询 default_schema_queries 使用 SAP HANA M_CS_TABLES 系统视图,从 SAP HANA 中检索架构使用情况信息。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
架构估算最大内存大小 schema/memory/estimated_max_total_size 指定满负载表(不包括未完成事务的数据)的估算最大内存消耗量。
架构上次压缩的记录计数 schema/record/last_compressed_total 指定上一次优化压缩运行期间,主体中的条目数。
架构读取计数 schema/read/total_count 指定对表或分区的读取访问次数。 这不是针对该表的 SELECT 语句的数量。一条 SELECT 语句可能包含多次读取访问。
架构写入计数 schema/write/total_count 指定表或分区的写入访问次数。 这并非此表的 DML 和 DDL 语句的数量。每条 DML 或 DDL 语句都可能涉及多次写入访问。
架构合并计数 schema/merge/total_count 指定在表或分区上执行的增量合并次数。

default_service_queries

内置查询 default_service_queries 会从 SAP HANA 中检索服务所用内存的相关信息。该查询使用 SAP HANA M_SERVICE_MEMORY 系统视图。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
已用的服务内存 service/memory/total_used_size 指定内存池中当前使用的内存量。
服务逻辑内存大小 service/logical_memory/total_size 从操作系统的角度指定虚拟内存大小。
服务物理内存大小 service/physical_memory/total_size 从操作系统的角度指定物理常驻内存大小。
服务代码大小 service/code/total_size 指定代码(包括共享库)的大小。
服务堆栈大小 service/stack/total_size 指定堆栈大小。
已分配的服务堆内存 service/heap_memory/total_allocated_size 指定内存池中的堆部分。
已使用的服务堆内存 service/heap_memory/total_used_size 指定当前使用的池堆内存量。
已分配的服务共享内存 service/shared_memory/total_allocated_size 指定内存池的共享内存部分。
已使用的服务共享内存 service/shared_memory/total_used_size 指定当前使用的池共享内存量。
服务压缩器已分配大小 service/compactor/total_allocated_size 指定内存池中在内存不足期间或许(如果取消固定)可以释放的部分。
服务压缩后可释放大小 service/compactors/total_freeable_size 指定内存不足期间可以释放的内存。
服务内存分配限制 service/memory/allocation_limit 指定最大内存池大小(可配置的值)。
服务内存有效分配上限 service/memory/effective_allocation_limit 根据其他进程的池大小(计算值),指定有效内存池的最大大小。

default_transaction_query

内置查询 default_transaction_query 使用 SAP HANA M_WORKLOAD 系统视图,从 SAP HANA 中检索事务总数(更新、提交和回滚)。

该查询会将以下指标发送到 Monitoring:

指标名称 指标 说明
系统事务 system/transaction/total_count 更新、提交和回滚事务的数量。

后续步骤