使用 AWS 服务监控 SAP RHEL Pacemaker 集群 - AWS 规范指引

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 AWS 服务监控 SAP RHEL Pacemaker 集群

Harsh Thoria、Randy Germann 和 RAVEENDRA Voore,Amazon Web Services

Summary

此模式概述了使用亚马逊和 CloudWatch 亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 监控和配置适用于 SAP 应用程序和 SAP HANA 数据库服务的红帽企业 Linux (RHEL) Pacemaker 集群的警报的步骤。

该配置使您能够借助 CloudWatch 日志流、指标筛选器和警报监控 SAP SCS 或 ASCS、入队复制服务器 (ERS) 和 SAP HANA 群集资源处于 “已停止” 状态时。Amazon SNS 会向基础设施或 SAP Basis 团队发送电子邮件,告知已停止集群的状态。

您可以使用 AWS CloudFormation 脚本或 AWS 服务控制台为此模式创建 AWS 资源。此模式假设您使用的是控制台;它不提供 CloudFormation 脚本或涵盖 CloudWatch 和 Amazon SNS 的基础设施部署。Pacemaker 命令用于设置集群提醒配置。

先决条件和限制

先决条件

限制

  • 此解决方案目前适用于 RHEL 版本 7.3 及更高版本的基于 Pacemaker 的集群。尚未在 SUSE 操作系统上测试过。

产品版本

  • RHEL 7.3 及更高版本

架构

目标技术堆栈

  • RHEL Pacemaker 提醒事件驱动型代理

  • 亚马逊弹性计算云(亚马逊 EC2)

  • CloudWatch 警报

  • CloudWatch 日志组和指标筛选器

  • Amazon SNS

目标架构

下图显示了此解决方案的组件和工作流。

用于监控 SAP RHEL Pacemaker 集群的架构

自动化和扩展

  • 您可以使用 CloudFormation 脚本自动创建 AWS 资源。还可以使用其他指标筛选器来扩展和覆盖多个集群。

工具

AWS 服务

工具

  • CloudWatch agent(unified)是一种工具,用于从 EC2 实例收集系统级指标、日志和跟踪,并从您的应用程序中检索自定义指标。

  • Pacemaker 提醒代理(适用于 RHEL 7.3 及更高版本)可在 Pacemaker 集群中发生变化(例如资源停止或重新启动)时触发操作。

最佳实践

  • 有关在上使用 SAP 工作负载的最佳实践 AWS,请参阅 Well-Architecte AWS d Framework 的 SAP 镜头

  • 考虑为 SAP HANA 集群设置 CloudWatch 监控所涉及的成本。有关详情,请参阅 CloudWatch 文档

  • 考虑使用寻呼机或工单机制处理 Amazon SNS 提醒。

  • 请务必查看 P C、Pacemaker 和围栏代理的 RPM 软件包的 RHEL 高可用性 (HA) 版本。 AWS

操作说明

Task说明所需技能

创建一个 SNS 主题。

  1. 登录 AWS 管理控制台 并在 v3/home 上打开亚马逊 SNS 控制台。https://console.aws.amazon.com/sns/

  2. 在 Amazon SNS 控制面板上的 Common actions(常用操作)下,选择 Create Topic(创建主题)。 

  3. 创建新主题对话框中,为类型选择标准

  4. 对于主题名称,输入主题的名称(例如 my-topic)。

  5. 选择创建主题

    这将创建一个 SNS 主题,其中包含允许您发布通知的资源策略。

  6. 复制主题 ARN(例如 arn:aws:sns:us-east-1:111122223333:my-topic)。您将在后面的步骤中用到此 ARN。

AWS 管理员

修改 SNS 主题的访问策略。

  1. 在 Amazon SNS 控制台的导航窗格中,选择主题,然后选择您创建的主题。 

  2. 选择编辑,然后转到访问策略部分。

  3. 确保访问策略中包含 CloudWatch 允许发布到此主题的服务主体之一。例如:

       {        "Sid": "Allow AWS CloudWatch to Publish to this SNS topic",       "Effect": "Allow",       "Principal": {         "Service": [           "cloudwatch.amazonaws.com"         ]       },       "Action": "SNS:Publish",       "Resource": "arn:aws:sns:us-east-1:111122223333:my-topic"     }
  4. 选择保存更改

