教程:为 SAP HANA 设置监控 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

教程:为 SAP HANA 设置监控

本教程演示了如何配置 CloudWatch Application Insights 来为 SAP HANA 数据库设置监控。您可以使用 CloudWatch Application Insights 自动控制面板可视化呈现问题详细信息、加快故障排除速度及缩短 SAP HANA 数据库的平均解决时间 (MTTR)。

支持的环境

CloudWatch Application Insights 支持部署用于以下系统和模式的 Amazon 资源。您提供并安装 SAP HANA 数据库软件和支持的 SAP 应用程序软件。

  • 单个 Amazon EC2 实例上的 SAP HANA 数据库 – 采用单节点、纵向扩展架构的 SAP HANA,内存高达 24TB。

  • 多个 Amazon EC2 实例上的 SAP HANA 数据库 – 采用多节点、横向扩展架构的 SAP HANA。

  • 跨可用区 SAP HANA 数据库高可用性设置 – 使用 SUSE/RHEL 集群在两个可用区中配置了高可用性的 SAP HANA。

注意

CloudWatch Application Insights 仅支持单个 SID HANA 环境。如果连接了多个 HANA SID,则只会为第一个检测到的 SID 设置监控。

支持的操作系统

CloudWatch Application Insights for SAP HANA 在以下操作系统中支持 x86-64 架构:

  • SuSE Linux 12 SP4 For SAP

  • SuSE Linux 12 SP5 For SAP

  • SUSE Linux 15

  • SuSE Linux 15 SP1

  • SuSE Linux 15 SP2

  • SuSE Linux 15 For SAP

  • SuSE Linux 15 SP1 For SAP

  • SuSE Linux 15 SP2 For SAP

  • SuSE Linux 15 SP3 For SAP

  • SuSE Linux 15 SP4 For SAP

  • SuSE Linux 15 SP5 For SAP

  • 适用于 SAP 的 RedHat Linux 8.6(包含高可用性和更新服务)

  • 适用于 SAP 的 RedHat Linux 8.5(包含高可用性和更新服务)

  • 适用于 SAP 的 RedHat Linux 8.4(包含高可用性和更新服务)

  • 适用于 SAP 的 RedHat Linux 8.3(包含高可用性和更新服务)

  • RedHat Linux 8.2 For SAP(包含高可用性和更新服务)

  • RedHat Linux 8.1 For SAP(包含高可用性和更新服务)

  • RedHat Linux 7.9 For SAP(包含高可用性和更新服务)

功能

CloudWatch Application Insights for SAP HANA 具有以下功能:

  • SAP HANA 工作负载自动检测

  • 基于静态阈值自动创建 SAP HANA 告警

  • 基于异常检测自动创建 SAP HANA 告警

  • 自动识别 SAP HANA 日志模式

  • SAP HANA 健康控制面板

  • SAP HANA 问题控制面板

先决条件

