由于现在的服务一般都是按照集群进行部署,单个节点出现问题,Nginx会做重试,少量节点出现问题外部用户不会感知到异常。为了及时发现该类问题,我们根据用户配置的参数,按照服务器的维度进行探测,该种监控方式能够及时发现服务器级别的异常,从而进行故障的预警。
为了确保发现各维度的异常,我们使用了多维度的监控方法,包括如下层级:
基础监控:服务器宕机、资源使用率、网络质量;
服务监控:端口状态,进程状态;
自定义监控:多种多样个性化监控指标;
功能监控:页面监控、接口监控;
可用性监控:集群维度、域名维度的可用性、响应时间等;
业务指标智能监控:对反映业务运行情况的宏观数据做智能预测、异常检测。
下面分别介绍一下实现原理:
1、基础监控、服务监控、自定义监控
上述三种类型的监控数据都由部署在服务器上的监控agent进行采集,数据采集后做数据的存储和异常判断,进而做视图展示和异常告警。
2、业务指标智能监控
一些宏观的业务指标往往能够更准确、有效的反映业务的运行状况。我们对这些关键的业务指标使用了机器学习相关的技术,对数据做了预测和异常检测。
3、页面、接口监控
网站的首页,或者重要的列表页、详情页是对用户体验影响较大的页面;APP端为了展现数据需要调用接口获取数据,接口的可用性也是非常影响用户体验的。为了及时、准确的发现关键的页面、接口的功能是否正常,我们开发了该项功能。
为了及时发现网站用户能够感知到的异常,我们通过域名解析出来的VIP,从外网访问指定的页面或接口,并验证域名解析、建立连接、HTTP状态码、响应时间等指标。并对页面监控验证数据长度、是否包含指定关键词等指标;对接口监控验证业务状态返回码、接口中特定字段的数据长度等指标。
由于现在的服务一般都是按照集群进行部署,单个节点出现问题,Nginx会做重试,少量节点出现问题外部用户不会感知到异常。为了及时发现该类问题,我们根据用户配置的参数,按照服务器的维度进行探测,该种监控方式能够及时发现服务器级别的异常,从而进行故障的预警。
4、集群、域名可用性监控
网站的所有流量经过四层负载均衡设备、Nginx集群转发到后端业务集群。在Nginx集群上可以看到后端业务集群的运行状况,我们通过实时收集和传输Nginx日志,使用Storm集群实时计算集群维度和域名维度的各种状态码数量和比例、响应时间等指标,进而做数据展示和异常告警。并在集群维度也按照服务器统计了上述指标,可以发现个别服务器的异常,做到对集群故障的预警。