要介绍统一监控平台,得先从告警策略聊起,后续再聊不同维度监控的架构与实现细节。
一、啥是告警?
监控平台发现系统异常,向系统负责人发出文字(例如,邮件/短信),色彩(有些公司,编译不过,CI平台会亮红灯),声音(有些公司,有蜂鸣器嗡嗡响,研发压力大呀)等警示,就是告警。
绝大部分公司,主要是通过文字发出系统异常告警信息。
文字告警有哪些常见的方法?
以58到家为例,目前提供了四种文字告警的方式,其成本,到达率,实时性都不一样:
画外音:当然,得现有短信、邮件、钉钉、微信等消息网关的基础服务。
二、啥是告警策略?
绝大部分公司,可能都没有考虑系统监控告警策略,一旦发生异常,就发邮件/短信通知系统负责人,这样可能导致这样一些问题:
画外音:你猜,BAT一年的短信告警费用是多少?
为了解决上述问题,针对不同的服务,在不同的时间段,不同的员工层级,应该设定不同的告警策略,有哪些常见的告警策略呢?
画外音:额,这么人性化,是“别人家”的公司么?
三、监控平台,告警策略依赖的基础模块
要实现统一监控平台,要实现告警策略化,需要依赖两个非常重要的基础模块:
什么是集群信息管理?
额,这个架构设计中最容易忽略的部分,《监控平台基础服务,集群信息统一管理》一文已经有过描述,文本不再展开。
以下是通过全局配置文件,实现集群信息集中管理,一个global.config举例:
[user.service]
ip.list : ip1, ip2, ip3
port : 8080
bin.path : /user.service/bin/
log.path : /user.service/log/
conf.path : /user.service/conf/
ftp.path:ftp://192.168.0.1/USER_2_0_1_3/user.exe
owner.list : shenjian, zhangsan, lisi
从这里,监控中心能够知道被监控的是 [user.service] 集群,有三个实例部署在 ip1/ip2/ip3 上,如果发生异常,要将告警发送给 shenjian, zhangsan, lisi 三个模块直接负责人。
什么是员工信息?
额,顾名思义,是员工基础信息的管理(额,这算什么解释)。和集群信息管理一样,员工信息的管理一定要集中化,不能分散在各处(分散的坏处是耦合,在《监控平台基础服务,集群信息统一管理》一文里谈得很多了)。
员工信息管理的实现方式主要有两种:
如何通过员工信息管理服务集中管理员工信息?
如上图,建立员工信息管理服务,绝大部分公司应该都是这么统一管理员工信息的,这个服务和HR系统结合应该是非常紧密的,即使是外采的HR系统,肯定有相关的模块管理员工信息,相关的数据库存储员工信息。
如何通过全局配置文件集中管理员工信息?
如果不考虑和HR系统的打通,而只考虑监控系统,分级告警的需求,完全可以通过配置文件来管理系统负责人信息,例如global.owner.config:
[shenjian]
department : tech
leader : sandy
email : XX@OO.com
phone :15912345678
dingding : 15912345678@dingding.com
wechat : XXOO
…
四、总结
要开发统一监控平台,至少有两个基础模块:
统一监控平台,不能一异常就告警,太不人性化,要实现统一的分级告警策略:
员工信息管理,需要注意:
五、调研
调研一、对于监控平台,你的感受是:
调研二、对于人性化告警,你的感受是:
嗯,有道理,得转发一下。
下期预告:统一http接口监控平台
本期推荐:《集群信息管理,架构设计中最容易遗漏的一环》