Skip to main content
NetApp data management solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

使用 AWS Lambda 函数进行 FSx ONTAP监控和自动调整大小

贡献者 kevin-hoke

本页介绍了监控 AWS FSx ONTAP和根据阈值自动调整大小的自动化。

概述:通过 AWS Lambda 函数监控和自动调整 FSx ONTAP

FSx ONTAP是 AWS 上的第一方企业级云存储服务,它基于流行的NetApp ONTAP文件系统构建,提供高度可靠、可扩展、高性能且功能丰富的文件存储。

FSx ONTAP提供无缝的部署和管理体验。无需任何存储专业知识即可开始使用。为了简化监控,可以使用 AWS lambda 函数(根据阈值自动调整总存储容量、卷大小或 LUN 大小)。  本文档提供了创建自动化设置的分步指南,该设置定期监控 FSx ONTAP ,在超过用户指定的阈值时发出通知并调整大小,并通知管理员调整大小活动。

功能

该解决方案提供以下功能:

  • 监控能力:

    • FSx ONTAP整体存储容量的使用情况

    • 每个卷的使用情况(精简配置/厚配置)

    • 每个 LUN 的使用情况(精简配置/厚配置)

  • 当超出用户定义的阈值时,可以调整上述任何一项的大小

  • 通过电子邮件接收使用警告和调整大小通知的警报机制

  • 能够删除超过用户定义阈值的快照

  • 能够获取相关FlexClone卷和快照的列表

  • 能够定期监控检查

  • 无论是否接入互联网,均可使用该解决方案

  • 可以手动部署或使用 AWS CloudFormation 模板进行部署

  • 能够在单个 VPC 中监控多个 FSx ONTAP文件系统

先决条件

开始之前,请确保满足以下先决条件:

  • FSx ONTAP已部署

  • 连接到 FSx ONTAP 的私有子网

  • 已为 FSx ONTAP设置“fsxadmin”密码

高级架构
  • AWS Lambda 函数向 FSx ONTAP发出 API 调用,以检索和更新存储容量、卷和 LUN 的大小。

  • “fsxadmin”密码作为安全字符串存储在 AWS SSM 参数存储中,以增加安全性。

  • AWS SES(简单电子邮件服务)用于在发生调整大小事件时通知最终用户。

  • 如果在没有互联网访问的 VPC 中部署解决方案,则会设置 AWS SSM、FSx 和 SES 的 VPC 端点,以允许 Lambda 通过 AWS 内部网络访问这些服务。

该图描绘了该解决方案中使用的高级架构。

解决方案部署

自动部署

备注 涵盖单个 FSx ONTAP文件系统。

按照一系列步骤完成此解决方案的自动化部署:

步骤 1:克隆 GitHub 存储库

在本地系统上克隆 GitHub 存储库:

git clone https://github.com/NetApp/fsxn-monitoring-auto-resizing.git
步骤 2:设置 AWS S3 存储桶
  1. 导航到 AWS 控制台 > S3,然后单击 创建存储桶。使用默认设置创建存储桶。

  2. 进入存储桶后,单击*上传* > 添加文件,然后从系统上克隆的 GitHub 存储库中选择*Utilities.zip*。

    此图描绘了正在上传 zip 文件的 S3 窗口

步骤 3:AWS SES SMTP 设置(如果没有可用的互联网访问,则需要)

如果您想在没有互联网访问的情况下部署解决方案,请按照此步骤操作(注意:设置 VPC 端点会产生额外的成本。)

  1. 导航至 AWS 控制台 > AWS 简单电子邮件服务 (SES) > SMTP 设置,然后单击 创建 SMTP 凭证

  2. 输入 IAM 用户名或保留默认值,然后单击“创建用户”。保存*SMTP 用户名*和*SMTP 密码*以供进一步使用。

    备注 如果 SES SMTP 设置已到位,请跳过此步骤。

    此图展示了 AWS SES 下的“创建 SMTP 凭证”窗口

步骤 4:AWS CloudFormation 部署
  1. 导航到 AWS 控制台 > CloudFormation > 创建堆栈 > 使用新资源(标准)。

    Prepare template: Template is ready
    Specify template: Upload a template file
    Choose file: Browse to the cloned GitHub repo and select fsxn-monitoring-solution.yaml

    此图展示了 AWS CloudFormation 创建堆栈窗口

    点击下一步

  2. 输入堆栈详细信息。单击“下一步”,选中“我承认 AWS CloudFormation 可能会创建 IAM 资源”复选框,然后单击“提交”。

    备注 如果“VPC 是否可以访问互联网?”设置为 False,则需要“AWS SES 的 SMTP 用户名”和“AWS SES 的 SMTP 密码”。否则,它们可以留空。

    此图描绘了 AWS CloudFormation 堆栈详细信息窗口

    此图描绘了 AWS CloudFormation 堆栈详细信息窗口

    此图描绘了 AWS CloudFormation 堆栈详细信息窗口

    此图描绘了 AWS CloudFormation 堆栈详细信息窗口

  3. 一旦 CloudFormation 部署开始,“发件人电子邮件 ID”中提到的电子邮件 ID 将收到一封电子邮件,要求他们授权 AWS SES 使用该电子邮件地址。点击链接来验证电子邮件地址。

  4. CloudFormation 堆栈部署完成后,如果有任何警告/通知,则会向收件人电子邮件 ID 发送一封包含通知详细信息的电子邮件。

    此图显示了有通知时收到的电子邮件通知

    此图显示了有通知时收到的电子邮件通知

