1. 当前位置: 网站首页 >  NAS >  NAS出事了怎么第一时间知道?备份静默失败三晚后,我把手机告警全配了一遍

NAS出事了怎么第一时间知道?备份静默失败三晚后,我把手机告警全配了一遍

NAS告警推送到手机配置全图:备份失败三晚事件流、告警事件分级表、邮件DS finder钉钉Bark四条通道对比

我妈家跳闸那回,老DS220j上的备份任务连挂三晚,我一点知觉都没有。周末连上去看日志,任务列表里躺着三行红的,最早那次是周二凌晨。

这事我写过:异地备份那篇里说过,DS220j每天03:40来我家拉数据,我妈家老小区空调微波炉一块开就跳闸。跳闸不稀奇,稀奇的是它跳了之后,我这头三天没人知道。任务计划编辑页里我明明勾了「仅当任务异常终止时发送」,后来才发现——勾是勾了,那台机器上压根没配过邮件通道。勾了个寂寞。

那个周末我把三台机器(我家N100飞牛、我妈家DS220j、表弟的四盘位群晖)挨个配了一遍告警,这篇把事件、通道、脚本全摆出来,你照着抄就行。

先想清楚要它报什么警,再动手配通道

很多人配告警是反着来的:先研究用什么软件推消息,配完了发现不知道该订阅什么事件,最后手机一天响八回,全是「系统运行正常」。先把事件列出来,分级,再选通道。

我的分级就三档:

事件要不要立刻知道我给的通道
备份任务失败要,数据在裸奔钉钉推送
硬盘SMART异常、存储池降级要,拖久二次损坏群晖自动邮件+App推送
UPS转入电池要,得准备关机App推送
磁盘水位超85%当天处理就行钉钉推送
Docker容器更新完成看一眼就行邮件
系统有新版本不用急不开通知

硬盘这块多说一句。坏盘前兆那篇写过,异响、掉速、SMART计数变红,这些前兆机器自己最先知道——SMART数据就在盘体固件里存着。它知道,你不看,等于谁都不知道。所以硬盘告警必须让机器主动喊,而不是等你自己想起来跑一趟检测。

一句话原则:需要你动手的推手机,看一眼就行的进邮箱,可有可无的直接关。后面所有配置都围绕这句来。

群晖:一个通知设置页,办完大半

我妈家那台DS220j最先配。DSM里进控制面板,找「通知设置」,「电子邮件」页签。服务提供商可以直接选QQ,也可以选自定义SMTP自己填:smtp.qq.com,端口465,SSL加密。

这里有个我第一遍就栽的坑:密码栏不能填QQ密码。得先去QQ邮箱网页版,设置、账户,把POP3/SMTP服务开起来,发条短信验证,它会给你一串16位的授权码。DSM里密码栏填的是这个授权码。我图省事填了QQ密码,点「发送测试电子邮件」,直接认证失败,来回查了十分钟才反应过来。

配好邮箱,同一个页面还有推送服务的页签,绑上群晖账号,手机装DS finder这个App登录同一个账号,硬盘健康、存储池降级、UPS转入电池这些系统级事件,DSM自己就会往手机推,比邮件快得多,锁屏直接弹。表弟那台四盘位群晖我是远程带着他配的,一样的路径,五分钟完事。

最后回到出事源头:任务计划。每个任务编辑页里有「发送电子邮件通知」,勾上,再勾下面的「仅当任务异常终止时发送」——正常跑完不烦你,只有挂了才报,这个组合正好。但记住DS220j给我的教训:这些勾选只是「决定要报」,通知设置里的通道才是「用嘴报」,嘴没配,决定再多也是哑巴。

飞牛:系统层没找到成体系的,我把告警放到脚本这边

我家N100跑的飞牛,这块得说实话:我这版系统在设置里翻通知相关,只有零星开关,没有群晖那种成体系的通知中心。飞牛版本迭代快,说不定你看到这篇时已经有了,先自己翻一遍——我等不及,告警直接在Docker和脚本层做的。

两个cron脚本。第一个盯磁盘水位,阈值85%,这是存储池满那篇拿4T盘吃过亏定的数,超了就往钉钉发一条。第二个盯硬盘健康,每周日早上跑一次smartctl -H,输出里只要不是PASSED就报警。SMART具体数字怎么看判读那篇写得很细,脚本只认PASSED这一个词,粗暴但够用。

Docker这边,容器升级那篇提过我只让Watchtower盯Jellyfin和Navidrome两个无状态容器。Watchtower自带邮件通知,环境变量加上WATCHTOWER_NOTIFICATION_EMAIL_FROM、WATCHTOWER_NOTIFICATION_EMAIL_TO和SMTP服务器那几项,它每次更新完容器会给你发封邮件。这种属于「看一眼就行」档,走邮箱不走推送。