您必须完成以下必需任务才能使用 CloudWatch Application Insights 配置 SAP HANA 数据库:

  • SAP HANA – 在 Amazon EC2 实例上安装处于运行状态且可访问的 SAP HANA 数据库 2.0 SPS05。

  • SAP HANA 数据库用户 — 必须在 SYSTEM 数据库和所有租户中创建具有监控角色的数据库用户。

    示例

    以下 SQL 命令将创建具有监控角色的用户。

    su - <sid>adm hdbsql -u SYSTEM -p <SYSTEMDB password> -d SYSTEMDB CREATE USER CW_HANADB_EXPORTER_USER PASSWORD <Monitoring user password> NO FORCE_FIRST_PASSWORD_CHANGE; CREATE ROLE CW_HANADB_EXPORTER_ROLE; GRANT MONITORING TO CW_HANADB_EXPORTER_ROLE; GRANT CW_HANADB_EXPORTER_ROLE TO CW_HANADB_EXPORTER_USER;
  • Python 3.6 – 在操作系统上安装 Python 3.6 或更高版本。使用最新的 Python 版本。如果未在操作系统中检测到 Python,则将安装 Python 3.8。

    请参阅 installation examples

  • Pip3 – 在操作系统中安装安装程序 pip3。如果未在操作系统中检测到 pip3,则安装该程序。

  • Amazon CloudWatch 代理 – 确保 Amazon EC2 实例上没有运行预先已有的 CloudWatch 代理。如果您安装了 CloudWatch 代理,请确保从现有 CloudWatch 代理配置文件中删除您在 CloudWatch Application Insights 中使用的资源的配置,以避免合并冲突。有关更多信息,请参阅 手动创建或编辑 CloudWatch 代理配置文件

  • Amazon Systems Manager 启用 – 在实例上安装 SSM Agent,并且实例必须启用了 SSM。有关如何安装 SSM Agent 的信息,请参阅 Amazon Systems Manager 用户指南中的使用 SSM Agent

  • Amazon EC2 实例角色 – 要配置数据库,您必须附加以下 Amazon EC2 实例角色。

    • 要启用 Systems Manager,您必须附加 AmazonSSMManagedInstanceCore 角色。有关更多信息,请参阅 Amazon Systems Manager 基于身份的策略示例

    • 要启用通过 CloudWatch 发出实例指标和日志,您必须附加 CloudWatchAgentServerPolicy。有关更多信息,请参阅创建用于 CloudWatch 代理的 IAM 角色和用户

    • 要读取存储在 Amazon Secrets Manager 中的密码,您必须将以下 IAM 内联策略附加到 Amazon EC2 实例角色。有关内联策略的更多信息,请参阅 Amazon Identity and Access Management 用户指南中的内联策略

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:ApplicationInsights-*" } ] }
  • Amazon Resource Groups – 要将应用程序添加到 CloudWatch Application Insights,您必须创建一个包含应用程序堆栈所用的所有相关 Amazon 资源的资源组。这包括运行 SAP HANA 数据库的 Amazon EC2 实例和 Amazon EBS 卷。如果每个账户有多个数据库,我们建议您创建一个资源组,而且该资源组包含每个 SAP HANA 数据库系统的 Amazon 资源。

  • IAM 权限 — 对于非管理员用户:

    • 您必须创建允许 Application Insights 创建服务相关角色的 Amazon Identity and Access Management(IAM)policy,并将其附加到您的用户身份。有关附加策略的步骤,请参阅 IAM policy

    • 用户必须有在 Amazon Secrets Manager 中创建密钥的权限,以存储数据库用户凭证。有关更多信息,请参阅示例:创建密钥的权限

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret" ], "Resource": "arn:aws:secretsmanager:*:*:secret:ApplicationInsights-*" } ] }
  • 服务相关角色 – Application Insights 使用 Amazon Identity and Access Management (IAM) 服务相关角色。当您在 Application Insights 控制台中创建首个 Application Insights 应用程序时,将会为您创建服务相关角色。有关更多信息,请参阅在 CloudWatch Application Insights 中使用服务相关角色

设置 SAP HANA 数据库以进行监控

要为 SAP HANA 数据库设置监控,请执行以下步骤

  1. 打开 CloudWatch 控制台

  2. 从左侧导航窗格中,选择基础设施监控下的 Application Insights

  3. Application Insights 页面会显示使用 Application Insights 监控的应用程序列表以及每个应用程序的监控状态。在右上角,选择 Add an application(添加应用程序)。

  4. Specify application details(指定应用程序详细信息)页面上,从 Resource group(资源组)下的下拉列表中选择包含 SAP HANA 数据库资源的 Amazon 资源组。如果尚未为应用程序创建资源组,则可以在 Resource group(资源组)下拉列表下选择 Create new resource group(创建新资源组)来创建一个资源组。有关创建资源组的更多信息,请参阅 Amazon Resource Groups 用户指南。

  5. Monitor CloudWatch Events(监控 CloudWatch Events)下,选中复选框将 Application Insights 监控与 CloudWatch Events 集成,以获取 Amazon EBS、Amazon EC2、Amazon CodeDeploy、Amazon ECS、Amazon Health API 和通知、Amazon RDS、Amazon S3 和 Amazon Step Functions 中的洞察。

  6. Integrate with Amazon Systems Manager OpsCenter(与 OpsCenter 集成)下,选中 Generate Amazon Systems Manager OpsCenter OpsItems for remedial actions(生成 OpsCenter OpsItems 以采取修复措施)旁边的复选框,以在检测到所选应用程序的问题时查看问题及接收通知。要跟踪为解析与 Amazon 资源相关的操作工作项 (OpsItem) 而执行的操作,请提供 SNS 主题 ARN。

  7. 您可以选择输入标签以帮助您标识和整理资源。CloudWatch Application Insights 支持基于标签和基于 Amazon CloudFormation 堆栈的资源组(Application Auto Scaling 组除外)。有关更多信息,请参阅 Amazon Resource Groups 和标签用户指南中的标签编辑器

  8. 选择 Next(下一步)继续设置监控。

  9. 查看检测到的组件页面上列出了 CloudWatch Application Insights 自动检测到的受监控组件及其工作负载。

    1. 要将工作负载添加到包含检测到的 SAP HANA 单节点工作负载的组件,请选择该组件,然后选择编辑组件

      注意

      包含检测到的 SAP HANA 多节点或 HANA 高可用性工作负载的组件仅支持一个组件上一个工作负载。

      
                                    CloudWatch Application Insights 控制台的“查看要监控的组件”页面:选择要编辑的组件。
    2. 要添加新的工作负载,请选择添加新工作负载

      
                                    CloudWatch Application Insights 控制台的“编辑组件”部分:选择用于添加工作负载的左下角按钮。
    3. 编辑工作负载完成后,选择保存更改

  10. 选择下一步

  11. 指定组件详细信息页面上,输入用户名和密码。

  12. 查看应用程序监控配置,然后选择 Submit(提交)。

  13. 此时将打开应用程序详细信息页面,您可以在该页面中查看应用程序摘要受监控组件和工作负载的列表以及未受监控的组件和工作负载。如果您选择组件或工作负载旁边的单选按钮,还可以查看配置历史记录日志模式和已创建的任何标签。提交配置时,您的账户会为 SAP HANA 系统部署所有指标和告警,这最多可能需要 2 个小时。

