基于 Prometheus 的超算弹性计算场景下主机监控最佳实践

2024-05-23 20:52

本文主要是介绍基于 Prometheus 的超算弹性计算场景下主机监控最佳实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:左知

超算场景的业务特点

主机监控,或许是监控/可观测领域最传统和普遍的需求。在超算训练,AI 大规模训练的业务场景下,主机监控又有哪些痛点和难点呢?根据我们针对多个大规模超算客户的需求整理,超算场景的特点主要集中在如下几个方面:

大规模计算

超算擅长处理可并行化的计算问题,通过成千上万的处理器核心协同工作,实现任务的分解与加速执行。用户通常采用弹性任务调度系统在云上快速拉起大量的 ECS 主机来满足大规模计算需求。训练任务进行时计算集群整体算力利用率等是成本控制的关键。

高性能与吞吐量

超算系统设计用于处理大规模数据集,能够持续高效地完成大量计算工作,保证高吞吐量,适用于大数据分析、气候模拟、生物信息学研究等领域。如果计算集群某些算力机器出现吞吐瓶颈,即会影响整体计算性能。

弹性计算

在超算场景中,每一次训练任务一般持续几个小时到几天不等,每一次训练的算力需求也差异较大。通常用户采用弹性算力供给方式,在需要时拉起算力资源,结束时完成释放。计算任务的规模和复杂性迅速变化,也可能需要在短时间内快速增加或减少计算资源。

业务高峰与低谷

特定时段会对计算资源有极高的需求,而在其他时期则可能需求降低,形成明显的需求波动。

混合计算任务

超算任务可能会同时使用大量的 CPU 、GPU 、RDMA 等资源,以实现更高效的计算性能。不同的主机上可能存在异构的资源类型以支撑不同的计算任务。

超算场景面临的可观测挑战

在超算应用场景中,计算性能的极致要求和资源的动态伸缩特性给主机可观测提出了复杂挑战。为了确保新增计算节点能够迅速并稳定地融入整体计算环境,同时兼顾成本效率,可观测性策略需要精心设计和实施,通过可观测可以及时发现潜在的问题点,或者资源优化点等。

超算场景下,主机可观测面临的挑战有如下几点:

精细化监控

对计算节点的运行状态、负载、网络延迟等关键指标进行秒级监控,是确保系统稳定性和高效性的前提。

进程级监控能力

超算任务往往会以进程形式运行在主机上,不仅需要对主机整体资源消耗有监控,还需要对具体计算任务资源消耗具备可观测能力。进程间的横向资源消耗对比,可帮助快速发现资源消耗异常的进程。进程的数量监控,以及进程下的协程数量等,都是关键的可观测指标。

自动化服务发现

监控系统需配备自动服务发现机制,以便在节点弹性伸缩时,能够立即识别新增或被释放的节点,以实现秒级单位下纳入监控系统。

自动部署监控探针

对于新增的计算节点,自动部署监控组件是迅速实现节点加入监控体系的关键。通常对于不同算力的主机进行智能识别,以安装对应的数据采集组件,例如区分 Windows 或 Linux 主机吗,GPU 算力,RDMA 高性能网络需求。

数据标签分类

数据标签(也称为标签或标签键)是与指标相关联的元数据,用来提供额外的上下文信息,以便对指标进行更细致的分类、筛选和分组。根据使用场景和用途不同,需要增加特定的标签,例如组织性标签、环境标签、业务标签等。通过适当地使用和组合不同的数据标签,可以提高监控数据的可查询性和可操作性,并帮助您构建一个更加强大和灵活的可观测性解决方案。

超算场景弹性主机监控方案

阿里云 Prometheus 主机监控针对阿里云 ECS 服务器提供了一个高效且易于管理的监控方案,这一方案的特点是顺应了现代云计算环境中对于可观测性和自动化管理的需求,阿里云 Prometheus 主机监控具备如下优势。

阿里云 Prometheus 提供的主机监控,具备阿里云 ECS 服务器、自建 IDC 内服务器、云厂商服务器全类型主机接入能力,针对阿里云 ECS 服务器可根据配置自动安装各类开源 Exporter,各类 Exporter 采集配置自动生成,托管 Prometheus Agent 实现自动采集,采集数据统一存储、统一展示、统一告警。对于非阿里云主机不具备自动服务发现的能力,所以需要依赖用户在接入时手动安装阿里云采集探针,主动将监控数据上报到阿里云 Prometheus 存储。

