GPU Server 监控不完全指南(Zabbix + Grafana)
By Yuyang Li and Yixin Zhu. 不定期更新优化。
Last update: Jun 1, 2023.Using Zabbix 6.4 (Server / Agent 2) and Grafana Cloud.
完成这一手册后,监控运行的基本原理是:
- Client 端主动联系 Server 端并完成自动注册;
- Client 端定期与 Server 通信,获取一组 Template,并按照 Template 获取本地数据并向 Server 交付(工作在 Active 模式);
- Server 端定期将数据交付 Grafana Cloud,由后者在指定的模板上展示。
准备工作
- 一台公网服务器,作为 Zabbix Server
- 若干台被监控服务器,作为 Zabbix Agent
配置 Zabbix Server
安装
按照下面的指南配置 Zabbix Server,完成 1、2 即可:
选配参考(OS 版本按照实际选择,数据库和 Web Server 按照喜好选择):
需要注意的点:
- MySQL / PostgreSQL 需要自行安装,安装在本机即可;
- MySQL 的常用平替 MariaDB 没有验证是否可行;
- 由于 Zabbix 具有 Web 管理前端,且后续需要通过 HTTPS 接入 Grafana,建议使用境外服务器,避免备案麻烦;
- Zabbix Server 会配套安装 Agent,相当于本机也是受监控主机之一;
- 建议进一步使用 NGINX + Certbot 配置 HTTPS 访问与 HTTP Rewrite。
按照配置的前端端口即可登录管理前端。
配置前端面板(Web Frontend)
配置 Host Groups
使用 Host Groups 可以方便地管理服务器组。在 Data Collection > Host Groups 可以新建服务器组。可以按照用途(GPU Servers / Network Nodes)新建。
配置 Tempalte
我们将增加一个用来获取 Client GPU 数据的 template。将下面的文件下载:
- 下载 https://raw.githubusercontent.com/plambe/zabbix-nvidia-smi-multi-gpu/master/zbx_nvidia-smi-multi-gpu.xml;
- Web Frontend:Data collection > Templates;
- 选择 ”Import“,选择刚才下载的
xml
文件,确认; - 在列表(应该是第 5 页)找到添加的
Template Nvidida GPUs Performance
,点击进入; - 由于使用 Active 模式,我们需要做一些更改:
- Items > Number of GPUs,Type 改为 Zabbix agent (active)
- Discovery rules > GPU discovery,Type 改为 Zabbix agent (active)
- Discovery rules > Item prototypes,列表全选,点击 ”Mass Update“,选择”Type“,并改为 Zabbix agent (active)
- Items > Number of GPUs,Type 改为 Zabbix agent (active)
至此,GPU 数据收集配置完成,数据为 Application/Nvidia
配置 Auto-Registration
启用 Auto-Registration,这样 Client 联系服务器后会自行注册,不需在 Server 端操作。
- Web Frontend: Alerts > Actions > Autoregistration actions;
- Create action,在 Action 标签页起名(随意),在 Operations 页增加自动注册后的操作
- Add host
- Add host groups:选择要添加到的 host groups
- Link to template
- Template/Operating Systems - Linux by Zabbix agent active
- Template - Template Nvidia GPUs Performace(上文添加的)
- 点击 ”Update“。
可以为 Auto-Registration 添加密码保护,防止第三方向 Server 注册。请参考:
配置 Grafana Cloud
注册 Grafana 账号,并选择创建 Grafana Cloud。
Grafana get started | Cloud, Self-managed, Enterprise
Plans:
Zabbix 插件
登录 Grafana Cloud 工作区,进入 Administration > Plugins,搜索找到 Zabbix:
按照指示安装,然后选择”Enable“。
配置 Zabbix Connector
请参考:
Configuration - Grafana-Zabbix Documentation
需要注意的点:
- URL 写访问 Dashboard 的 URL(协议和端口一致)
- 只需要改名字、HTTP URL、填账号密码即可,其他默认。
Dashboard 模板
Grafana 有很多预配置好的模板在
我们将使用:
Zabbix - Full Server Status | Grafana Labs
进入 Home > Dashboards,选择 New > Import,输入 ID:5363
点击 Load 后选择导入即可。可以按照自己的需求修改。特别地,上文增加的 GPU 监控需要手动添加(懒)
配置客户端
用 sudo 运行:
1 |
|
注意修改这行为你的 Zabbix Server 监听地址与端口(一般为 10051):
1 | ServerActive=YOUR_SERVER_ADDR:YOUR_SERVER_PORT |
运行完后,在 Server Web Frontend 的 Monitoring > Hosts 里可以找到自动添加的 host。
FAQ
systemctl
无法启动
经验表明,如果客户端 systemctl start
无法启动服务,大概率是数据库的问题,客户端的 log 甚至没有错误记录!可以尝试卸载 (apt purge zabbix-*
)、清空本地服务器对应数据,之后后重新安装 Zabbix agent。
在 Windows 安装 Zabbix Agent 2
选择适用于 Windows 的 Agent 2 安装。
按照说明安装完成后,Zabbix 以服务的形式安装在 Windows 中,可以通过服务面板控制:
在安装时选择的配置并不适用于 active 模式,需要手动更改安装目录下的 zabbix_agent2.conf
,将其中的 ServerActive
修改为 Zabbix Server 地址。
特别地,上文为 autoregistration 选择了 Linux OS 和 NVIDIA 的 template,这不再适用于 Windows。需要在 Templates 里选择 Windows by Zabbix agent active。特别地,在更换 Template 的时候,务必通过 Unlink and clear
删除模板,不然原模板数据条目可能和新模板条目冲突,导致无法添加新模板。
同时,由于兼容性,Grafana 无法展示 Windows 系统的数据,只能通过 Problems 查看是否掉线。也许需要更多的 dashboard engineering。