手动部署

备注 支持在单个 VPC 中监控多个 FSx ONTAP文件系统。

按照一系列步骤完成此解决方案的手动部署:

步骤 1:克隆 GitHub 存储库

在本地系统上克隆 GitHub 存储库:

git clone https://github.com/NetApp/fsxn-monitoring-auto-resizing.git
步骤 2:AWS SES SMTP 设置(如果没有可用的互联网访问,则需要)

如果您想在没有互联网访问的情况下部署解决方案,请按照此步骤操作(注意:设置 VPC 端点会产生额外的成本。)

  1. 导航至 AWS 控制台 > AWS 简单电子邮件服务 (SES) > SMTP 设置,然后单击 创建 SMTP 凭证

  2. 输入 IAM 用户名或保留默认值,然后单击“创建”。保存用户名和密码以供进一步使用。

    此图展示了 AWS SES 下的“创建 SMTP 凭证”窗口

步骤 3:为 fsxadmin 密码创建 SSM 参数

导航到 AWS 控制台 > 参数存储,然后单击 创建参数

Name: <Any name/path for storing fsxadmin password>
Tier: Standard
Type: SecureString
KMS key source: My current account
  KMS Key ID: <Use the default one selected>
Value: <Enter the password for "fsxadmin" user configured on FSx ONTAP>

点击*创建参数*。对所有要监控的 FSx ONTAP文件系统重复上述步骤。

此图描绘了 AWS 控制台上的 SSM 参数创建窗口。

如果在没有互联网访问的情况下部署解决方案,请执行相同的步骤来存储 smtp 用户名和 smtp 密码。否则,跳过添加这 2 个参数。

步骤4:设置电子邮件服务

导航到 AWS 控制台 > 简单电子邮件服务 (SES),然后单击 创建身份

Identity type: Email address
Email address: <Enter an email address to be used for sending resizing notifications>

点击*创建身份*

“发件人电子邮件 ID”中提到的电子邮件 ID 将收到一封电子邮件,要求所有者授权 AWS SES 使用该电子邮件地址。点击链接来验证电子邮件地址。

此图描绘了 AWS 控制台上的 SES 身份创建窗口。

步骤 5:设置 VPC 端点(如果没有互联网访问则必需)
备注 仅在没有互联网访问的情况下部署时才需要。 VPC 端点会产生额外费用。
  1. 导航到 AWS 控制台 > VPC > Endpoints,然后单击 Create Endpoint 并输入以下详细信息:

    Name: <Any name for the vpc endpoint>
    Service category: AWS Services
    Services: com.amazonaws.<region>.fsx
    vpc: <select the vpc where lambda will be deployed>
    subnets: <select the subnets where lambda will be deployed>
    Security groups: <select the security group>
    Policy: <Either choose Full access or set your own custom policy>

    单击创建端点。

    此图描绘了 VPC 端点创建窗口

    此图描绘了 VPC 端点创建窗口

  2. 按照相同的流程创建 SES 和 SSM VPC 端点。除服务分别对应于 com.amazonaws.<region>.smtpcom.amazonaws.<region>.ssm 外,所有参数均与上述相同。