图片

阿里云 Prometheus 主机监控架构

主机秒级发现

  • 适应性:自动服务发现机制允许监控系统快速适应云资源的动态变化,确保所有运行中的实例都被及时监控。
  • 多样性:支持多种服务发现类型,满足不同场景下的监控需求,如支持 Kubernetes 集群内服务的自动发现,以及其他类型云服务的集成。

探针秒级安装

  • 即插即用:自动化安装 Exporter,使得新启动的计算节点可以立即被监控系统识别并收集其度量,无需人为干预。
  • 全面监控:提供多种 Exporter,包括 Node-exporter、Process-exporter、GPU-exporter 和中间件 Exporter,进行全方位的性能追踪。

指标秒级采集

  • 配置简化:自动化配置生成减轻了运维人员手动配置的负担,确保所有节点和服务的度量都能被准确无误地采集。
  • 灵活性:配置可根据现有的监控需求作出相应调整,带来灵活性和可扩展性,应对复杂多变的监控环境。

主机从创建到纳入监控系统,整体可以在 30-60s 以内完成。主机所有指标数据可以支持 1-60s 时间间隔的灵活调整。整体实现主机全方位秒级监控能力。

探针 Serverless 化

  • 集中管理:通过托管的 Prometheus Agent 统一管理数据采集,简化了监控架构,提高了运维效率。用户对数据采集链路无感知。
  • 高效能:因为抽象了监控算法的复杂性,使用 Agent 可以减少误配的可能性,提高监控数据的准确性和时效性。

智能指标标签

  • 自动摘取阿里云 ECS 主机的标签、资源组、区域等信息,并自动注入到整个指标体系中,方便快捷。
  • 配置化自定义添加额外标签能力,可进一步提升标签体系的灵活性,自定义例如业务标识、环境标识、数据来源标识等。

超大规模数据采集与存储

  • 支持超大规模主机接入,采用用户独享与共享并存托管模式,依据用户主机接入规模动态调整托管资源,保证接入的时效和准确性。
  • 存储可支持超大规模指标存储,并具备高性能的查询和展示能力。

提供完善的上下游监控数据

  • 为了实现一个系统级的、全面的可观测性,单一实体监控是不够的,需要整合不同维度的监控数据并构建全链路观测,确保监控系统能够反映出整个应用和服务生态的健康和表现。
  • 涵盖从底层硬件到应用层再到外部服务(如 RDMA 网络、OSS 存储、Redis 等)的综合监控策略。这个策略应该包括不仅仅是主机和网络的监控,还包括对依赖服务的监控。

进程级监控

  • 进程级监控可以对操作系统运行的进程进行跟踪和分析,以了解进程的性能和资源利用情况。这是实现系统级监控的关键部分,旨在提供运行在服务器上的应用程序的健康和表现的透视图。
  • 进程级监控除了会捕获进程的 CPU 使用率、进程的内存使用量、进程的磁盘读写情况等关键性能指标,还会收集进程的启动时间、打开的文件的句柄数、进程下调起的线程数量等。提供接近于实时的监控能力,做到即时的反馈,让系统管理员能够及时识别和解决问题。
  • 进程级监控,为管理员提供更加丰富的故障诊断手段,帮助识别导致系统性能下降或故障的进程,可能是某些进程内存泄露、高 CPU 使用率或其他资源争用等。

默认提供 Grafana 数据大盘

  • 默认集成经过阿里云专家经验沉淀的 Grafana 大盘,包括 ECS Overivew 总览大盘、ECS Detail 详细大盘、GPU Overview 总览大盘、GPU Detail 详细大盘、Node-process 进程级大盘。
  • 真正做到一键接入主机可观测,开箱即用。

实践方式

接入方式以阿里云 ECS 服务器为例,在应用实时监控页面,点击接入管理,选择 ECS 环境,点击新增接入,可分别接入 GPU 监控和主机监控。其中 GPU 监控对应接入 GPU 类型主机,默认会自动安装 GPU-exporter;其中主机监控对应接入 CPU 类型主机,默认会自动安装 Node-exporter 和 Process-exporter。

图片

针对阿里云 ECS 服务器,支持多种类型的服务发现方式,可灵活选择需接入监控的目标服务器,服务发现方式 CPU 主机和 GPU 主机没有差异。

图片

成功接入后,会依据主机类型显示服务发现的主机数量、以及 Exporter 安装和运行情况。

