监视是管理云中 HPC 环境、确保最佳性能、可靠性和安全性的关键方面。 有效的监视使管理员能够实时了解系统性能、及时检测和解决问题,并做出明智的决策来优化资源利用率。 CPU 和内存使用率、作业执行时间和网络吞吐量等关键指标会提供有关基础结构运行状况和效率的宝贵信息。
通过使用 Azure Monitor、Azure 托管 Grafana 和 Azure 托管 Prometheus 等工具,管理员可以将这些指标可视化、为关键事件设置警报,并分析日志以进行故障排除。 实施可靠的监视做法有助于保持高可用性,增强用户满意度,并确保云环境满足 HPC 工作负载的动态需求。
将 HPC 工作负荷迁移到 Azure 时,必须复制和增强本地的监视功能。 此过程包括跟踪相同的指标,并可能添加与云环境相关的新指标。 使用特定于 Azure 的监视工具可以更深入地了解云资源,这对于有效管理和优化云基础结构至关重要。 例如,在云环境中,要跟踪的有价值的新指标是成本,而通常不会在本地设置中对其进行监视。
定义监视关键指标需求
常见 HPC 指标:
- 基础结构指标: CPU、内存使用情况、磁盘 I/O、网络吞吐量。
- 应用程序指标: 作业队列长度、作业失败率、执行时间。
- 用户指标: 活动用户、作业提交率。
特定于云的 HPC 指标:
- 成本指标: 每个资源的成本、每月成本、预算警报。
- 可伸缩性指标: 自动缩放事件、资源利用率。
- 预配指标: 预配时间、预配成功率。
工具和服务
Azure Monitor:
- 配置 Azure Monitor 以从所有资源收集指标和日志。
- 为关键阈值设置警报(例如 CPU 使用率 > 80%)。
- 使用 Log Analytics 查询和分析日志。
Azure 托管 Grafana:
- 将 Grafana 与用于仪表板可视化效果的 Azure Monitor 集成。
- 为不同的角色创建自定义仪表板(例如 HPC 管理员、业务经理)。
Azure 托管 Prometheus:
- 在 Azure 中部署和管理 Prometheus 实例。
- 配置 Prometheus 以从 HPC 节点和应用程序中抓取指标。
- 将 Prometheus 与 Grafana 集成,以获取高级仪表板。
Azure Moneo:
- 配置 Moneo 以跨多 GPU 系统收集指标。
- 可以在 GitHub 找到有关 Moneo 的信息
最佳做法
实施用于监视的最佳做法可确保 HPC 环境保持高效、安全且可复原。 下面是要遵循的一些关键最佳做法:
定期查看和更新监视配置:
- 为了确保监视配置与基础结构和业务需求保持一致,请计划定期评审这些配置。
- 根据历史数据和不断变化的性能要求更新阈值和警报设置。
实现全面的记录:
- 若要聚合和分析日志数据,请使用 Azure Log Analytics 等集中式日志记录解决方案。
- 在日志数据升级之前,请定期查看日志数据,以确定模式和潜在问题。
设置冗余和故障转移机制:
- 为关键监视组件实现冗余,以确保持续可用性。
- 设置故障转移机制,以在发生主系统故障时自动切换到备份系统。
自动响应常见问题:
- 若要为常见问题创建自动响应,请使用 Azure 自动化和逻辑应用等自动化工具。
- 开发可自动解决已知问题的运行手册和工作流,例如重启服务或扩展资源。
监视安全指标:
- 在监视设置中包含与安全相关的指标,例如未经授权的访问尝试、配置更改和符合性状态。
- 为关键安全事件设置警报,确保及时响应和缓解。
设置运行状况检查
- 使用脚本或 Azure Automation 来实现自动健康检查。
- 监视健康检查并针对问题触发自动应对措施或警报。
- 在 Azure Monitor 中设置警报,以在发生自动缩放事件时通知你。
设置和部署的步骤示例
本部分提供用于设置 Azure Monitor 和配置 Grafana 仪表板以有效监视 HPC 环境的综合指南。 其中包括创建 Azure Monitor 工作区、将其链接到资源、配置数据收集、部署 Azure 托管 Grafana 以及设置警报和自动运行状况检查的详细步骤。
安装和配置 Azure Monitor
导航到 Azure Monitor:
- 转到 Azure 门户。
- 在左侧导航窗格中,选择“Monitor”。
创建 Azure Monitor 工作区:
- 在“监控”部分中选择“工作区”。
- 选择“创建”以设置新的 Azure Monitor 工作区。
- 提供名称并选择订阅、资源组和位置。
- 依次选择“查看 + 创建”、“创建”以部署工作区。
将 Azure Monitor 工作区链接到资源:
- 转到要监视的资源(例如虚拟机)。
- 在“监视”部分下,选择“诊断设置”。
- 选择“添加诊断设置”,并配置要发送到 Azure Monitor 工作区的日志和指标。
配置数据收集:
- 在“Azure Monitor”部分中,选择“数据收集规则”以设置和管理用于从各种 Azure 资源收集日志和指标的规则。
注释
有关 Azure Monitor 的详细信息,请访问 Azure Monitor 指标概述页。
配置 Grafana 仪表板
部署 Azure 托管 Grafana:
- 导航到 Azure 门户。
- 在顶部栏中搜索“Azure 托管 Grafana”,选择服务中的 Azure 托管 Grafana,再选择“创建”。
- 填写所需的详细信息,例如订阅、资源组和实例详细信息。
- 依次选择“查看 + 创建”、“创建”以部署 Grafana 实例。
将 Grafana 连接到 Azure Monitor:
- 部署 Grafana 后,请通过 Azure 门户或通过其公共终结点直接访问它。
- 在 Grafana 中,转到“配置”->“数据源”->“添加数据源”。
- 从可用数据源列表中选择“Azure Monitor”。
- 提供所需的详细信息,例如订阅 ID、租户 ID 和客户端 ID,并使用 Azure 凭据进行身份验证。
创建自定义仪表板:
- 添加数据源后,转到“仪表板”->“管理”->“新建仪表板”。
- 使用面板编辑器根据 Azure Monitor 收集的指标添加可视化效果(例如图形、图表)。
- 自定义仪表板以显示关键指标,例如 CPU 使用率、内存使用率、磁盘 I/O、网络吞吐量、作业队列长度和作业执行时间。
- 保存仪表板并将其与相关利益干系人共享。
注释
有关 Azure 托管 Grafana 的详细信息,请访问 Azure 托管 Grafana 页。
配置 Prometheus
部署 Azure 托管的 Prometheus 服务:
- 导航到 Azure 市场
- 搜索“Azure 托管 Prometheus”,然后选择“创建”。
- 填写必需的详细信息:
- 提供必要的信息,例如订阅、资源组和实例详细信息。
- 查看设置并选择“创建”以部署实例。
注释
有关 Azure 托管 Prometheus 的详细信息,请访问 Azure Monitor 适用于 Prometheus 的托管服务页。
将 Prometheus 与 Grafana 集成
-
在 Grafana 中将 Prometheus 添加为数据源:
- 在 Grafana 中,转到“配置”->“数据源”->“添加数据源”。
- 选择“Prometheus”并提供 Prometheus 终结点 URL。
-
创建自定义仪表板:
- 转到“仪表板”->“管理”->“新建仪表板”。
- 根据 Prometheus 收集的指标添加可视化效果。
- 自定义并保存关键指标显示的仪表板。
创建警报
导航到 Azure Monitor 并选择“警报”。
选择“新建警报规则”,以新建警报。
通过选择要监视的资源(例如 VM、存储帐户或网络接口)来定义范围。
根据指标或日志数据设置条件。 例如,可以设置 CPU 使用率超过 80%、磁盘空间使用率超过 90% 或 VM 无响应的警报。
-
定义操作组:
- 指定触发警报时要执行的操作,例如发送电子邮件、触发 Azure 函数或执行 Webhook。
- 创建操作组以高效管理和组织这些响应。
-
定义操作组:
增强监视的进一步步骤
设置警报:
- 在 Azure Monitor 中,转到“警报”->“新建警报规则”。
- 通过选择要监视的资源来定义范围。
- 设置警报的条件(例如 CPU 使用率 > 80%)。
- 配置诸如发送电子邮件通知或触发 Azure 函数等操作。
实施自动化健康检查:
- 使用 Azure 自动化服务创建和计划运行手册,以对 HPC 环境执行健康检查。
- 确保这些方案文档能够检查关键服务的状态、资源的可用性以及系统性能。
- 设置警报,以在任何健康检查未通过或显示问题时通知管理员。
定期查看和更新监视配置:
- 定期查看 Azure Monitor 和 Grafana 中配置的指标和警报。
- 根据 HPC 环境或业务需求的变化调整阈值、添加新指标或修改可视化效果。
- 培训员工,使其了解如何监视仪表板、对警报进行响应以及如何有效使用监视工具。
实现示例
自动化健康检查脚本
#!/bin/bash
# Check if a VM is running
vm_status=$(az vm get-instance-view --name <vm-name> --resource-group <resource-group> --query instanceView.statuses[1] --output tsv)
if [[ "$vm_status" != "PowerState/running" ]]; then
# Restart VM if not running
az vm start --name <vm-name> --resource-group <resource-group>
fi
资源
Azure Moneo: git