手机秒到的两条路:钉钉机器人和Bark

邮件慢,QQ邮箱正常也要等个十几秒到几分钟,DS finder又只管群晖。真正全平台秒到的,我配了两条。

钉钉机器人。建一个只有自己的群(发起群聊随便拉个人再踢掉,或者面对面建群),群设置、智能群助手、添加机器人、选自定义。安全设置三个选项里选「自定义关键词」,我填的「NAS」两个字——注意这个坑:之后所有发过来的消息内容里必须带这个词,不带就拒收。拿到webhook地址后一行curl就能发:

curl -s "https://oapi.dingtalk.com/robot/send?access_token=你的token" -H 'Content-Type: application/json' -d '{"msgtype":"text","text":{"content":"NAS磁盘水位告警:已用87%"}}'

我第一次配完测了一发,返回{"errcode":310000,"errmsg":"keywords not in content"},当时以为是NAS出不了网,防火墙查了半天,后来才看明白是消息里忘了带「NAS」关键词。安卓手机有钉钉就够了,锁屏通知一样弹。

用iPhone的话再加个Bark。App Store装Bark,打开复制你自己的Key,然后任何时候一行就推:curl https://api.day.app/你的Key/NAS告警/磁盘水位87%,锁屏秒到,走的是苹果原生推送,App都不用开着。它还能自建服务端,那是进阶玩法,用官方的完全够。我把Bark给了备份这条线,钉钉管硬盘和水位,两条线分开,响起来就知道是哪类事。

我家现在的告警清单,直接抄

三台机器全配完,现在的清单长这样:

机器事件通道怎么触发
我妈家DS220j备份任务03:40失败群晖邮件任务计划勾异常终止
我妈家DS220j硬盘异常、RAID降级DS finderDSM系统事件自动
我家飞牛N100磁盘水位85%钉钉cron每天早上跑脚本
我家飞牛N100SMART非PASSED钉钉cron每周日跑脚本
我家飞牛N100容器自动更新邮件Watchtower环境变量
配UPS的群晖断电转入电池DS finder系统事件自动

水位脚本就几行,贴出来你改改阈值就能用:

#!/bin/bash
USE=$(df /vol01/1000 | awk 'NR==2{gsub("%","");print $5}')
[ $USE -ge 85 ] && curl -s "https://oapi.dingtalk.com/robot/send?access_token=你的token" -H 'Content-Type: application/json' -d '{"msgtype":"text","text":{"content":"NAS磁盘水位告警:已用'"$USE"'%"}}'

注意脚本里写死了「NAS」开头,就是给钉钉关键词留的位。另外每月挑一天,把阈值临时改成1%跑一次,看手机响不响——告警链路自己也会坏,SMTP授权码过期、钉钉token被重置、cron没跑起来,都可能让你以为岁月静好。让手机响一声,比什么都踏实。

别把告警配成狼来了

配到这最容易犯的错是订阅太多。有两类千万别开推送:

一是登录失败通知。开SSH那篇说过,我转发22端口那半个月,爆破日志几千条,要是每条失败登录都推手机,早疯了。登录失败的正确姿势是自动封锁加定期看报表,不是实时轰炸。

二是系统更新提醒。系统更新那篇的结论是重要补丁要升,但「有新版本」这件事本身不值得打断你,邮箱里躺着就行,看到再安排时间。

还有个双保险建议压箱底:关键事件别只配一条通道。我妈家DS220j是邮件加DS finder双通道,有回QQ邮箱SMTP抽风,App推送还活着,该响的还是响了。鸡蛋别放一个篮子里,告警这行当尤其如此。

收尾给个顺序:先列事件清单分好级,再配通道(群晖一个设置页,飞牛用脚本),然后逐个任务把通知勾上,每月再验一次链路。配完这套,硬盘坏、备份挂、跳闸断电,手机比你自己先知道——那三晚的哑巴亏,不会再吃了。

展开全文


版权说明 手机扫码阅读
版权所有:《数巢笔记》 => 《NAS出事了怎么第一时间知道?备份静默失败三晚后,我把手机告警全配了一遍》
本文地址:https://www.shunot.com/nas/1125.html
除非注明,文章均为 《SHUNOT》 原创,欢迎转载!转载请注明本文地址,谢谢。

发表评论

联系我们

在线咨询:点击这里给我发消息

微信号:master_135

工作日:9:00-23:00,节假日休息

扫码关注