图片

自监控页面,可实时查看 GPU 和 CPU 主机接入采集状态,以及实时获取源数据。

图片

接入效果

阿里云 Prometheus 主机监控服务的接入效果总结如下:

  1. 快速服务发现
    • 实测每次大规模主机弹性伸缩(约 500 台规模)的发生,监控服务能够在一分钟内发现新的计算节点。
  2. 迅速部署 Exporter
    • 必要的 Exporter(Gpu-exporter、Node-exporter、Process-exporter)可以在一分钟内完成自动安装,这意味着每台服务器可以接近实时开始生成监控数据。
  3. 低数据可观测延迟
    • 自计算节点创建并运行起来,到用户可以观察到监控数据,整个过程的延迟时间控制在两分钟内,大大降低了监控数据的丢失率。
  4. 及时停止数据采集
    • 对于下线的计算节点,监控数据的停止采集时间同样保持在两分钟内,这保证了系统资源的高效使用。如果主机未被销毁,系统将自动卸载 Exporter 并删除其配置,优化了资源的回收过程。
  5. 高效并发处理能力
    • 阿里云 Prometheus 主机监控能够承载高并发的监控任务,有效地根据用户弹性主机数量的变化进行调整,满足不同用户、规模和时效性的需求。

阿里云 Prometheus 主机监控服务通过以上能力为超算用户提供了强大的监控保障。这种快速而精准的可观测性能力是超算用户在云环境中实现资源动态管理和性能优化的关键。能够及时响应计算资源的弹性伸缩对于确保计算作业的连续性、洞察系统瓶颈和异常行为,以及指导资源分配决策至关重要。

集成大盘

阿里云 Prometheus 主机监控,当接入 GPU 监控和 CPU 主机监控,默认集成对应大盘,提供包括计算节点基础观测、进程观测、协程观测、GPU 观测等。

图片

主机监控默认集成大盘列表

图片

主机监控 GPU 监控默认集成大盘

默认集成的观测大盘,阿里云专家根据实践积累,预置了多种核心观测点大盘、多重聚合维度观测视角大盘,真正做到开箱即用。

图片

ECS Overview大盘

图片

ECS Detail 大盘

图片

Node Process 进程大盘

图片

GPU Overview 总览大盘

图片

GPU Detail 详细大盘

总结

在超算场景中,随着计算需求的高度动态性和对性能极致追求,对云计算服务提供商提出了快速调整资源以应对业务高峰与低谷的挑战。阿里云 Prometheus 提供的主机监控方案积极响应了可观测需求,通过强化其自动化监控能力,为资源优化和提升成本效益提供可靠的监控指标。

阿里云 Prometheus 主机监控实践能力包括如下四点:

  1. 自适应的自动服务发现,保障云资源的实时监控覆盖,应对资源动态伸缩的需求。

  2. 自动化的 Exporter 部署,降低了运维难度,提供了即插即用的监控能力,及时追踪新节点的度量。

  3. 自动生成的 Prometheus 配置,简化了监控配置的复杂性,增加了监控架构的灵活性和可扩展性。

  4. 托管的 Prometheus Agent,实现了监控数据采集的集中管理和优化,提高了数据的准确性和有效性。

以上能力使阿里云 Prometheus 提供的主机监控具备如下优势:

提高运维效率: 自动化的监控系统降低了人力投入,释放了运维团队的工作负担,使他们可以投入到更重要的优化任务中。

快速响应问题: 实时监控和快速服务发现机制,缩减了从诊断到解决问题的时间,提高了系统的可靠性。

资源使用优化: 实时细粒度监控带来了资源使用的深入讲解,指导资源调度的优化,降低资源浪费,实现成本控制。

增强的可扩展性和可靠性: 自动化和智能化的监控手段保证了即使在主机数量大规模扩展的情况下,监控的全面性和准确性都不会受到影响。

综上,阿里云 Prometheus 主机监控方案正成为超算场景下管理与监控云资源的强有力支撑,它不仅有效地保障了云基础设施的高效和健康,也为企业进一步拓展其高性能计算能力提供了坚实的基础。

目前可观测监控 Prometheus 版,提供每月 50GB 数据写入免费额度,满足日常监控基本需求,点击此处,立即开始体验。

图片

这篇关于基于 Prometheus 的超算弹性计算场景下主机监控最佳实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996390

相关文章

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装