步骤 6:创建并设置 AWS Lambda 函数
  1. 导航到 AWS 控制台 > AWS Lambda > 函数,然后单击与 FSx ONTAP位于同一区域的 创建函数

  2. 使用默认的*从头开始的作者*并更新以下字段:

    Function name: <Any name of your choice>
    Runtime: Python 3.9
    Architecture: x86_64
    Permissions: Select "Create a new role with basic Lambda permissions"
    Advanced Settings:
      Enable VPC: Checked
        VPC: <Choose either the same VPC as FSx ONTAP or a VPC that can access both FSx ONTAP and the internet via a private subnet>
        Subnets: <Choose 2 private subnets that have NAT gateway attached pointing to public subnets with internet gateway and subnets that have internet access>
        Security Group: <Choose a Security Group>

    点击*创建函数*。

    此图描绘了 AWS 控制台上的 Lambda 创建窗口。

    此图描绘了 AWS 控制台上的 Lambda 创建窗口。

  3. 导航到新创建的 Lambda 函数 > 向下滚动到 Layers 部分并单击 Add a layer

    此图描绘了 AWS Lambda 函数控制台上的添加层按钮。

  4. 单击“图层源”下的“创建新图层”

  5. 创建一个层并上传*Utilities.zip*文件。选择 Python 3.9 作为兼容的运行时,然后单击 创建

    此图描绘了 AWS 控制台上的“创建新层”窗口。

  6. 导航回 AWS Lambda 函数 > 添加层 > *自定义层*并添加实用程序层。

    此图描绘了 AWS Lambda 函数控制台上的添加层窗口。

    此图描述了 AWS Lambda 函数控制台上添加的层。

  7. 导航到 Lambda 函数的 配置 选项卡,然后单击 常规配置 下的 编辑。将超时更改为*5 分钟*,然后单击*保存*。

  8. 导航到 Lambda 函数的 Permissions 选项卡并单击分配的角色。在角色的权限选项卡中,单击*添加权限*>*创建内联策略*。

    1. 单击 JSON 选项卡并粘贴来自 GitHub 存储库的文件 policy.json 的内容。

    2. 将每个出现的 ${AWS::AccountId} 替换为您的账户 ID,然后单击 审核政策

    3. 为策略提供一个名称,然后单击“创建策略”

  9. fsxn_monitoring_resizing_lambda.py 的内容从 git repo 复制到 AWS Lambda 函数代码源部分中的 lambda_function.py

  10. 在与 lambda_function.py 同级创建一个新文件,并将其命名为 vars.py,并将 vars.py 的内容从 git repo 复制到 lambda 函数 vars.py 文件。更新 vars.py 中的变量值。参考下面的变量定义并点击*部署*:

    姓名

    类型

    描述

    fsx列表

    列表

    (必需)要监控的所有 FSx ONTAP文件系统的列表。将所有文件系统包含在列表中以进行监控和自动调整大小。

    fsxMgmtIp

    字符串

    (必需)从 AWS 上的 FSx ONTAP控制台输入“管理端点 - IP 地址”。

    fsxId

    字符串

    (必需)从 AWS 上的 FSx ONTAP控制台输入“文件系统 ID”。

    用户名

    字符串

    (必需)从 AWS 上的 FSx ONTAP控制台输入 FSx ONTAP “ONTAP管理员用户名”。

    调整阈值

    整型

    (必填)输入 0-100 之间的阈值百分比。此阈值将用于衡量存储容量、卷和 LUN 的使用情况,并且当任何使用率的百分比增加超过此阈值时,将发生调整大小活动。

    fsx_password_ssm_参数

    字符串

    (必填)输入 AWS 参数存储中用于存储“fsxadmin”密码的路径名。

    警告通知

    布尔值

    (必需)将此变量设置为 True,以便在存储容量/卷/LUN 使用率超过 75% 但低于阈值时接收通知。

    启用快照删除

    布尔值

    (必需)将此变量设置为 True,以启用早于“snapshot_age_threshold_in_days”中指定的值的卷级快照删除。

    快照年龄阈值(以天为单位)

    整型

    (必填)输入您要保留的卷级快照的天数。任何早于所提供值的快照都将被删除,并通过电子邮件通知。

    互联网访问

    布尔值

    (必需)如果可以从部署此 lambda 的子网访问互联网,则将此变量设置为 True。否则将其设置为 False。

    smtp 区域

    字符串

    (可选)如果“internet_access”变量设置为 False,请输入部署 lambda 的区域。例如 us-east-1(此格式)

    smtp_用户名_ssm_参数

    字符串

    (可选)如果“internet_access”变量设置为 False,请输入 AWS 参数存储中用于存储 SMTP 用户名的路径名。

    smtp_password_ssm_参数

    字符串

    (可选)如果“internet_access”变量设置为 False,请输入 AWS Parameter Store 中用于存储 SMTP 密码的路径名。

    发件人电子邮件

    字符串

    (必填)输入在 SES 上注册的电子邮件 ID,lambda 函数将使用该 ID 发送与监控和调整大小相关的通知警报。

    收件人电子邮件

    字符串

    (必填)输入您想要接收警报通知的电子邮件 ID。

    此图描述了 AWS Lambda 函数控制台上的 lambda 代码。

  11. 点击*测试*,创建一个空的JSON对象的测试事件,点击*调用*运行测试,检查脚本是否正常运行。

  12. 测试成功后,导航至 配置 > 触发器 > 添加触发器

    Select a Source: EventBridge
    Rule: Create a new rule
    Rule name: <Enter any name>
    Rule type: Schedule expression
    Schedule expression: <Use "rate(1 day)" if you want the function to run daily or add your own cron expression>

    单击“添加”。

    此图描绘了 AWS Lambda 函数控制台上的事件桥创建窗口。

结束语

通过提供的解决方案,可以轻松设置监控解决方案,定期监控 FSx ONTAP存储,根据用户指定的阈值调整其大小并提供警报机制。这使得使用和监控 FSx ONTAP的过程变得无缝,使管理员可以专注于关键业务活动,同时存储会在需要时自动增长。