管理对 SAP HANA 数据库的监控

您可以执行以下步骤来管理 SAP HANA 数据库的用户凭证、指标和日志路径:

  1. 打开 CloudWatch 控制台

  2. 从左侧导航窗格中,选择基础设施监控下的 Application Insights

  3. Application Insights 页面会显示使用 Application Insights 监控的应用程序列表以及每个应用程序的监控状态。

  4. Monitored components(已监控组件)下,选择组件名称旁边的单选按钮。然后,选择 Manage monitoring(管理监控)。

  5. EC2 instance group logs(EC2 实例组日志)下,您可以更新现有的日志路径、日志模式集和日志组名称。此外,您可以额外添加最多三个 Application logs(应用程序日志)。

  6. Metrics(指标)下,您可以根据自己的要求选择 SAP HANA 指标。SAP HANA 指标名称的前缀是 hanadb。每个组件可以添加最多 40 个指标。

  7. HANA configuration(HANA 配置)下,输入 SAP HANA 数据库的密码和用户名,即 Amazon CloudWatch 代理连接到 SAP HANA 数据库时使用的用户名和密码。

  8. Custom alarms(自定义告警)下,您可以添加可由 CloudWatch Application Insights 监控的额外告警。

  9. 查看应用程序监控配置并选择 Submit(提交)。提交配置时,您的账户会为 SAP HANA 系统更新所有指标和告警,这最多可能需要 2 个小时。

配置告警阈值

CloudWatch Application Insights 会自动创建由告警监控的 Amazon CloudWatch 指标,以及该指标的阈值。当该指标在指定数量的评估期内超出阈值,告警将变为 ALARM (告警)状态。请注意,Application Insights 不会保留这些设置。

要编辑单个指标的告警,请按以下步骤操作:

  1. 打开 CloudWatch 控制台

  2. 在左侧导航窗格中,依次选择 Alarms(告警)和 All alarms(所有告警)。

  3. 选择 CloudWatch Application Insights 自动创建的告警旁边的单选按钮。然后选择 Actions(操作),并选择下拉菜单中的 Edit(编辑)。

  4. 编辑 Metric(指标)下的以下参数。

    1. Statistic(统计数据)下,选择其中一个统计数据或预定义百分比值,或指定一个自定义百分比值。例如,p95.45

    2. Period(时间段)下,选择告警的评估期。评估告警时,每个时间段都聚合到一个数据点。

  5. 编辑 Conditions(条件)下的以下参数。

    1. 选择指标是否必须大于、小于或等于阈值。

    2. 指定阈值。

  6. Additional configuration(其他配置)下,编辑以下参数:

    1. Datapoints to alarm(触发告警的数据点数)下,指定必须处于 ALARM(告警)状态以启动告警的数据点数或评估期。当两个值匹配时,如果超过指定的连续评估期数,将创建一个告警并进入 ALARM(告警)状态。要创建“m(最大为 n)”告警,则为第一个数据点指定的值应小于为第二个数据点指定的值。有关评估告警的更多信息,请参阅评估告警

    2. Missing data treatment(缺失数据处理)下,选择在缺失某些数据点时的告警行为。有关缺失数据处理的更多信息,请参阅配置 CloudWatch 告警处理缺失数据的方式

    3. 如果警报将百分比值作为监控的统计数据,将显示样本数少的百分比框。选择是评估还是忽略采样率较低的案例。如果选择忽略 (保持警报状态),在样本大小太小时,将始终保持当前警报状态。有关采样较低的百分位数的更多信息,请参阅 基于百分位数的 CloudWatch 告警和小数据样本

  7. 选择下一步

  8. 通知下面,选择一个在警报处于 ALARMOKINSUFFICIENT_DATA 状态时通知的 SNS 主题。

  9. 选择 Update alarm(更新告警)。

