Node.js后端用axios发告警 Node.js服务常跑在BFF或网关层,告警中间件需要在接口异常、队列积压、Pod重启、下游超时率升高时主动通知值班。互亿无线预警通知API是HTTPS POST,Node.js用axios即可异步调用…
Node.js后端用axios发告警
Node.js服务常跑在BFF或网关层,告警中间件需要在接口异常、队列积压、Pod重启、下游超时率升高时主动通知值班。互亿无线预警通知API是HTTPS POST,Node.js用axios即可异步调用,标准HTTP请求无需引入第三方依赖。本文给出示例。
接口与参数
短信 https://api.ihuyi.com/sms/Submit.json,语音 https://api.ihuyi.com/voice/vm,闪信 https://api.ihuyi.com/flash/Submit.json。必填account、password、mobile、content,成功返回code=2与smsid。
axios发送示例
const axios = require("axios");
const AUTH = { account: "API_ID", password: "API_KEY" };
async function sendSms(mobile, content) {
const { data } = await axios.post(
"https://api.ihuyi.com/sms/Submit.json",
new URLSearchParams({ ...AUTH, mobile, content }),
{ timeout: 10000 }
);
if (data.code === 2) console.log("已提交", data.smsid);
else console.error("发送失败", data);
return data;
}
sendSms("13800138000", "【告警】订单队列积压1200条,请值班关注。");
多通道封装
async function alert(level, mobile, text) {
if (level === "P0") {
// 三合一:语音强提醒,模板同步短信+闪信
await axios.post("https://api.ihuyi.com/voice/vm",
new URLSearchParams({ ...AUTH, mobile, content: text }));
} else if (level === "P1") {
await sendSms(mobile, text);
await axios.post("https://api.ihuyi.com/voice/vm",
new URLSearchParams({ ...AUTH, mobile, content: text }));
} else {
await sendSms(mobile, text);
}
}
接入中间件的思路
- 在Express/Koa错误中间件里捕获未处理异常
- 按异常类型映射到P0/P1/P3级别
- 调用alert()发送,避免阻塞主流程,用await+try/catch
- 把smsid写入日志,便于回执对账
与监控告警平台配合
Node.js服务常配合Prometheus、Grafana使用,告警到了Webhook后由BFF转发到预警通知API。在Webhook处理里把告警级别映射到alert()函数:P0三合一群呼,P1双呼,P3短信。注意用try/catch包裹,通知失败不能反过来拖垮监控链路。
5秒首发失败自动换通道,避免单通道抖动漏掉P0。短信回执可查送达状态,语音可查接听时长。smsid写入日志后可与Grafana告警ID关联,事后复盘。
Webhook处理里建议加一层去重:同一告警ID在5分钟内只发一次,避免多个实例同时触发打爆值班手机。
互亿无线提供11种语言代码示例,按成功计费。Node.js团队若想补齐告警触达,注册免费试用,拿测试条数先跑通一条异步告警。




