在运维和开发过程中,我们最怕的就是**“错过报警”**。
传统的报警方式都有明显的痛点:
- 邮件:太慢,容易被淹没在垃圾邮件里。
- 短信:要钱,且个人开发者很难申请到自定义模板。
- 微信/钉钉:需要复杂的企业认证或 Webhook 配置,且容易被系统折叠。
今天介绍一个开源神器 ntfy.sh,它不需要登录、不需要配置密钥,只要发一个 HTTP 请求,手机就能收到推送。最重要的是,它支持**“强提醒”**模式,即使手机静音也能把你吵醒。
1. 原理图解
ntfy 的工作原理非常简单,它是基于发布-订阅(Pub-Sub)模式的。
2. 快速上手
第一步:手机端订阅
- 下载 ntfy App (Google Play / F-Droid / App Store)。
- 点击
+号。 - 输入一个只有你知道的主题名,例如:
prod_server_alert_8821。- 注意:默认服务器的主题是公开的,不要使用
test或alert这种容易撞车的名字。
- 注意:默认服务器的主题是公开的,不要使用
- 点击订阅。
第二步:发送测试消息
打开电脑终端(Terminal),输入以下命令:
curl --location --request POST 'https://ntfy.sh/prod_server_alert_8821' \
--header 'Priority: 5' \
--header 'Content-Type: application/json' \
--data-raw '测试一下,服务器运行正常'
你的手机应该会立刻收到通知。
3. 核心功能:如何实现“强提醒” (Priority 5)
这是 ntfy 最杀手级的功能。当服务器宕机时,我们希望手机像防空警报一样响,而不是普通的“叮”一声。
客户端发送设置
在发送请求时,必须添加 Priority: 5(最高优先级)的 Header。
curl --location --request POST 'https://ntfy.sh/prod_server_alert_8821' \
--header 'Priority: 5' \
--header 'Content-Type: application/json' \
--data-raw '数据库连接失败,请立即处理!'
手机端设置(关键!)
为了让这个优先级生效,你必须在 ntfy App 中进行设置(以 Android 为例):
- 进入 设置 -> 通知设置。
- 勾选 “覆盖勿扰模式 (Override Do Not Disturb)”。
- 勾选 “持续响铃 (Insistent notifications)” —— 这一步非常重要,勾选后,报警声会一直响,直到你手动划掉通知。
4. 实战:在 n8n 中集成
如果你使用 n8n 编排自动化任务,集成 ntfy 非常简单,不需要专门的插件,直接用 HTTP 节点。
n8n 节点配置参考:
- Method:
POST - URL:
https://ntfy.sh/prod_server_alert_8821 - Headers:
- Name:
Priority| Value:5 - Name:
Title| Value:n8n 报警
- Name:
- Body:
{{ $json.message }}(填入你的报错信息)
5. 安卓保活指南(华为/小米必读)
国内安卓手机为了省电,息屏后往往会杀掉后台应用。为了保证息屏也能收到报警,请务必对 ntfy App 做以下设置:
通用设置
- 电池优化:设置为“无限制”或“不允许优化”。
- 后台数据:允许“后台数据使用”。
华为 (HarmonyOS/EMUI) 特别设置
- 进入 应用启动管理 -> 找到 ntfy -> 关闭自动管理。
- 在弹窗中全部勾选:允许自启动、允许关联启动、允许后台活动。
- 进入 通知设置 -> 锁屏通知 -> 选择 “显示”。
小米 (HyperOS/MIUI) 特别设置
- 开启 自启动 权限。
- 进入 权限管理 -> 开启 “锁屏显示” 权限(默认是关闭的)。
6. 进阶:自建服务器
如果你担心数据隐私,或者想要更短的主题名,可以使用 Docker 自建 ntfy 服务器:
docker run -p 80:80 -it binwiederhier/ntfy serve
部署后,手机 App 的设置里将“默认服务器”改为你的服务器 IP 即可。
总结
ntfy 是目前个人开发者和小团队监控报警的最佳实践之一。它解决了“通知难、通知慢、无法强提醒”的三大痛点。配合 n8n 或简单的 Shell 脚本,你可以在 10 分钟内搭建一套企业级的告警推送系统。








暂无评论内容