摘要:定義觸發規則我們的前端監控,會主要追蹤三種報警情況錯誤率達到設定閾值報警錯誤率達到閾值報警訪問速度慢報警。郵件通知服務目前郵件通知服務也有很多,我們選的是阿里云的郵件推送。配置任務調度,創建實例配置阿里云郵件推送,這里使用方式去發送郵件。
所謂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一下
或者打賞一下
再或者……
哈哈,想法有點多了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106901.html
摘要:為了讓大交通下的各業務線都能夠通過報警盡早發現問題解決問題,進而提升業務系統的服務質量,我們決定構建統一的監控報警系統。本文主要介紹馬蜂窩大交通業務監控報警系統的定位整體架構設計,以及我們在落地實踐過程中的一些踩坑經驗。 部門的業務線越來越多,任何一個線上運行的應用,都可能因為各種各樣的原因出現問題:比如業務層面,訂單量比上周減少了,流量突然下降了;技術層面的問題,系統出現 ERROR...
摘要:京東云監控響應實踐京東云運維平臺為數萬臺機器提供監控,部署,機器管理,權限管理,安全管理,審計和運營分析等功能,為京東云所有的業務在各類異構網絡環境下提供標準和統一的運維支撐能力。 showImg(https://segmentfault.com/img/bVbsKlQ); 微服務本身并沒有一個嚴格的定義,不過從很多人的反饋來看,大家都達成了這樣一個共識:微服務是一種簡單的應用,大概有...
摘要:一項目地址為二項目功能概述該項目實現的是一個基于智能睡眠監測器的睡眠監測系統。我們可以在個人中心的設置中心進行報警閾值的設定。睡眠自測試頁面如下圖所示用戶可以在該頁面進行睡眠自測試,點擊提交按鈕后,便可以在彈出框當中查看自己的睡眠質量等級。 一、項目地址為: https://github.com/linqian123... 二、項目功能概述: 該項目實現的是一個基于RestOn智能睡眠...
摘要:一項目地址為二項目功能概述該項目實現的是一個基于智能睡眠監測器的睡眠監測系統。我們可以在個人中心的設置中心進行報警閾值的設定。睡眠自測試頁面如下圖所示用戶可以在該頁面進行睡眠自測試,點擊提交按鈕后,便可以在彈出框當中查看自己的睡眠質量等級。 一、項目地址為: https://github.com/linqian123... 二、項目功能概述: 該項目實現的是一個基于RestOn智能睡眠...
摘要:一項目地址為二項目功能概述該項目實現的是一個基于智能睡眠監測器的睡眠監測系統。我們可以在個人中心的設置中心進行報警閾值的設定。睡眠自測試頁面如下圖所示用戶可以在該頁面進行睡眠自測試,點擊提交按鈕后,便可以在彈出框當中查看自己的睡眠質量等級。 一、項目地址為: https://github.com/linqian123... 二、項目功能概述: 該項目實現的是一個基于RestOn智能睡眠...
閱讀 2858·2021-07-30 15:30
閱讀 553·2019-08-30 15:55
閱讀 1621·2019-08-26 17:04
閱讀 632·2019-08-26 11:36
閱讀 2064·2019-08-26 10:58
閱讀 3548·2019-08-23 14:34
閱讀 1557·2019-08-22 18:48
閱讀 2522·2019-08-21 17:51