使用 Harvest 和 Grafana 监控 FSx for ONTAP 文件系统 - FSx for ONTAP
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Harvest 和 Grafana 监控 FSx for ONTAP 文件系统

NetApp Harvest 是一款用于从 ONTAP 系统收集性能和容量指标的开源工具,与 FSx for ONTAP 兼容。可以结合使用 Harvest 与 Grafana 来获得开源监控解决方案。

开始使用 Harvest 和 Grafana

以下部分详细介绍了如何设置和配置 Harvest 和 Grafana,以测算 FSx for ONTAP 文件系统的性能和存储容量利用率。

您可以使用 Harvest 和 Grafana 监控适用于 NetApp ONTAP 的 Amazon FSx 文件系统。NetApp Harvest 通过从 FSx for ONTAP 文件系统收集性能、容量和硬件指标来监控 ONTAP 数据中心。Grafana 提供可显示所收集 Harvest 指标的控制面板。

支持的 Harvest 控制面板

适用于 NetApp ONTAP 的 Amazon FSx 公开的指标集与本地 NetApp ONTAP 不同。因此,目前仅支持以下带有 fsx 标签的开箱即用 Harvest 控制面板与 FSx for ONTAP 配合使用。这些控制面板中的某些面板可能缺少不支持的信息。

  • Harvest:元数据

  • ONTAP:聚合

  • ONTAP:cDOT

  • ONTAP:集群

  • ONTAP:合规性

  • ONTAP:数据中心

  • ONTAP:数据保护

  • ONTAP:LUN

  • ONTAP:网络

  • ONTAP:节点

  • ONTAP:Qtree

  • ONTAP:安全性

  • ONTAP:SnapMirror

  • ONTAP:SnapMirror 目标

  • ONTAP:SnapMirror 源

  • ONTAP:SVM

  • ONTAP:卷

  • ONTAP:按 SVM 划分的卷

  • ONTAP:卷深入研究

FSx for ONTAP 支持以下 Harvest 控制面板,但这些控制面板默认情况下未在 Harvest 中启用。

  • ONTAP:FlexCache

  • ONTAP:FlexGroup

  • ONTAP:NFS 客户端

  • ONTAP:NFSv4 存储池显示器

  • ONTAP:NFS 故障排除

  • ONTAP:NVMe 命名空间

  • ONTAP:SMB

  • ONTAP:工作负载

不支持的 Harvest 控制面板

FSx for ONTAP 支持以下 Harvest 控制面板。

  • ONTAP:磁盘

  • ONTAP:外部服务操作

  • ONTAP:文件系统分析(FSA)

  • ONTAP:余量

  • ONTAP:运行状况

  • ONTAP:MAV 请求

  • ONTAP:MetroCluster

  • ONTAP:功率

  • ONTAP:Shelf

  • ONTAP:S3 对象存储

Amazon CloudFormation 模板

首先,您可以部署一个 Amazon CloudFormation 模板来自动启动运行 Harvest 和 Grafana 的 Amazon EC2 实例。作为 Amazon CloudFormation 模板的输入,您可以为将在此部署中添加的文件系统指定 fsxadmin 用户和 Amazon FSx 管理端点。部署完成后,您可以登录 Grafana 控制面板来监控您的文件系统。

此解决方案采用 Amazon CloudFormation 自动部署 Harvest 和 Grafana 解决方案。该模板创建了一个 Amazon EC2 Linux 实例并安装 Harvest 和 Grafana 软件。要使用此解决方案,请下载 fsx-ontap-harvest-grafana.template Amazon CloudFormation 模板。

注意

实施此解决方案会产生相关 Amazon 服务的账单。有关更多信息,请参阅有关这些服务的定价详细信息页面。

Amazon EC2 实例类型

在配置模板时,您需要提供 Amazon EC2 实例类型。NetApp 对实例大小的建议取决于您监控的文件系统的数量以及您选择收集的指标数量。使用默认配置时,对于您监控的每 10 个文件系统,NetApp 建议:

  • CPU:2 个核心

  • 内存:1 GB

  • 磁盘:500 MB(主要用于日志文件)

以下是一些示例配置和您可以选择的 t3 实例类型。

文件系统 CPU 磁盘 实例类型

10 以下

2 个核心

500 MB

t3.micro

10–40

4 个核心

1000 MB

t3.xlarge

40+

8 个核心

2000 MB

t3.2xlarge

有关 Amazon EC2 实例类型的更多信息,请参阅《Amazon EC2 用户指南》中的通用实例

实例端口规则

