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.mzph.cn/pingmian/70108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【个人开发】deepspeed+Llama-factory 本地数据多卡Lora微调

文章目录 1.背景2.微调方式2.1 关键环境版本信息2.2 步骤2.2.1 下载llama-factory2.2.2 准备数据集2.2.3 微调模式2.2.3.1 zero-3微调2.2.3.2 zero-2微调2.2.3.3 单卡Lora微调 2.3 踩坑经验2.3.1 问题一:ValueError: Undefined dataset xxxx in dataset_info.json.2…

Python函数的函数名250217

函数名其实就是一个变量,这个变量就是代指函数而已函数也可以被哈希,所以函数名也可以当作集合中的元素,也可作为字典的key值 # 将函数作为字典中的值,可以避免写大量的if...else语句 def fun1():return 123 def fun2():return 4…

apache artemis安装

安装apache artemis https://xxzkid.github.io/2025/apache-artemis-install

VoIP之音视频会议中的混音技术

在VoIP音视频会议中,需要将多路参会方音频流混合成一路音频流再发送给各参会方,以达到参会方可以听到每个与会人声音的目的,这种技术叫混音。 一、混音基础原理 在实际生活中,我们所处的生活和工作环境就是一个自然的混音场&…

青龙圣者的训练脚本训练 Flux lora

下载 通过网盘分享的文件:qinglong_trainer_21.zip 链接: https://pan.baidu.com/s/12JL1c-gwTR5zzqHAPNleRA?pwd7860 提取码: 7860 搭建python环境 conda create -n qinglong python3.10.14 -yconda activate qinglongcd qinglong_trainer_21pip install -r s…

音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现

一、引言 由《音视频入门基础:RTP专题(2)——使用FFmpeg命令生成RTP流》可以知道,推流端通过下面FFmpeg命令可以将一个媒体文件转推RTP,生成RTP流: ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec cop…

matlab 三维时频图绘制

1、内容简介 matlab146-三维时频图绘制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

基于 Ollama 工具的 LLM 大语言模型如何部署,以 DeepSeek 14B 本地部署为例

简简单单 Online zuozuo :本心、输入输出、结果 文章目录 基于 Ollama 工具的 LLM 大语言模型如何部署,以 DeepSeek 14B 本地部署为例前言下载 Ollama实际部署所需的硬件要求设置 LLM 使用 GPU ,发挥 100% GPU 性能Ollama 大模型管理命令大模型的实际运行资源消耗基于 Ollam…

PAT乙级( 1018 锤子剪刀布)C语言超详细解析

文章目录 1018 锤子剪刀布 1018 锤子剪刀布 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。 输入…

2025 年 2 月 TIOBE 指数

2025 年 2 月 TIOBE 指数 二月头条:快,更快,最快! 现在,世界需要每秒处理越来越多的数字,而硬件的发展速度却不够快,程序的速度变得越来越重要。话虽如此,快速编程语言在 TIOBE 指数中取得进展也就不足为奇了。编程语言 C++ 最近攀升至第 2 位,Go 已稳居前 10 名,Ru…

【硬件设计细节】缓冲驱动器使用注意事项

目录 一、缓冲驱动器核心功能与选型原则 二、电路设计关键点 三、布局与布线规范 四、特殊场景处理 五、测试与验证 六、典型问题与解决方案 七、设计流程建议 一、缓冲驱动器核心功能与选型原则 信号增强与隔离 驱动能力匹配:根据负载电流需求选择缓冲器&a…

TCP

TCP 是什么? TCP ( Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 TCP 对应的应用层协议 FTP:定义了文件传输协议,使用 21 端口 TeInet:它是一种用于远程登…

HTML5+CSS多层级ol标签序号样式问题

在CSS中,ol标签用于创建有序列表,而多层级的ol标签可以通过CSS实现不同的序号样式。以下是一些常见的问题和解决方案: 1. 多层级ol的序号格式问题 默认情况下,多层级的ol标签会自动继承父级的序号格式,但有时我们可能…

人工智能3d点云之Pointnet++项目实战源码解读(点云分类与分割)

一.项目文件概述 二.数据读取模块配置 实际代码运行时是先定义与加载好模型,然后再去读取数据进来传入到模型网络中去训练。但现在反过来先读取数据开始。 进入ModelNetDataLoader类的_getitem方法, 做标准化的目的是处理异常大的数值 上面返回的cls是类别,相当于…

[250217] x-cmd 发布 v0.5.3:新增 DeepSeek AI 模型支持及飞书/钉钉群机器人 Webhook 管理

目录 X-CMD 发布 v0.5.3📃Changelog🧩 deepseek🧩 feishu|dingtalk📦 x-cmd✅ 升级指南 X-CMD 发布 v0.5.3 📃Changelog 🧩 deepseek 新增 deepseek 模块,用户可通过 deepseek 直接请求使用 …

图论:tarjan 算法求解强连通分量

题目描述 有一个 n n n 个点, m m m 条边的有向图,请求出这个图点数大于 1 1 1 的强连通分量个数。 输入格式 第一行为两个整数 n n n 和 m m m。 第二行至 m 1 m1 m1 行,每一行有两个整数 a a a 和 b b b,表示有一条…

led+串口代码 重定向 STM32F030F4P6 fgetc multiply defined错误

led串口 重定向 STM32F030F4P6 重定向报错 axf: Error: L6200E: Symbol fgetc multiply defined (by usart.o and main.o). 把 #include "stdio.h" int fputc(int ch, FILE *fp) {HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);return ch; }int f…

Letsencrypt+certbot为域名免费配置ssl

1、基础概念 Let’s Encrypt 是一个提供免费 SSL/TLS 证书的认证机构,它的目标是让互联网上的通信更加安全,特别是普及 HTTPS。通过 Let’s Encrypt 提供的证书,网站可以使用加密连接,保护用户的数据传输。 Certbot 是一个由电子…

BSD协议栈:UDP发送

BSD实现 在BSD中UDP头部数据结构如下: /** Udp protocol header.* Per RFC 768, September, 1981.*/ struct udphdr {u_short uh_sport; /* source port */u_short uh_dport; /* destination port */short uh_ulen; /* udp length */u_short uh_sum; /* udp …

QT (四)模型/视图 QFileSystemModel,QStringListModel,QStandardItemModel

思考:QTableWidget 在某种程度上可以等价为QStandardItemModel,同理,其他的功能也有类似的等价,但是以当前的QTableWidget 和QStandardItemModel为例的话,两者都是用于实现建立表格的相关组件,只不过QStand…