查看和排查 CloudWatch Application Insights 检测到的问题

以下各节提供了一些步骤,可帮助您解决在 Application Insights 上为 SAP HANA 配置监控时出现的常见问题排查情况。

SAP HANA 数据库达到内存分配限制

描述

由于内存压力过大,由 SAP HANA 数据库提供支持的 SAP 应用程序发生故障,导致应用程序性能下降。

解决方案

您可以检查动态创建的控制面板(显示相关指标和日志文件片段),找出导致问题的应用程序层。在以下示例中,问题可能是 SAP HANA 系统中数据负载过大。


                        超出内存分配。

已用内存分配超过总内存分配限制的 80% 的阈值。


                        日志组显示内存不足。

日志组显示方案 BNR-DATA 和表 IMDBMASTER_30003 内存不足。此外,日志组会显示问题发生的确切时间、当前全局位置限制、共享内存、代码大小和 OOM 预留分配大小。


                        日志组文本。

磁盘已满事件

描述

由 SAP HANA 数据库提供支持的 SAP 应用程序停止响应,导致无法访问数据库。

解决方案

您可以检查动态创建的控制面板(显示相关指标和日志文件片段),找出导致问题的数据库层。在以下示例中,问题可能是管理员无法启用自动日志备份,导致 sap/hana/log 目录填满。


                        日志组显示内存不足。

问题控制面板中的日志组小组件显示 DISKFULL 事件。


                        日志组显示内存不足。

SAP HANA 备份停止运行

描述

由 SAP HANA 数据库提供支持的 SAP 应用程序已停止工作。

解决方案

您可以检查动态创建的控制面板(显示相关指标和日志文件片段),找出导致问题的数据库层。

问题控制面板中的日志组小组件显示 ACCESS DENIED 事件。其中包括其他信息,如 S3 存储桶、S3 存储桶文件夹和 S3 存储桶区域。


                        日志组显示内存不足。

SAP HANA 的异常检测

对于特定的 SAP HANA 指标(例如线程数量),CloudWatch 应用统计和机器学习算法来定义阈值。这些算法只需最少的用户干预,即可持续分析 SAP HANA 数据库的指标,确定正常基线和表面异常。算法会生成一个异常检测模型,该模型生成表示正常指标行为的预期值范围。

异常检测算法将指标的季节性变化和趋势变化考虑在内。季节性变化可以是每小时、每天或每周,如以下 SAP HANA CPU 使用率示例所示。


                    日志组显示内存不足。

创建模型后,CloudWatch 异常检测会持续评估模型并对其进行调整,以确保模型尽可能准确。这包括重新训练模型,以便模型在指标值随着时间的推移而变化或突然发生变化时作出调整。此外还包括用于改进季节性、峰值或稀疏指标模型的预测器。

排查 Application Insights for SAP HANA 的问题

本节提供了帮助您解决 Application Insights 控制面板返回的常见错误的步骤。

无法添加超过 60 个监控指标

返回错误Component cannot have more than 60 monitored metrics.

根本原因The current metric limit is 60 monitor metrics per component.

解决方法:删除遵守限制所不需要的指标。

载入流程之后未显示 SAP 指标或告警。

返回错误:在 Amazon Systems Manager Run 命令中,AWS-ConfigureAWSPackage 失败。

输出内容显示以下错误:

Unable to find a host with system database, for more info rerun using -v

                    日志组显示内存不足。

解决方法:用户名和密码可能不正确。验证用户名和密码是否有效,然后重新运行载入过程。

输出内容显示以下安装错误:

ERROR: Can not execute `setup.py` since setuptools is not available in the build environment.

或者

[SSL: CERTIFICATE_VERIFY_FAILED]

解决方法:使用以下一条示例 SUSE Linux 命令来安装 Python:

示例 1

sudo zypper install -y python36

示例 2

安装最新的 Python 3.8 版本

wget https://www.python.org/ftp/python/3.8.<LATEST_RELEASE>/Python-3.8.<LATEST_RELEASE>.tgz tar xf Python-3.* cd Python-3.*/ sudo zypper install make gcc-c++ gcc automake autoconf libtool sudo zypper install zlib-devel sudo zypper install libopenssl-devel libffi-devel ./configure --with-ensurepip=install sudo make sudo make install sudo su python3.8 -m pip install --upgrade pip setuptools wheel