存储监控代理设置
sonmi-stor-monitor 是专门为 SonmiHPC 开发的一个集群存储监控代理。该程序可以以极低的资源占用运行在存储节点上,通过与底层固件交互实现对RAID及物理磁盘的故障感知,同时原生集成了OS挂载点容量与ZFS存储池健康度巡检。
核心特性
- 全栈监控边界: 从底层 PCIe 阵列卡硬件,一路贯穿至操作系统层面的文件系统容量 (Filesystem) 与逻辑卷管理 (ZFS Pool),实现统一聚合监控。
- 带自愈能力的防暴刷机制: 内置智能状态机,无论是容量超阈值还是 ZFS 降级,仅在“故障发生”与“故障恢复”的边缘触发两次告警,彻底杜绝疲劳轰炸与告警风暴。
- 无侵入式边缘代理: 作为独立的 Sidecar/Daemon 运行,容量抓取采用微秒级底层系统调用,与 HPC 客户算力完全隔离。包含严格的 Systemd CGroup 资源限制与只读沙箱保护。
- 智能增量采集: 告别传统的定时全量拉取。内置本地持久化 Checkpoint 机制,支持异构数据结构(序列号、文件系统状态、ZFS 状态)的断点续传。
- 多集群身份动态嗅探: 静态配置集群名称,动态嗅探操作系统主机名,跨机房部署仅需同一份配置,告警精准定位到机柜与节点。
- 全渠道告警路由: 内置高并发分发器,支持 gRPC(集中管控)、Email(邮件抄送)、Aliyun SMS(紧急短信)以及 MOTD(本地终端极客弹窗)的多路并发路由。
安装与配置
新版本的SonmiHPC镜像自动集成了该程序的rpm包,集群部署完成直接进行配置启动即可。既有的集群可以通过额外安装rpm包来使用该程序。
shell
rpm -ivh sonmi-stor-monitor-1.0.0-1.el10.x86_64.rpmrpm -ivh sonmi-stor-monitor-1.0.0-1.el10.x86_64.rpm主要的配置文件路径为 /etc/sonmi/stor-monitor.yaml ,主要的配置项如下:
agent:
data_dir: "/var/lib/sonmi/stor-monitor"
log_level: "info"
cluster_name: "ExampleCluster" # 静态配置:客户/集群标识
# node_name: "" # 留空:程序将自动抓取系统 Hostname 作为节点名
collector:
enabled: true # 是否开启raid卡硬件故障监测,没有配置raid卡的设备请设置为false
storcli_path: "/opt/MegaRAID/storcli/storcli64"
controllers: ["/c0"] # 支持多卡,如 ["/c0", "/c1"]
event_interval: 60 # 增量日志抓取频率(秒)
status_interval: 120 # 全量状态轮询频率(秒)
evaluator:
min_alert_level: "CRITICAL" # 触发告警的最低阈值 (WARNING/CRITICAL/FATAL)
ignore_bbu: true # true: 屏蔽无电池节点的 BBU 缺失/禁用告警
filesystem:
enabled: true # OS 层面挂载点容量监控总开关
check_interval: 300 # 检查间隔(秒),建议 300s 避免过度调用系统底座
mounts:
- path: "/" # 监控根分区
threshold_percent: 85 # 达 85% 触发告警
- path: "/share" # 监控 HPC 业务数据盘
threshold_percent: 90 # 达 90% 触发告警
zfs:
enabled: false # ZFS 存储池健康监控总开关,如果设备使用的ZFS存储请设置为true
zpool_path: "/sbin/zpool" # zpool 驱动工具路径
check_interval: 60 # 状态轮询频率(秒)
notifier:
enabled_channels: ["grpc", "email", "motd", "aliyun_sms"] # 按需启用通知通道,正常不接入主控中心可以去掉grpc通知
cooldown_seconds: 300 # 全局防暴刷冷却时间
grpc:
target_addr: "192.168.10.100:50051"
email:
smtp_host: "smtp.exmail.qq.com"
smtp_port: 465 # 465 端口自动启用隐式 TLS
username: "[email protected]"
password: "your-auth-password"
from: "[email protected]"
to: ["[email protected]", "[email protected]"]
motd:
mode: "append" # 仅追加文件,不使用 wall 弹窗打扰用户
motd_path: "/etc/motd.d/sonmi-stor-alert"
aliyun_sms:
access_key_id: "LTAI5txxxxxxxxxxxxxxxx"
access_key_secret: "yOxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
sign_name: "sonmi"
template_code: "SMS_123456789"
phone_numbers: ["13800138000"]agent:
data_dir: "/var/lib/sonmi/stor-monitor"
log_level: "info"
cluster_name: "ExampleCluster" # 静态配置:客户/集群标识
# node_name: "" # 留空:程序将自动抓取系统 Hostname 作为节点名
collector:
enabled: true # 是否开启raid卡硬件故障监测,没有配置raid卡的设备请设置为false
storcli_path: "/opt/MegaRAID/storcli/storcli64"
controllers: ["/c0"] # 支持多卡,如 ["/c0", "/c1"]
event_interval: 60 # 增量日志抓取频率(秒)
status_interval: 120 # 全量状态轮询频率(秒)
evaluator:
min_alert_level: "CRITICAL" # 触发告警的最低阈值 (WARNING/CRITICAL/FATAL)
ignore_bbu: true # true: 屏蔽无电池节点的 BBU 缺失/禁用告警
filesystem:
enabled: true # OS 层面挂载点容量监控总开关
check_interval: 300 # 检查间隔(秒),建议 300s 避免过度调用系统底座
mounts:
- path: "/" # 监控根分区
threshold_percent: 85 # 达 85% 触发告警
- path: "/share" # 监控 HPC 业务数据盘
threshold_percent: 90 # 达 90% 触发告警
zfs:
enabled: false # ZFS 存储池健康监控总开关,如果设备使用的ZFS存储请设置为true
zpool_path: "/sbin/zpool" # zpool 驱动工具路径
check_interval: 60 # 状态轮询频率(秒)
notifier:
enabled_channels: ["grpc", "email", "motd", "aliyun_sms"] # 按需启用通知通道,正常不接入主控中心可以去掉grpc通知
cooldown_seconds: 300 # 全局防暴刷冷却时间
grpc:
target_addr: "192.168.10.100:50051"
email:
smtp_host: "smtp.exmail.qq.com"
smtp_port: 465 # 465 端口自动启用隐式 TLS
username: "[email protected]"
password: "your-auth-password"
from: "[email protected]"
to: ["[email protected]", "[email protected]"]
motd:
mode: "append" # 仅追加文件,不使用 wall 弹窗打扰用户
motd_path: "/etc/motd.d/sonmi-stor-alert"
aliyun_sms:
access_key_id: "LTAI5txxxxxxxxxxxxxxxx"
access_key_secret: "yOxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
sign_name: "sonmi"
template_code: "SMS_123456789"
phone_numbers: ["13800138000"]修改完成后通过下面的命令重启程序即可:
shell
systemctl restart stor-monitorsystemctl restart stor-monitor程序的日志文件路径为:/var/log/sonmihpc/stor-monitor.log
motd通知默认路径为:/etc/motd.d/sonmi-stor-alert
当发生报警后,处理完毕就可以删除motd通知文件。