昨天《要过年了,就别再背电脑回家》情怀了一把,没想到评论里的技术人们(特别是运维)竟如此感人。
上一篇介绍多维度立体化监控,提到系统需要监控的八个维度:
http接口监控
log关键字监控
操作系统,进程,端口
http状态码
服务存活性
接口处理时间
用户层面监控
RPC接口监控
一、为什么要进行用户视角的监控
什么是用户视角的监控?
把系统内部当作黑盒:
用户怎么访问系统,用户视角的监控就怎么访问系统
用户调用哪些接口,用户视角的监控就调用哪些接口
此类监控的粒度较粗,并不直接监控web-server,service,db,cache…
为什么要有用户视角的监控,非用户视角进行的监控有什么不足?
如上图所示,立体化监控的八大维度,除了用户视角的监控,另外七大维度,不管是机器监控,日志监控,接口监控,都是系统内部发起的,当系统外部与系统之间出现问题的时候,例如“某个省的光纤被挖断”或者“某条网络链路出现丢包”或者“某个地域供应商往页面里又插入小广告了”,是检测不出来的,只有站在用户视角的监控,才能检测出类似的问题。
凌晨三点,告警短信响了,到底要不要起床检查系统?
这个问题,是和技术人密切相关的问题。如何系统设计的合理,不管是任何一台nginx,tomcat,service,cache,db挂了,由于系统的高可用架构设计,理论上都不应该影响一线用户的访问。
于是乎,只要用户视角的监控不告警,是可以第二天再起床处理其他监控的告警的。
画外音:这帮不靠谱的架构师,每次都说能高可用,任何一个地方挂了,用户就受影响了。
如何进行用户视角的监控?
主要有三类方法:
用户所在的地方,租机房布点监控
端(APP/browser)上布点监控
使用第三方监控平台
二、租机房布点监控
如上图所示,在用户所在城市租赁机房(只需要一台服务器),部署监控小程序,对系统进行外网访问监控,就能够检测网络链路,路由延时。
缺点:额,各个城市租赁一台服务器,成本有点高(不止费用,管理成本也高)。
三、端上布点监控
如上图所示,假设用户使用的是APP产品,可以在APP上部署一个小的监控sdk,定期上报一些数据,根据地域IP访问的同比环比“趋势”判定某个地域用户的网络情况。
缺点:会损耗用户一些流量。另外,既然是“趋势判定”,没有在自己机房内布点那么精确。
四、第三方监控平台
既然是每个公司都有的痛点,实施起来又这么麻烦,自然有创业公司做这个事情。
可以购买第三方监控平台的服务,在配置后台配置
待监控的页面,或者http接口
频率,阈值
告警接收人
等信息,就能够快速实时全国各城市,甚至全世界各个国家的用户视角监控了,非常帅气。
第三方监控平台是怎么实现全国,全世界布点监控的?
额,他们租了机房。
缺点:有点贵,是按照调用次数来收费的。
五、总结
用户视角监控,把系统当作黑盒的一种粗粒度监控。
用户视角监控,能检测出局部地域的用户访问异常。
用户视角监控,有自主租赁机房布点,端上布点趋势检测,使用第三方服务三种方式。
调研:
某个省的网络断了,你们能监控到么?
你遇到过,网络供应商往你们站点插小广告么?
领取专属 10元无门槛券
私享最新 技术干货