-
Notifications
You must be signed in to change notification settings - Fork 48
Home
Zhou Qi edited this page Apr 11, 2017
·
4 revisions
Scout 是一款基于 Node.js 和 MongoDB 的 URL 监控系统。根据管理员添加的监控条目,定时轮询 URL,自定义告警规则。
本系统不包含告警部分,告警消息通过 HTTP 发送出去,需要自定义告警接口。但是本系统会记录每次告警的状态(告警接口的返回主体等等),防止告警接口故障而无人发现。
告警接口应当接收一个 json,拼装成你想要的格式,再通过短信平台、邮件服务、HTTP 等方式推送到接收人。
POST <你的接口>
Content-Type: application/json
{ // 异常时
"recipients": [], // 字符串数组,表示接受人
"name": "查询当前时间", // 以下为监控条目信息,以及异常情况,字段名一目了然
"URL": "https://your.server/your/api",
"status": "Error",
"statusCode": 200,
"responseTime": 53,
"now": 1484292986935,
"errName": "AssertionError",
"errMessage": "慢了123秒",
"body": "{now:1484292863588}",
"readType": "json",
"testCase": "const d = Date.now() - body.now\nassert(d < 60000, `慢了${d/1000|0}秒`)"
}
若是从异常状态中恢复时,status
值为 "OK"
,并且无 errName
和 errMessage
字段。
- 名称:名称。
- 标签:(暂时仅)用于批量选择,请赋予有意义的词语。作用类似 HTML 的
class
。 - URL: URL。
- 方法:HTTP 请求方法。
- 请求主体:HTTP 请求主体。
- 告警接收人:可以是任意字符串组成的列表,当然你的告警接口要有对应的处理方式。
- 检测时间间隔:以分钟位单位,表示系统每隔多久检测一次。
- 异常容忍次数:连续异常次数超过这个值,才发送告警。
- Apdex 目标响应时间:Apdex target time
- 请求头:HTTP 请求头。
- 活跃时间段:以一周为周期,在此之外的时间不检测。
一段 JS 代码。提供的全局变量有:
-
body
:该次检测的返回主体。若期待类型设为text
,则为字符串类型;若设为json
,则为经过反序列化的值(通常是一个对象)。 -
statusCode
:该次检测的 HTTP 状态码。 -
responseTime
:该次检测的响应时间。
提供的全局方法:
-
assert
:Assert -
console.log
或log
:定制的方法,用了你就知道效果了。
在后端,系统用 vm 模块创建一个沙盒,运行这段代码,若其中抛出错误,则判定为异常情况。建议使用 assert 函数。