AWS 系统管理员

订阅 SNS 主题。

  1. 在 Amazon SNS 控制台的导航窗格中,选择订阅创建订阅

  2. 对于主题 ARN,粘贴您在第一个任务中创建的 ARN。

  3. 对于协议,选择电子邮件

  4. 对于端点,输入负责 SAP Pacemaker 集群并应接收通知的人员或团队的电子邮件地址。例如,这可以是 SAP Basis 的电子邮件地址或基础设施团队的分发列表。

  5. 选择创建订阅

  6. 在您的电子邮件应用程序中,打开 “ AWS 通知” 中的消息并确认您的订阅。

您的 Web 浏览器将显示来自 Amazon SNS 的确认响应。

AWS 系统管理员
Task说明所需技能

检查集群状态。

使用 pcs status 命令确认资源处于联机状态。

SAP Basis 管理员
Task说明所需技能

在主集群实例上配置 Pacemaker 提醒代理。

登录主集群中的 EC2 实例并运行以下命令:

install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample touch /var/lib/pacemaker/alert_file.sh touch /var/log/pcmk_alert_file.log chown hacluster:haclient /var/log/pcmk_alert_file.log chmod 600 /var/log/pcmk_alert_file.log pcs alert create id=alert_file description="Log events to a file." path=/var/lib/pacemaker/alert_file.sh pcs alert recipient add alert_file id=my-alert_logfile value=/var/log/pcmk_alert_file.log
SAP Basis 管理员

在辅助集群实例上配置 Pacemaker 提醒代理。

登录辅助群集中的辅助群集 EC2 实例并运行以下命令:

install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample touch /var/lib/pacemaker/alert_file.sh touch /var/log/pcmk_alert_file.log chown hacluster:haclient /var/log/pcmk_alert_file.log chmod 600 /var/log/pcmk_alert_file.log
SAP Basis 管理员

确认 RHEL 提醒资源已创建。

使用以下命令验证是否已创建提醒资源:

pcs alert

命令的输出将如下所示:

[root@xxxxxxx ~]# pcs alert Alerts: Alert: alert_file (path=/var/lib/pacemaker/alert_file.sh) Description: Log events to a file. Recipients: Recipient: my-alert_logfile (value=/var/log/pcmk_alert_file.log)
SAP Basis 管理员
Task说明所需技能

安装代 CloudWatch 理。

有几种方法可以在 EC2 实例上安装 CloudWatch 代理。使用命令行:

  1. 下载 CloudWatch 代理软件包: 

    wget https://s3.<region>.amazonaws.com/amazoncloudwatch-agent-region/redhat/amd64/latest/amazon-cloudwatch-agent.rpm

    其中<region>是 EC2 实例 AWS 区域 所在的位置(例如,us-west-2)。

  2. (可选)验证软件包签名。有关说明,请参阅 CloudWatch 文档中的验证 CloudWatch 代理软件包的签名

  3. 在第一个实例上安装代理:

    sudo rpm -U ./amazon-cloudwatch-agent.rpm
  4. 对辅助实例重复此操作。

有关详情,请参阅 CloudWatch 文档

AWS 系统管理员

将 IAM 角色附加到 EC2 实例。

要使 CloudWatch 代理能够从实例发送数据,您必须将 IAM CloudWatchAgentServerRole角色附加到每个实例。或者,您可以将 CloudWatch 代理策略添加到现有的 IAM 角色中。有关详情,请参阅 CloudWatch 文档

AWS 管理员

将 CloudWatch 代理配置为监视主群集实例上的 Pacemaker 警报代理日志文件。

  1. 通过运行以下命令配置主集群实例:

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
  2. 对于 Linux,选择 1,然后为您的监控策略选择选项。

  3. 对于是否要监控任何日志文件的问题,请选择,然后从 pcs alert 命令提供 Pacemaker 日志文件的路径。就我们而言,为 var/log/pcmk_alert_file.log

  4. 提供日志组和日志流的名称。如果您未指定日志流,则使用 AWS 实例 ID 作为默认值。

  5. 对辅助集群实例重复第 1-4 步。

