热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

阈值报警功能

所谓web,即使你我素未谋面,便知志趣相投;足不出户,亦知世界之大。​01–什么是阈值报警功能在我们前端监控系统中,虽然我们收集了用户实时访问应用数据信息,并提供可视化界面方便用户

所谓web,即使你我素未谋面,便知志趣相投;足不出户,亦知世界之大。


01 – 什么是阈值报警功能

在我们前端监控系统中,虽然我们收集了用户实时访问应用数据信息,并提供可视化界面方便用户查询,但是作为一款监控系统,却少了灵魂的东西,那就是自动报警功能,因为我们并不喜欢,也没人愿意时时刻刻查看监控系统。因此,我们需要自动报警。
那自动报警怎么做呢?自动报警意味着我们事先定义好一系列规则,当达到设定条件,系统将触发我们定义的行为。

那需要些什么呢?那我们就一步一步来搭建这个监控报警功能。

主要阶段:定义触发规则、任务调度框架、邮件通知服务。

定义触发规则:我们的前端监控,会主要追踪三种报警情况(js错误率达到设定阈值报警、api错误率达到阈值报警、访问速度慢报警)。

《阈值报警功能》

任务调度框架:任务框架有很多,并且都是开源的。由于我们的后台使用nodeJs,并且数据存储是mongo。所以选了agenda。下图是各种框架对比。

《阈值报警功能》

邮件通知服务:目前邮件通知服务也有很多,我们选的是阿里云的邮件推送。使用起来简单,每天有200的免费额度可以使用。

02 — 实现过程

界面上的事我就不多说了,大家可以上监控平台看一下。我们来看一下如何定义任务调度-邮件推送。

配置Agenda任务调度,创建agenda实例:
const mOngoConnectionString= ‘mongodb://127.0.0.1:27017/agendatask’;
const agenda = new Agenda({ db: { address: mongoConnectionString } });
agenda.processEvery(’30 seconds’);

配置阿里云邮件推送,这里使用STMP方式去发送邮件。
const transporter = nodemailer.createTransport({

"host": "smtpdm.aliyun.com",
"port": 25,
"secureConnection": true, // use SSL, the port is 465
"auth": {
"user": '*********',
"pass": '*********'
}

});
var mailOptiOns= {

from: '前端监控平台管理员', // sender address mailfrom must be same with the user
to: options.email, // list of receivers
subject: subject, // Subject line
replyTo: '****',//custom reply address
html: body, // html body

};
transporter.sendMail(mailOptions, function (error, info) {

if (error) {
console.log('Message sent: ' + error);
}
console.log('Message sent: ' + info.response);

});

在用户点击开启/关闭监控警报的时候,我们为用户在后台创建或取消相应的任务。

//创建/取消发送邮件任务
/*
options.email 邮件
options.alarmType 邮件类型(jsError,apiError,perfSpeed)
options.times 间隔时间(s)
options.state 任务状态(true/false)
options.limitValue
options.appKey
*/
function createTask(options) {

//取消任务
agenda.cancel({ name: `send alarm email`, "data.appKey": options.appKey, "data.alarmType": options.alarmType });
if (!options.state) {
return;
}
(async function () {
await agenda.start();
let job = agenda.create(`send alarm email`, options);
job.repeatEvery(`${options.times} minutes`, {
skipImmediate: true
});
await job.save();
})();

};
定义调度任务实现:

《阈值报警功能》

别忘了,在应用起来后我们会开启agenda任务调度,不然不会触发任务调度。
exports.startTask = function () {

//定义任务
agenda.define(`send alarm email`, (job, done) => {
sendEmail(job.attrs.data);
done();
});
//开启任务
(async function () {
await agenda.start();
})();

};

创建完任务后,agenda会在数据库中生成相应的任务,之后agenda回去调用相应的服务:

《阈值报警功能》

邮件接收详情:

《阈值报警功能》

好了,源码已经上传到github,也可以去监控平台使用了,此功能目前只对注册用户开放哦。

喜欢请点个赞呗

或者去https://github.com/kisslove/w… Star一下

或者打赏一下

再或者……

哈哈,想法有点多了。


推荐阅读
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • linux网络子系统分析(二)—— 协议栈分层框架的建立
    目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 在OpenShift上部署基于MongoDB和Node.js的多层应用程序
    本文档详细介绍了如何在OpenShift 4.x环境中部署一个包含MongoDB数据库和Node.js后端及前端的多层应用程序。通过逐步指导,读者可以轻松完成整个部署过程。 ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • Irish budget airline Ryanair announced plans to significantly increase its route network from Frankfurt Airport, marking a direct challenge to Lufthansa, Germany's leading carrier. ... [详细]
  • 本打算教一步步实现koa-router,因为要解释的太多了,所以先简化成mini版本,从实现部分功能到阅读源码,希望能让你好理解一些。希望你之前有读过koa源码,没有的话,给你链接 ... [详细]
  • 在Eclipse中提升开发效率,推荐使用Google V8插件以增强Node.js的调试体验。安装方法有两种:一是通过Eclipse Marketplace搜索并安装;二是通过“Help”菜单中的“Install New Software”,在名称栏输入“googleV8”。此插件能够显著改善调试过程中的性能和响应速度,提高开发者的生产力。 ... [详细]
author-avatar
vm经典全屏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有