当前位置: 首页 > news >正文

thingboard告警信息格式美化

原始报警json内容:

{ "severity": "CRITICAL","acknowledged": false,"cleared": false,"assigneeId": null,"startTs": 1739801102349,"endTs": 1739801102349,"ackTs": 0,"clearTs": 0,"assignTs": 0,"propagate": false,"propagateToOwner": false,"propagateToTenant": false,"propagateRelationTypes": [],"originatorName": "DTU-863569063344204","originatorLabel": "DTU-863569063344204","assignee": null,"name": "Inactivity TimeOut","status": "ACTIVE_UNACK","details": {}
}

报警格式美化js代码:

var date = new Date();
var year = date.getFullYear();
var month = ('0' + (date.getMonth() + 1)).slice(-2);
var day = ('0' + date.getDate()).slice(-2);
var hours = ('0' + date.getHours()).slice(-2);
var minutes = ('0' + date.getMinutes()).slice(-2);
var seconds = ('0' + date.getSeconds()).slice(-2);var currentTime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;// 解析告警时间
function formatUnixTime(unixTimestamp) {var date = new Date(unixTimestamp);var year = date.getFullYear();var month = ('0' + (date.getMonth() + 1)).slice(-2);var day = ('0' + date.getDate()).slice(-2);var hours = ('0' + date.getHours()).slice(-2);var minutes = ('0' + date.getMinutes()).slice(-2);var seconds = ('0' + date.getSeconds()).slice(-2);return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
}// 格式化报警级别
var severityMap = {"CRITICAL": "🔥 **严重告警**","MAJOR": "⚠ **主要告警**","MINOR": "🔶 **次要告警**","WARNING": "ℹ **警告**"
};
var severity = severityMap[msg.severity] || "⚠ **未知级别**";// 确认状态
var acknowledged = msg.acknowledged ? "✅ 已确认" : "❌ 未确认";
var cleared = msg.cleared ? "✅ 已清除" : "❌ 未清除";// 组装格式化的告警信息
var messageContent ="📢 **设备告警通知** 📢\n" +"------------------------------\n" +"📅 **当前时间**: " + currentTime + "\n" +"📍 **设备名称**: " + msg.originatorName + "\n" +"🔖 **设备标识**: " + msg.originatorLabel + "\n" +"⚠ **告警名称**: " + msg.name + "\n" +"🚨 **告警级别**: " + severity + "\n" +"🕒 **告警开始时间**: " + formatUnixTime(msg.startTs) + "\n" +"🕒 **告警结束时间**: " + formatUnixTime(msg.endTs) + "\n" +"🔎 **告警状态**: " + msg.status + "\n" +"📌 **确认状态**: " + acknowledged + "\n" +"📌 **清除状态**: " + cleared + "\n" +"------------------------------";var newMsg = {"msgtype": "text","text": {"content": messageContent,"mentioned_list": ["wangqing", "@all"],"mentioned_mobile_list": ["13800001111", "@all"]}
};return {msg: newMsg
};

输出到企业微信消息:

http://www.lryc.cn/news/538718.html

相关文章:

  • redis解决高并发看门狗策略
  • Python函数的函数名250217
  • Unity 获取独立显卡数量
  • JAVA生产环境(IDEA)排查死锁
  • 如何正确安装Stable Diffusion Web UI以及对应的xFormers
  • 机器学习_14 随机森林知识点总结
  • 机器学习基本篇
  • vue2.x与vue3.x生命周期的比较
  • 接口测试及常用接口测试工具(Postman/Jmeter)
  • [论文阅读] SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution
  • Python实战进阶 No1: RESTful API - 基于Flask的实例说明
  • Redis——优惠券秒杀问题(分布式id、一人多单超卖、乐悲锁、CAS、分布式锁、Redisson)
  • OpenCV机器学习(5)逻辑回归算法cv::ml::LogisticRegression
  • 百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用
  • 批处理效率提升技巧
  • Kubernetes知识点总结(十)
  • 安全防御综合练习2 nat+智能选路
  • Flutter 中的数据跨层传递方案
  • 代码随想录D50-51 图论 Python
  • MyBatis进阶
  • 容器化部署Kafka的最佳实践:基于KRaft模式的无ZooKeeper方案
  • DeepSeek核心算法解析:如何打造比肩ChatGPT的国产大模型
  • LeetCode-633. 平方数之和
  • 前端面试技巧与实践
  • windows Redis Insight 如何查看宝塔docker里的redis数据
  • sql数据执行失败,三个命令依次执行
  • BGP配置华为——RR反射器配置
  • 基于Flask的艺恩影片票房分析系统的设计与实现
  • 架构设计系列(三):架构模式
  • 零基础学QT、C++(一)安装QT