AWS 管理员

在主群集和辅助群集实例上启动 CloudWatch 代理。

要启动代理,请在主群集和辅助群集中的 EC2 实例上运行以下命令:

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
AWS 管理员
Task说明所需技能

设置 CloudWatch 日志组。

  1. 在以下位置打开 CloudWatch 控制台 https://console.aws.amazon.com/cloudwatch/

  2. 在导航窗格中,依次选择日志组创建日志组。               

  3. 输入日志组的名称,然后选择创建日志组

CloudWatch 代理会将 Pacemaker 警报文件作为 CloudWatch 日志流传输到日志组。

AWS 管理员

设置 CloudWatch 指标筛选条件。

指标筛选器可帮助您搜索模式,例如stop <cluster-resource-name>在 CloudWatch 日志流中。识别出此模式后,指标筛选器会更新自定义指标。

  1. 在 CloudWatch 控制台的导航窗格中,选择日志组

  2. 选择您在上一个任务中创建的日志组的名称。

  3. 选择 Actions(操作)Create metric filter(创建指标筛选条件)

  4. 筛选模式中,输入要使用的筛选模式(例如 stop ABC_scs),以匹配名为 ABC_scs 的 SAP SCS 集群资源的停止事件。

    有关更多信息,请参阅 CloudWatch 文档中的过滤模式语法

  5. (可选)要测试您的筛选条件模式,请在 Test Pattern(测试模式)下,输入一个或多个用于测试模式的日志事件。每个日志事件必须单独占一行,因为换行符用于在日志事件消息框中分隔日志事件。

  6. 选择 Next(下一步),然后为筛选条件输入名称。

  7. 指标详细信息下,在指标命名空间中,输入要发布指标的 CloudWatch 命名空间的名称(例如,sapcluster_monitoring)。如果该命名空间尚不存在,请选择新建

  8. 指标名称中,输入新指标的名称(例如 sapcluster_<sid>,其中 <sid> 是 SAP 系统标识名称)。

  9. 对于指标值,输入 1。 

    或者输入令牌,如 $size。对于包含 size 字段的每个日志事件,此操作会以 size 字段中的数值为增量增加该指标。

  10. 对于默认值,输入 0

  11. 选择 Create metric filter(创建指标筛选条件)

当指标筛选器在步骤 4 中识别出模式时,它会将 CloudWatch 自定义指标的值更新sapcluster_abc1

CloudWatch 警报会SAP-Cluster-QA1-ABC监控该指标,sapcluster_abc并在指标值变为 1 时发出 SNS 通知。这表示集群资源已停止,需要采取措施。

AWS 管理员、SAP Basis 管理员

为 SAP ASCS/SCS 和 ERS CloudWatch 指标设置指标警报。

根据单个指标创建警报:

  1. 在 CloudWatch 控制台的导航窗格中,选择警报所有警报

  2. 选择创建警报

  3. 选择 Select Metric(选择指标)

  4. 搜索在上一个任务中创建的自定义指标 sapcluster_monitoring

  5. 选择 SAP SCS 的指标名称(例如 sapcluster_<abc>,也是在上一个任务中创建的)。

  6. 绘成图表的指标选项卡上,设置以下项:

    • 对于 Statistic(统计数据),选择 Maximum(最大)

    • 对于周期,选择 1 分钟

    • 对于阈值类型,选择静态,并将 sapcluster_<sid> 的阈值设置为大于或等于 1 的值。

  7. 选择下一步

  8. 对于通知,请选择您在第一篇操作说明中创建的 SNS 主题。

  9. 对于名称描述,提供警报名称和简短描述,然后选择下一步

  10. 选择创建警报

AWS 管理员

为 SAP HANA CloudWatch 指标设置指标警报。

重复上一个任务中设置 CloudWatch 指标警报的步骤,并进行以下更改:

  • 在第 5 步中,选择 SAP HANA 的指标名称(例如 sapcluster_db_<abc>)。

  • 在第 6 步中,将 sapcluster_<sid> 的阈值设置为大于 0 的值。

AWS 管理员

相关资源

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip