正文
由于原始的监控不满足快速增长的业务,我们部署了开源监控系统 Zabbix,虽然运维同事能够很好的使用Zabbix,但其他部门同事总觉得易用性不高、而且很多定制化监控实现起来很麻烦。
然后,我们开始折腾监控系统——“一棒子监控”,为什么这么说呢,因为要把监控细化,不是一两天的事情。而B站的几乎所有请求都要经过CDN,入口在手上,出问题想知道还难吗?于是,我们在入口处做了监控,所有 5xx 的错误都打到ELK,那么无论是什么业务出问题了都会及时告警,让相关人员来处理,后续再细化。
另外,要把精力投入到最重要的事情上。我们可以花很长的时间去搞好Zabbix、Open-Falcon,但结果可能是 从80分 到 90分这种并不显著的效果,而很多监控并不是 Zabbix、Open-Falcon擅长的,不如打个差异战。
上图中有个 StatsD推荐给大家,StatsD可以非常灵活的嵌入到代码里进行监控(Shell都可以),因为使用UDP协议,所以服务端性能和故障不会影响到调用的程序,可以实现业务级的 QPS、响应时间等统计类监控。
其中一个报警最终的效果如下:
B站是自建CDN的,在国内有覆盖全国的好几百个CDN节点,CDN的监控一直是个难点,当某1个链路出现问题,用传统的Zabbix、Open-Falcon监控很难发现问题。虽然我们自研了Http-monitor监控,可用于网站的可用性监控告警,但考虑到独立资源和数据可靠性,还有用户端网络质量的检测,还是同时使用了第三方监控宝的服务。监控宝使用简单,功能实用,监控点多,分布式监控可以及时发现网络上出现的问题,提供的快照功能可以快速定位问题和查看详细信息。而且监控宝属于第三方独立的,还能出具网站的SLA证书,作为B站内部工作考核的依据。