在设置 Amazon EC2 实例时,请确保端口 3000 和 9090 接受 Amazon EC2 Harvest 和 Grafana 实例所在安全组的入站流量。由于启动的实例通过 HTTPS 连接到端点,因此它需要解析该端点,这需要使用端口 53 的 TCP/UDP 进行 DNS。此外,要访问该端点,需要使用端口 443 的 TCP 进行 HTTPS 和互联网访问。

部署程序

以下程序配置和部署 Harvest/Grafana 解决方案。部署大约需要五分钟。在开始之前,您的 Amazon 账户中必须有一个运行于 Amazon Virtual Private Cloud(Amazon VPC)之中的 FSx for Lustre 文件系统,以及下面列出的模板参数信息。有关创建文件系统的更多信息,请参阅创建文件系统

启动 Harvest/Grafana 解决方案堆栈
  1. 下载 fsx-ontap-harvest-grafana.template Amazon CloudFormation 模板。有关创建 Amazon CloudFormation 堆栈的更多信息,请参阅《Amazon CloudFormation 用户指南》中的在 Amazon CloudFormation 控制台上创建堆栈

    注意

    默认情况下,该模板在美国东部(弗吉尼亚州北部)Amazon 区域发布。您必须在可以使用 Amazon FSx 的 Amazon Web Services 区域 启动此解决方案。有关更多信息,请参阅 Amazon Web Services 一般参考 中的 Amazon FSx 端点和配额

  2. 对于参数,请查看模板的参数并根据文件系统的需求对其进行修改。该解决方案使用以下默认值。

    参数 默认值 描述
    InstanceType t3.micro

    Amazon EC2 实例类型。以下是 t3 实例类型。

    • t3.micro

    • t3.small

    • t3.medium

    • t3.large

    • t3.xlarge

    • t3.2xlarge

    有关此参数允许使用的 Amazon EC2 实例类型值的完整列表,请参阅 fsx-ontap-harvest-grafana.template。

    KeyPair 无默认值 用于访问 Amazon EC2 实例的键对。
    SecurityGroup 无默认值 Harvest/Grafana 实例的安全组 ID。除了端口 53 和 443,确保您希望用于访问 Grafana 控制面板的客户端已打开入站端口 3000 和 9090。
    子网类型 无默认值 指定子网类型 publicprivate。对必须连接互联网的资源使用 public 子网,而对不会连接到互联网的资源使用私有子网。有关更多信息,请参阅《Amazon VPC 用户指南》中的子网类型
    子网 无默认值 指定与适用于 NetApp ONTAP 的 Amazon FSx 文件系统首选子网相同的子网。您可以在 Amazon FSx 控制台的 FSx for ONTAP 文件系统详细信息页面的网络和安全选项卡中找到文件系统的首选子网 ID
    LatestLinuxAmiId /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 给定 Amazon Web Services 区域 中最新版本的 Amazon Linux 2 AMI
    FSxEndPoint 无默认值 文件系统的管理端点 IP 地址。您可以在 Amazon FSx 控制台的 FSx for ONTAP 文件系统详细信息页面的管理选项卡中找到文件系统的管理端点 IP 地址
    SecretName 无默认值 包含文件系统 fsxadmin 用户密码的 Amazon Secrets Manager 密钥名称。这是您在创建文件系统时提供的密码。
  3. 选择下一步

  4. 选项中,选择下一步

  5. 审核中,审核并确认设置。必须选择复选框,以确认模板将创建 IAM 资源。

  6. 选择创建以部署堆栈。

您可以在 Amazon CloudFormation 控制台的状态列中查看堆栈的状态。您应该在大约五(5)分钟内看到 CREATE_COMPLETE 状态。

登录 Grafana

部署完成后,使用浏览器登录到 Amazon EC2 实例的 IP 和端口 3000 上的 Grafana 控制面板:

http://EC2_instance_IP:3000

出现提示时,使用 Grafana 默认用户名(admin)和密码(pass)。我们建议您登录后立即更改密码。

有关更多信息,请参阅 GitHub 上的 NetApp Harvest 页面。

排查 Harvest 和 Grafana 故障

如果遇到 Harvest 和 Grafana 控制面板中提及的任何数据缺失问题,或者难以通过 FSx for ONTAP 设置 Harvest 和 Grafana,请查看以下主题获取潜在的解决方案。

SVM 和卷控制面板为空白

如果 Amazon CloudFormation 堆栈已成功部署并且可以联系到 Grafana,但 SVM 和卷控制面板为空白,请使用以下过程排查环境中的故障。您需要通过 SSH 访问部署有 Harvest 和 Grafana 的 Amazon EC2 实例。

  1. 通过 SSH 访问当前运行有 Harvest 和 Grafana 客户端的 Amazon EC2 实例。

    [~]$ ssh ec2-user@ec2_ip_address
  2. 使用以下命令打开 harvest.yml 文件并且:

    • 验证是否为 FSx for ONTAP 实例创建了一个条目 Cluster-2

    • 验证输入的用户名和密码是否与 fsxadmin 凭证相符。

    [ec2-user@ip-ec2_ip_address ~]$ sudo cat /home/ec2-user/harvest_install/harvest/harvest.yml
  3. 如果密码字段为空,请在编辑器中打开文件并使用 fsxadmin 密码进行更新,如下所示:

    [ec2-user@ip-ec2_ip_address ~]$ sudo vi /home/ec2-user/harvest_install/harvest/harvest.yml
  4. 确保 fsxadmin 用户凭证以如下格式存储在 Secrets Manager 中,以备将来部署时使用,并将 fsxadmin_password 替换为您的密码。

    {"username" : "fsxadmin", "password" : "fsxadmin_password"}

CloudFormation 堆栈在超时后回滚

如果无法成功部署 CloudFormation 堆栈,并且堆栈出错回滚,请使用以下过程来解决此问题。您需要通过 SSH 访问通过 CloudFormation 堆栈部署的 EC2 实例。

  1. 重新部署 CloudFormation 堆栈,确保自动回滚已禁用。

  2. 通过 SSH 访问当前运行有 Harvest 和 Grafana 客户端的 Amazon EC2 实例。

    [~]$ ssh ec2-user@ec2_ip_address
  3. 使用以下命令验证 Docker 容器是否已成功启动。

    [ec2-user@ip-ec2_ip_address ~]$ sudo docker ps

    在响应中,您应该会看到以下五个容器:

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b9b3f2085ef rahulguptajss/harvest "bin/poller --config…" 8 minutes ago Restarting (1) 20 seconds ago harvest_cluster-2 3cf3e3623fde rahulguptajss/harvest "bin/poller --config…" 8 minutes ago Up About a minute harvest_cluster-1 708f3b7ef6f8 grafana/grafana "/run.sh" 8 minutes ago Up 8 minutes 0.0.0.0:3000->3000/tcp harvest_grafana 0febee61cab7 prom/alertmanager "/bin/alertmanager -…" 8 minutes ago Up 8 minutes 0.0.0.0:9093->9093/tcp harvest_prometheus_alertmanager 1706d8cd5a0c prom/prometheus "/bin/prometheus --c…" 8 minutes ago Up 8 minutes 0.0.0.0:9090->9090/tcp harvest_prometheus
  4. 如果 Docker 容器未运行,按如下步骤检查 /var/log/cloud-init-output.log 文件中的故障。

    [ec2-user@ip-ec2_ip_address ~]$ sudo cat /var/log/cloud-init-output.log PLAY [Manage Harvest] ********************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [Verify images] *********************************************************** failed: [localhost] (item=prom/prometheus) => {"ansible_loop_var": "item", "changed": false, "item": "prom/prometheus", "msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', ConnectionResetError(104, 'Co nnection reset by peer'))"} failed: [localhost] (item=prom/alertmanager) => {"ansible_loop_var": "item", "changed": false, "item": "prom/alertmanage r", "msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))"} failed: [localhost] (item=rahulguptajss/harvest) => {"ansible_loop_var": "item", "changed": false, "item": "rahulguptajs s/harvest", "msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', ConnectionResetEr ror(104, 'Connection reset by peer'))"} failed: [localhost] (item=grafana/grafana) => {"ansible_loop_var": "item", "changed": false, "item": "grafana/grafana", "msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', ConnectionResetError(104, 'Co nnection reset by peer'))"} PLAY RECAP ********************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
  5. 如果出现故障,请执行以下命令部署 Harvest 和 Grafana 容器。

    [ec2-user@ip-ec2_ip_address ~]$ sudo su [ec2-user@ip-ec2_ip_address ~]$ cd /home/ec2-user/harvest_install [ec2-user@ip-ec2_ip_address ~]$ /usr/local/bin/ansible-playbook manage_harvest.yml [ec2-user@ip-ec2_ip_address ~]$ /usr/local/bin/ansible-playbook manage_harvest.yml --tags api
  6. 通过运行 sudo docker ps 并连接至 Harvest 和 Grafana 网址来验证容器是否已成功启动。