📱 手机分类治理与拖拽看板
直接拖拽手机卡片到目标群组即可完成分类,每个群组已自动绑定广播 Topic,操作即时生效。
📲 手机终端注册与绑定
将 Android 客户端生成的设备专属 Token 录入控制台,登记型号即可自动匹配品牌徽标,并分配业务群组。
| 品牌与设备型号 | 设备备注名称 | 所属业务群组 | 设备专属 Token | 最后在线 | 操作 |
|---|
📁 群组与广播频道管理
手机归属于群组,一个频道可以包含多个群组,一个群组可以加入多个频道。所有选择频道处均为下拉框,发信按频道群发直达全部组内手机。
所有手机均属于具体的业务群组。每个群组可订阅加入多个广播频道。
一个频道可聚合多个业务群组。向频道发送推送时,该频道下所有群组旗下的手机都将同时接收到消息。
🚀 消息推送与群发测试台
支持按业务群组一键群发、单机单播直连、频道广播或全员广播;内置 12 种通知模式(HITL / 进度 / 富文本 / 指标 / Diff / 风暴折叠 / E2EE 等)。
下方 JSON 由上方步骤实时生成;在此直接编辑会反向同步回表单字段。
💻 终端与自动化集成代码
# 正在生成命令...
"topic": "ops_alerts" 一条消息群发全频道;或传 "to_devices": ["tokenA","tokenB"] 指定名单推送;"group" 按群组定向。
📋 HITL 人机协同审批与 Webhook 回执
配置移动端决策回调地址,实时记录运维人员在手机端点击【批准/拒绝】的双向回执流水与 HMAC-SHA256 验签状态。
当手机端用户在通知栏或 App 内点击决策按钮时(如准许/驳回),PushNova 将携带加密签名 POST 此 Webhook:
密钥由平台按租户用 CSPRNG 自动生成(256-bit)。请填入你的回调接收端验签配置;疑似泄露请立即"重新生成"。
| 回执时间 | 通知 ID | 审批操作 | 操作终端 | 附带附言 | HMAC-SHA256 | Webhook 应答 |
|---|
🔑 开发者 API Key 与账号配额
用于脚本、自动化流水线以及后端服务在调用 /v1/dispatch 时的鉴权认证,并实时展示账号配额。
升级为 PRO 专业版($49.99/月订阅)即可获得每月 100,000 条发送额度,最多支持 50 台设备。
💎 会员套餐与账单
升级 PRO 专业版,每月 10 万条推送配额与优先路由节点,订单与支付流水安全保存、可随时查询。
- ✔ 30 天全功能体验期(到期自动失效)
- ✔ 最多绑定 5 台手机设备
- ✔ 累计 1,000 条推送总额度
- ✔ 全部消息模式全功能可用
- ✔ HITL 审批 + Webhook 回执
- ✔ 每月 10,000 条发信额度(自然月自动重置)
- ✔ 最多 10 台手机设备
- ✔ $4.99/月 · 随时取消
- ✔ 全部 12 种消息模式
- ✔ HITL 审批 + Webhook 回执
- ✔ 每月 100,000 条发信额度(自然月自动重置)
- ✔ 最多 50 台手机设备
- ✔ $49.99/月 · 随时取消
- ✔ 优先边缘路由节点
- ✔ 全部 12 种消息模式
- ✔ 额外 100,000 条信息发送配额
- ✔ 单次购买有效期 90 天
- ✔ 免费 / PRO 额度耗尽后无缝启用
- ✔ 支持多次叠加充值与自动延期
| 订单号 | 套餐 | 金额 | 渠道 | 状态 | 交易号 | 创建时间 | 操作 |
|---|
🧾 我的订阅
当前套餐、续费信息与账单记录,一目了然。
📥 PushNova Android 客户端安装包
下载最新编译好的生产级 Android APK,在手机上安装后即可接收端到端加密通知与审批交互。
PushNova Android 客户端 (Release 生产发布版)
v3.2 Official
构建变体: Release 生产正式版 (PushNova-latest.apk · 约 23.3 MB)
内置 P-256 ECIES 端到端加密(身份私钥托管于 Android Keystore)、实时离线拉取队列与 Material 3 审批组件。
手机安装后使用说明:
- 在手机上安装并打开 PushNova App,允许「通知权限」;
- 在 App 中进入「设置 → 设备 Token」,复制显示的「本机专属设备 Token」(以
pn_tok_live_...开头); - 将该 Token 复制到本控制台左侧「注册绑定新手机」中进行录入登记;
- 录入完成后,直接在「手机分类与拖拽看板」中将手机拖动到对应业务群组即可开始接收通知!
🛠️ PushNova Ops · Linux 服务器运维监控智能套件
轻量纯 Shell 打造 · 0 额外运行时依赖 · 26 项全景健康指标 · 毫秒级多语言移动端告警推送 · Cron 与 Systemd 双调度引擎
极致轻量 · 0 外部依赖
全套纯 POSIX Shell + coreutils 编写,无需安装 Python、Node.js 或 Go 等繁重运行时环境,内存开销近乎为 0,任何 Linux 服务器一键即跑。
26 项全谱系健康指标
全方位覆盖系统负载、CPU/内存/磁盘使用率、TCP 连接数、Docker/Podman 容器、TLS 证书有效期、HTTP 状态码探针、Ping 延迟及时钟同步等。
告警风暴收敛与智能恢复
具备冷却期静默机制与告警指纹去重(Fingerprint)。异常持续时自动折叠计数(xN),故障恢复后即刻下发绿色恢复卡片,拒绝告警轰炸。
双语通知卡片与人机审批
支持全中文与全英文双语卡片自动切换;提供纯文本、Markdown、结构化矩阵表格与趋势折线;支持手机端一键操作按钮与 Webhook 回调。
curl -fsSL https://pushnova.ezcloud.ltd/ops/dl/install.sh | bash
curl -fsSL https://cdn.jsdelivr.net/gh/netproxy/download@main/ops/install.sh | bash -s -- --mirror
向导配置流程说明:
- 第一步 · 语言选择:支持选择英文(默认)或简体中文。若选择中文,后续交互、命令行提示以及发送到手机的通知均为中文;
- 第二步 · 发信凭据录入:输入本控制台左侧「发信 API Key 与配额」中获取的 API Key;
- 第三步 · 推送目标绑定:选择账号广播、频道主题或设备群组(若安装了 jq 向导将自动列出您当前已配置的频道与群组);
- 第四步 · 监控指标与定时:勾选关心的巡检指标并一键配置 Cron / Systemd 定时任务,即可高枕无忧!
| 命令 | 功能描述 | 常用选项与示例 |
|---|---|---|
pushnova-ops install |
重新唤起交互式安装向导,支持步骤 1 选择中英双语 | -y (非交互静默安装) |
pushnova-ops report |
立即执行全量采集,并向移动设备推送今日巡检日报卡片 | --template rich --dry-run |
pushnova-ops check |
运行健康检查与阈值比对,仅在指标超标且未在静默期时告警 | --force (强制发送) |
pushnova-ops test |
发送一条测试推送通知卡片,验证终端接收与网络链路 | --template test |
pushnova-ops doctor |
全面诊断当前系统的工具链依赖、文件权限、网关连通性与配置 | 无参数直接执行 |
pushnova-ops cron status |
检查受 PushNova Ops 托管的定时巡检与告警调度任务状态 | install | remove |
pushnova-ops config show |
显示当前已生效的全部运维配置、推送目标及各项监控指标阈值 | set KEY VAL |
| 指标分类 | 指标 ID | 指标名称 | 单位 / 类型 | 监控重点说明 |
|---|---|---|---|---|
| 核心资源 | load |
系统负载 · System Load (1m) | - / 数值 | 1/5/15 分钟平均负载,告警阈值自动关联 CPU 核数 |
cpu |
CPU 使用率 · CPU Utilization | % / 数值 | 采样 1 秒窗口的非空闲占比(默认告警阈值 80%/95%) | |
mem |
内存使用率 · Memory Usage | % / 数值 | 基于 Linux 内核 MemAvailable 计算真实内存紧张度 | |
disk |
磁盘使用率 · Disk Usage | % / 数值 | 探测所有真实挂载点中的最高使用率,防爆盘 | |
inode |
inode 使用率 · Inode Usage | % / 数值 | 防止小文件堆积导致 inode 耗尽引发写盘失败 | |
conn |
TCP 连接数 · TCP Connections | - / 数值 | ESTABLISHED + TIME_WAIT 连接总和,防连接池泄漏 | |
| 可用性与网络 | http |
HTTP 可用性 · HTTP Availability | - / 状态 | 探测关键 API 探针,5xx 或超时断开时即刻告警 |
http_latency |
HTTP 响应耗时 · HTTP Latency | ms / 数值 | 所有探测 URL 中的最大响应耗时,防慢请求积压 | |
port |
端口连通性 · Port Connectivity | - / 状态 | MySQL、Redis、Nginx 等关键服务端口连通探测 | |
ping |
主机连通性 · Host Reachability | - / 状态 | 网关或关键外部主机的 ICMP 丢包与连通探测 | |
| 安全与运维 | cert |
TLS 证书有效期 · TLS Cert Days | 天 / 数值 | HTTPS 证书距离过期剩余天数,防止证书忘记续期 |
service |
关键服务存活 · Critical Services | - / 状态 | systemctl / openrc 守护服务存活(sshd, nginx 等) | |
container |
容器状态 · Container Status | - / 状态 | Docker / Podman 运行中与异常停止容器统计 | |
reboot |
系统重启事件 · Reboot Event | - / 状态 | 跟踪系统 boot_id,服务器发生意外重启时即刻报备 |
📖 PushNova 开发者全景使用指南与接口手册
边缘高可用中继网关 · P-256 ECIES 零知识端到端加密 · 人机协同 (HITL) 决策闭环 · 生产级集成权威规范
PushNova 采用现代分布式轻量高可用设计。服务端部署于全球边缘网络(无服务器架构 + 分布式云数据库 + 高速缓存),移动客户端基于 Android Kotlin + Jetpack Compose 原生开发,支持 P-256 ECIES 端到端密文通信(身份私钥托管于 Android Keystore)。
| 凭据实体 | 格式范例 (点击可复制) | 生成与持有者 | 核心作用与安全建议 |
|---|---|---|---|
|
发信 API Key
GATEWAY AUTH
|
pn_ak_live_a1b2c3d4... 📋
|
控制台「发信 API Key 与配额」自主创建 | 服务鉴权凭证。用于系统调用 HTTP API 时的身份凭据,请存放在服务器环境变量或 KMS 中,切勿泄露于前端代码。 |
|
设备 Token
DEVICE ADDR
|
pn_tok_live_sec99a74b12c8e3f 📋
|
Android 客户端安装后硬件指纹哈希生成 | 物理设备的全局唯一路由地址。模拟器提供固定调试 Token,真实物理机由硬件设备指纹生成。 |
|
业务群组 (Group)
ORGANIZATION
|
🚀 核心运维组 (SRE) | 控制台管理员统一创建与维护 | 设备集合归属。一台手机仅可归属于一个群组;群组可同时加入并订阅多个不同广播频道。 |
|
广播频道 (Topic)
BROADCAST
|
#ops_alerts #quant_signals | 控制台统一登记与分配 | 多对多多播分发管道。一个频道可以订阅多个群组;推送到频道时,该频道下所有群组的手机均同步推送。 |
人机在环决策 (Human-in-the-Loop, HITL) 是 PushNova 的旗舰级创新特性。专为 AI Agent 自主决策审核、生产集群扩容、金融高频交易风控跟单等高风险场景设计。系统不仅向 Android 客户端推送通知,还在通知栏与应用锁屏界面呈现带有明确色彩语义的交互操作按钮。操作者点击按钮后,手机客户端通过非对称签名秒级将审批决策回传至您的业务后端。
{
"title": "生产环境集群应急扩容审批",
"message": "检测到高峰流量突发,AI Agent 建议扩容 10 个 Pod 节点,请确认:",
"type": "HITL",
"id": "hitl_k8s_scale_01",
"priority": "EMERGENCY",
"timeout_seconds": 120,
"actions": [
{
"key": "APPROVE",
"label": "准许扩容",
"style": "PRIMARY"
},
{
"key": "REJECT",
"label": "驳回请求",
"style": "DESTRUCTIVE"
}
],
"callback_url": "https://samplecallback.ezcloud.ltd/v1//callback",
"to": "pn_tok_live_sec99a74b12c8e3f"
}
actions[].style 视觉语义与交互规范详解
为了确保运维与审批人员在紧急情况下(如半夜突发告警或高压时刻)不发生误触,PushNova 的 Android 原生客户端与 Web 端遵循严谨的视觉人机工学 (Cognitive Ergonomics) 对不同 style 进行了视觉区隔:
| Style 枚举值 | 视觉渲染效果 | 设计意图与人机心理学 | 适用场景举例 |
|---|---|---|---|
| PRIMARY |
主推/确认色 背景色: #0284c7 (亮蓝)文字: 白色粗体,高亮圆角卡片 |
正向引导。代表建议用户执行的常规审批流程或预设期望动作。具有最高视觉权重与注意力捕捉能力。 | 准许扩容、同意发布、放行资金划转、确认双因素登录、接受授权 |
| DESTRUCTIVE |
警示/破坏色 背景色: #ef4444 (高警戒红)文字: 白色粗体,震动强反馈 |
危险拦截。强烈警示该动作具有破坏性、不可逆性或阻断性。在 Android 客户端点击时触发重触感震动反馈以防误触。 | 驳回请求、紧急熔断停机、阻断黑客 IP、撤销交易挂单、注销凭证 |
| SECONDARY |
次要/辅助色 背景色: #f1f5f9 (浅灰)边框: #cbd5e1, 文字: 深灰
|
低频中性操作。视觉权重低于 PRIMARY 与 DESTRUCTIVE,表示可选的中间状态或延迟决策。 | 稍后提醒、转交他人审批、查看监控明细看板、暂缓执行 |
| DEFAULT |
中性文本按钮 透明背景,带轻微底纹轮廓 |
轻量退出或忽略。不带有强烈正向或负向的情感暗示。 | 已知晓、关闭通知、取消当前弹窗 |
actions 完整字段定义与扩展特性| 参数字段 | 类型 | 必填 | 详细说明 |
|---|---|---|---|
key |
String | 是 | 操作的唯一键名(如 APPROVE、REJECT)。用户点击后,该 key 将作为 Webhook 回调中的 action_key 返回。 |
label |
String | 是 | 按钮显示的中文/英文标签文本(建议控制在 2-6 个汉字以内,如「准许扩容」、「驳回请求」)。 |
style |
String | 否 | 按钮视觉样式枚举,取值范围:PRIMARY | DESTRUCTIVE | SECONDARY | DEFAULT(默认值为 PRIMARY)。 |
input_type |
String | 否 | 若设置为 "TEXT",点击按钮时 Android 通知栏将弹出原生单行输入框,允许审批人附带文本备注(如驳回原因),随回调回传。 |
- 超时倒计时 (
timeout_seconds):指定审批有效时间(如 120 秒)。Android 客户端在收到通知后会在标题旁动态倒计时,超时后按钮自动禁用置灰,并可向 Webhook 发送 TIMEOUT 状态; - Webhook 回调地址 (
callback_url):用户点击动作后,手机客户端与中继网关将向该地址发送 POST 请求; - HMAC-SHA256 防篡改签名:回调请求 Header 中附带
X-PushNova-Signature,服务端可通过您的 API Key 验签,杜绝假冒伪造。
POST https://pushnova.stream/v1/dispatch 是服务端向 Android 移动客户端分发消息的统一网关入口。
PushNova 支持三种层级的寻址方式,网关将按照如下优先级进行解析分发:
- 最高优先级:单机直达 (
to):直接指定手机唯一的device_token,仅向该单台物理手机推送; - 第二优先级:业务群组 (
group):指定群组名称(如"🚀 核心运维组 (SRE)"),网关将查找所有属于该组的手机并全员分发; - 第三优先级:广播频道 (
topic):指定频道标识(如"ops_alerts"),网关将查找加入该频道的全部群组,并提取这些群组旗下的所有手机进行广播分发。
| 字段名称 | 类型 | 必填 | 详细定义与取值范例 |
|---|---|---|---|
title |
String | 是 | 通知标题,建议 30 字符以内,突出业务事件(如 "生产集群扩容审批")。 |
message |
String | 是 | 通知正文内容,支持换行排版与指标提炼。 |
to |
String | 三选一 | 目标手机的 Device Token,形如 pn_tok_live_sec99a74b12c8e3f。 |
topic |
String | 三选一 | 目标广播频道代号,形如 ops_alerts。 |
group |
String | 三选一 | 目标业务群组名称,形如 🚀 核心运维组 (SRE)。 |
type |
String | 否 | 通知渲染模式,默认 STANDARD。可选:HITL | RICH_MARKDOWN | ONGOING | METRIC | DIFF | STORM_FOLD | E2EE | KLINE | STRUCTURED_TABLE 等。 |
priority |
String | 否 | 推送优先级:DEFAULT | HIGH | EMERGENCY(紧急通知将绕过免打扰并在锁屏高亮悬浮展示)。 |
actions |
Array | 否 | 交互操作按钮数组,专用于 HITL 审批模式,见第 2 章说明。 |
data |
Object | 否 | 业务透传自定义键值对,客户端可通过通知点击意图获取该字典内容。 |
callback_url |
String | 否 | Webhook 接收地址,操作完成后手机端与边缘网关向此 URL 发送回调。 |
timeout_seconds |
Number | 否 | 审批操作倒计时时长(秒),默认 120。 |
sound |
String | 否 | 提示音类型:default | alarm | radar | silent。 |
为了满足大型组织团队的协作管理需求,PushNova 在 v3.0 版本中升级了群组与频道的双向多对多拓扑治理体系:
device_token 稳定绑定至所属群组
✔ 满足大规模企业安全多租户权限隔离
- 原则一:所有手机必须属于一个业务群组。手机在注册时指定所属群组,亦可随时在「手机分类与拖拽看板」中拖动切换群组归属;
- 原则二:一个频道可以包含多个群组。例如生产告警频道(
ops_alerts)可同时包含「核心运维组」与「安全风控组」; - 原则三:一个群组可以加入多个频道。例如「核心运维组」可同时订阅「生产告警」和「系统探针心跳」两个频道;
- 统一治理交互:在控制台各界面中,凡涉及频道选择的位置(发信测试台、群组绑定、订阅管理),全部提供规范的下拉选择框,自动展示群组数与手机数,避免拼写错误。
| 通知模式 (type) | 核心特征与视觉展现 | 典型业务载荷结构 (Payload JSON 片段) |
|---|---|---|
| HITL 人机在环审批 |
包含带色彩语义(PRIMARY/DESTRUCTIVE)的原生审批按钮与倒计时。 | "type": "HITL", "actions": [{"key":"APPROVE","label":"同意","style":"PRIMARY"}] |
| RICH_MARKDOWN 富文本排版 |
支持代码高亮、表格、粗斜体及超链接,适合发布版本 Changelog 或长篇运维总结。 | "type": "RICH_MARKDOWN", "message": "### 部署报告
- Pods: 10
- Status: OK" |
| ONGOING 长效常驻进度条 |
通知栏常驻不消失,展示实时百分比进度条(0-100%),适合编译构建或文件传输。 | "type": "ONGOING", "data": {"progress": 78, "status": "Building APK..."} |
| METRIC 核心指标仪表盘 |
以大字号卡片呈现单项或组合 KPI 指标(如 QPS、延迟、营收),带涨跌色彩。 | "type": "METRIC", "data": {"value": "98.7%", "delta": "+1.2%", "trend": "UP"} |
| DIFF 代码/配置比对 |
红绿颜色高亮呈现配置或代码的增删改差异(Unified Diff 格式)。 | "type": "DIFF", "message": "- replicas: 3
+ replicas: 10" |
| STORM_FOLD 告警风暴智能折叠 |
同一类别的重复报警自动收拢折叠在单条通知内,显示聚合条数,避免刷屏打扰。 | "type": "STORM_FOLD", "data": {"collapse_key": "db_conn_err", "burst_count": 42} |
| E2EE 零知识端到端加密 |
消息正文由发送方在本地基于设备 P-256 公钥(ECIES)加密为密文,中继节点不可见,终端用 Keystore 私钥解密呈现。 | "type": "E2EE", "is_encrypted": true, "ciphertext": "PNV1.<eph SPKI b64url>.<iv b64url>.<ct||tag b64url>" |
| KLINE 金融高频 K 线图 |
微型行情走势图表与挂单成交信息,适合量化策略突破与仓位变动提醒。 | "type": "KLINE", "data": {"symbol": "BTC/USDT", "price": "68500", "change": "+3.4%"} |
| STRUCTURED_TABLE 结构化表格报表 |
通知详情页渲染规范的二维数据矩阵,清晰呈现巡检清单或对账报表。 | "type": "STRUCTURED_TABLE", "data": {"headers": ["节点","CPU"], "rows": [["node-1","45%"]]} |
| STANDARD 标准文字通知 |
经典轻量系统级通知,支持标题、正文与自定义角标。 | "type": "STANDARD", "title": "日常提醒", "message": "定时任务执行成功" |
curl -X POST "https://pushnova.stream/v1/dispatch" -H "Content-Type: application/json" -H "Authorization: Bearer pn_ak_live_simulator_demo" -d '{
"title": "生产环境集群应急扩容审批",
"message": "检测到高峰流量突发,AI Agent 建议扩容 10 个 Pod 节点,请确认:",
"type": "HITL",
"priority": "EMERGENCY",
"to": "pn_tok_live_sec99a74b12c8e3f",
"actions": [
{"key": "APPROVE", "label": "准许扩容", "style": "PRIMARY"},
{"key": "REJECT", "label": "驳回请求", "style": "DESTRUCTIVE"}
],
"callback_url": "https://samplecallback.ezcloud.ltd/v1//callback"
}'
import requests
url = "https://pushnova.stream/v1/dispatch"
headers = {
"Authorization": "Bearer pn_ak_live_simulator_demo",
"Content-Type": "application/json"
}
payload = {
"title": "生产环境集群应急扩容审批",
"message": "检测到高峰流量突发,AI Agent 建议扩容 10 个 Pod 节点,请确认:",
"type": "HITL",
"priority": "EMERGENCY",
"topic": "ops_alerts", # 或使用 "to": "pn_tok_live_..."
"actions": [
{"key": "APPROVE", "label": "准许扩容", "style": "PRIMARY"},
{"key": "REJECT", "label": "驳回请求", "style": "DESTRUCTIVE"}
],
"callback_url": "https://your-server.com/api/hitl-callback",
"timeout_seconds": 120
}
response = requests.post(url, json=payload, headers=headers)
print("Response:", response.status_code, response.json())
const payload = {
title: "生产环境集群应急扩容审批",
message: "检测到高峰流量突发,AI Agent 建议扩容 10 个 Pod 节点,请确认:",
type: "HITL",
priority: "EMERGENCY",
topic: "ops_alerts",
actions: [
{ key: "APPROVE", label: "准许扩容", style: "PRIMARY" },
{ key: "REJECT", label: "驳回请求", style: "DESTRUCTIVE" }
],
callback_url: "https://samplecallback.ezcloud.ltd/v1//callback"
};
const resp = await fetch("https://pushnova.stream/v1/dispatch", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer pn_ak_live_simulator_demo"
},
body: JSON.stringify(payload)
});
console.log(await resp.json());
当用户在手机端点击决策按钮(如准许、驳回、紧急关机)后,PushNova 边缘网关完成移动端设备鉴权,并使用您专属的 Webhook 验签密钥 (pn_wh_...) 对回执进行 HMAC-SHA256 签名,随后毫秒级转发到您的接收端。
PushNova 支持两种配置方式(三级自动回退):
• 全局默认地址:在控制台左侧进入「HITL 人机协同 ➔ Webhook 回调配置」,填入您的默认接收端 URL(如 https://api.yourdomain.com/v1/callback),并在下方复制您的专属验签密钥 pn_wh_...;
• 单次动态指定:在调用 /v1/dispatch 发信时,在 JSON 报文中指定 "callback_url": "https://...",该通知的决策将优先直达该地址。
签名原文格式:notification_id:action_key:user_input:timestamp
算法:HMAC-SHA256(TENANT_SECRET, 原文)。若 user_input 为空则拼入空字符串。时间戳容差建议设为 300 秒以防重放攻击。
当运维人员在手机通知栏或 PushNova App 内点击决策按钮时,网关将以 HTTP POST 形式将决策数据派发到您配置的回调地址,并在 Header 中附带专属防伪签名 X-PushNova-Signature。自建接收端验证签名与防重放无误后,安全联动执行本地 Shell、Docker 容器重启或 Kubernetes 扩缩容。
代码中验签使用的专属租户密钥(PUSHNOVA_WEBHOOK_SECRET,格式为 pn_wh_...)是由平台为每个租户独立派发的密码学安全随机密钥。获取路径如下:
- 在控制台左侧主导航菜单中,点击 「📋 HITL 人机协同审批」(或在顶部导航点击对应选项);
- 在页面顶部首个深色配置卡片:「🔗 Webhook 回调配置与连通性验证」 中;
- 找到 「Webhook 验签密钥 (每租户独立 · 系统自动生成)」 输入框,点击右侧的 【复制】 按钮即可!
| 场景 | 发信 dispatch 核心参数 | 手机交互与接收端最终联动执行 |
|---|---|---|
| 机房断电 / UPS 告警 远程紧急关机 |
手机响警报并在通知栏弹出红色【立即关机】按钮。运维点击后,接收端校验 HMAC 签名无误,下发 sudo shutdown -h now 安全关机落盘。 |
|
| 流量突发过载 K8s 容器扩容 |
点击【自定义副本数】时手机弹出输入框,输入例如 15。接收端校验后执行 kubectl scale deployment api --replicas=15。 |
|
| 黑客暴力撞库 一键阻断封禁 IP |
通知展示可疑 IP(如 198.51.100.24)。点击后接收端自动写入 sudo iptables -I INPUT -s 198.51.100.24 -j DROP 或调用 WAF/防火墙 API 封锁。 |
|
| 微服务死锁/502 一键自愈重启 |
运维在手机一键点击重启,接收端校验后执行 sudo systemctl restart payment.service 快速恢复生产。 |
PushNova 官方提供全功能、零外部依赖(Zero Dependencies)、轻量高效的跨平台 npm 包:pushnova。原生跨平台支持 Windows、macOS 与 Linux,既可作为运维工程师终端的 pushnova-ops 命令行工具,又可作为后端业务服务的 Node.js SDK 用于消息发送与回调安全验签。
pushnova-ops 与 pushnova 两个命令:
npx pushnova-ops status)
-
发信鉴权 API Key(
pn_ak_live_...):用于调用网关发信。点击左侧主菜单「🔑 开发者 API Key 与账号配额」即可一键复制。 -
Webhook 验签密钥(
pn_wh_...):用于接收端校验签名与防重放。点击左侧主菜单「📋 HITL 人机协同审批」,在顶部「🔗 Webhook 回调配置」卡片中点击【复制】。
pushnova-ops config set --gateway "https://pushnova.stream" --key "pn_ak_live_your_api_key_here" --secret "pn_wh_your_webhook_secret_here"
| 运维操作 | CLI 命令 | 功能与手机端效果 |
|---|---|---|
| 网关连通性探测 | pushnova-ops status |
毫秒级探测当前终端到 PushNova 边缘网关的连通延迟与健康状态。 |
| 发送常规运维通知 | pushnova-ops send --title "备份完成" --body "数据库已镜像完毕" --priority HIGH |
下发一条普通运维消息,手机端立即收到原生系统弹窗通知。 |
| 发起人机协同审批 | pushnova-ops hitl --title "生产回滚确认" --body "错误率突增,确认回滚?" --actions "approve:确认回滚,reject:取消" --input |
手机弹出带交互按钮与意见输入框的卡片,运维人员在通知栏即可完成审批。 |
| 本地回调试听端 | pushnova-ops listen --port 8081 |
本地启动微型监听服务并自动验签,手机端点击动作后实时在终端打印回执与输入。 |
| 一键推送主机负载 | pushnova-ops metrics |
自动采集本机 CPU、内存占用与平均负载,格式化为卡片一键推送到手机。 |
const { PushNova, verifyWebhookSignature } = require('pushnova');
// 1. 初始化客户端(自动读取环境变量或 ~/.pushnovarc)
const client = new PushNova({
gateway: 'https://pushnova.stream',
apiKey: process.env.PUSHNOVA_API_KEY // 或传入 'pn_ak_live_...'
});
// 2. 发送普通告警通知
async function sendAlert() {
await client.send({
title: '生产环境内存告警',
body: '节点 web-02 内存占用超过 88%',
priority: 'HIGH',
topic: 'ops_alerts' // 广播到频道,或使用 to: 'pn_tok_live_...'
});
}
// 3. 发起人机协同(HITL)交互审批
async function requestApproval() {
const result = await client.sendHitl({
title: '数据库扩容审批请求',
body: '在线会话数激增,AI Agent 建议扩容至 16 副本,请审批:',
actions: [
{ key: 'APPROVE', label: '✅ 批准扩容', style: 'PRIMARY' },
{ key: 'REJECT', label: '❌ 驳回申请', style: 'DESTRUCTIVE' }
],
allowInput: true,
inputPlaceholder: '若驳回请输入原因...'
});
console.log('HITL Dispatched:', result);
}
// 4. 自建 Callback 接收端一键验签与防重放中间件
function handleWebhook(req, res) {
const check = verifyWebhookSignature({
rawBody: req.rawBody, // 未解析的原始报文 Buffer/String
signature: req.headers['x-pushnova-signature'], // 'sha256=...'
secret: process.env.PUSHNOVA_WEBHOOK_SECRET, // 'pn_wh_...'
timestamp: req.body.timestamp, // 秒级时间戳防重放校验
maxDriftSec: 300
});
if (!check.valid) {
return res.status(403).json({ error: check.reason });
}
// 校验通过,安全处理手机端回传动作
const { action_key, user_input } = req.body;
console.log('收到审批回执: ' + action_key + ', 用户输入: ' + user_input);
res.status(200).json({ status: 'success', action: action_key });
}
答:在 Android 开发与测试中,Web 模拟器与本地预览环境缺乏硬件持久化存储,因此默认预置了统一测试 Token(pn_tok_live_sec99a74b12c8e3f),便于在控制台即开即测;而在真实的 Android 物理手机上,PushNova 客户端在首次启动时会读取硬件安全指纹并进行哈希运算生成全局唯一的永久 Token,并持久化保存在 Android 加密 SharedPreferences 中。在 App 中进入「设置 → 设备 Token」即可一键复制本机专属 Token。
答:PushNova 采用了「频道 ⇄ 群组 ⇄ 手机」的高效拓扑分发逻辑。每个手机都明确属于一个业务群组,一个广播频道关联多个群组。当您向 topic="ops_alerts" 发送推送时,网关首先获取加入了该频道的所有群组,接着拉取这些群组旗下的所有设备 Token 并自动去重,实现一次请求全量手机毫秒级同步接收。
答:PushNova 边缘网关内置了离线消息队列 (Message Queue)。当设备离线或处于后台休眠时,消息将安全暂存于边缘节点。手机客户端恢复网络或唤醒时,会自动向边缘拉取待投递通知并进行本地展示。
🛡️ 管理员后台
仅固定管理员账号可用:用户管理、发送量报表与购买情况(订单、加油包、PRO 订阅)。
| 账号 | 套餐 | 设备 | 今日 | 区间 | 累计 | 配额用量 | 已付 | 最后活跃 | 操作 |
|---|