网站经常崩溃,企业应该如何做好监控?

早早发表于:2019年03月04日 18:00:36

近些年,我们的生活因互联网发生了翻天覆地的改变。从搜索引擎到即时通讯,从电子购物再到文化娱乐,从吃饭住宿到旅游出行,互联网已经渗透到我们生活的方方面面。但网站、应用崩溃的事情似乎每天都在发生,而且节假日发生系统崩溃的几率更高。



1



国庆后第一天上班,深圳市政府的网站全部沦陷。特别是近些年网站崩溃的问题,似乎时刻都在发生,而且很多都是直接影响民生的重要机构,比如今年6月25日,黑龙江高考查分通道网站崩溃;4月15日,河南沁阳市政府官网访问激增后台崩溃;2014年11月27日,12306网站崩溃3小时;2014年2月26日,北京小客车摇号指标系统网站崩溃......

究其原因,很大层面是因为我们当下的互联网环境已经变得异常复杂,网络、服务器、操作系统,还有应用及组件都可能导致网站崩溃问题。即使我们投入大量的人力物力,做了很多细致的保障工作,也难免7×24小时100%地保证网站的正常运转。那么,如何高效地利用互联网资源来实时完成线上的监控工作,已经成为企业运维人员最为关注的话题。

内部服务端监控和外部业务可用性监控

一般而言,企业监控的维度主要分两个方面:内部服务端监控和外部业务可用性监控。针对内部服务端监控,很多公司采用Zebbix、Nagios、Prometheus、Smokping、Grafana、Cacti、PageDuty等工具进行综合性的数据采集。而分析内容主要包括网络、操作系统、中间件、应用、数据库等等。从一定意义上讲,内部的监控体系建立的越完善,出现服务问题的概率就越低。

但是,内部监控体系只是解决了内部网络及服务端的问题,当外部访问监控缺失时,偶发性的故障就会出现,稍有疏忽就会出现类似假日期间网站不能访问的问题。如何有效地杜绝真实用户外网访问的异常问题,及时发现系统故障呢?我们首先从以下几个问题分析故障产生的一些常见原因,同时也会给出一些建议:

网络拥塞丢包率高

造成网络拥塞造丢包率高、网络包重传频繁的原因,一般来说主要是路由器入口带宽被大量占用网络资源不足造成的。并发用户容量评估不充分应用系统访问量过高时,导致网络接入带宽超载,每逢节假日很多票务网站流量激增,都会出现类似问题,像汽车摇号网站就会出现周期性高峰值阻塞的现象。

建议:网站接入带宽做好充分预估,建议外网接入入口根据历史同比数据,提前做好资源扩充准备。如果带宽扩充较困难,建议网络层入口做好限流准备,保证已连接用户的业务稳定性。

服务端内存泄漏

服务端有较严重Bug,当系统长时间使用时会出现细碎的内存泄漏。一般来说,出现此类问题的主要原因是应用长时间稳定性测试,没有进行验证或验证的不充分。所以当系统长时间使用过程中,内存资源就会耗尽,最终导致应用崩溃。

建议:在系统投产前,我们建议在外部网络进行超过72小时的稳定性测试,保证写入数据和生产一个月左右的数据量相同。主要观察应用系统是否可以正常释放资源,持续稳定的提供服务,如有问题尽早发现尽早解决。

外网DNS劫持

DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,把真实IP地址映射为虚假IP地址,从而达到让访问用户分流到虚假的网站。最终目的是分流用户后从事一系列的非法行为,如盗取用户账号,获取用户的隐私信息等。DNS劫持已经超出了内部监测的范畴,应用服务提供商一般无法阻止或控制影响范围。

建议:采用多域名接入方式,接入域名的解析服务依托两家以上的服务提供商;采用分布式DNS监测服务,定期监测服务器DNS解析的效率建立完善的DNS白名单,出现异常访问时,及时进行告警。

业务系统故障

导致业务系统故障原因很多,如系统做大范围更新时,参数配置错误导致用户地址跳转到非指定地址,虽然HTTP返回码正确,但业务却无法访问;业务系统的部分模块异常,导致局部业务无法正常访问。如某个证券公司把生产地址配置成了测试库地址,导致用户数据全部被污染,交易正常但是业务数据全部错误。一般来说,这样的问题如果没有外部访问监测系统很难被发现,监控过程中需要实时分析服务端返回数据,进而判断业务是否正常。

其实,在系统投入生产前,我们建议从以下几个维度提前考虑应用系统的稳定性及性能问题:

  • 网络入口带宽是否充足?

  • 外网应用系统是否使用CDN加速将静态资源与业务应用分离?

  • 网络负载均衡是否配置合理,是否能够完成动态的容量扩充?

  • 操作系统及应用参数是否做了针对应用系统的局部或全局优化?

  • 数据库是否使用读写分离,提高了用户访问时的并发性能?

  • 数据库SQL语句是否做过深度调优?

  • 应用系统是否可以经受3-5倍以上的并发用户压力?

  • 应用系统是否支持动态扩容,扩容效率在5分钟以内完成?

如果在系统上线的测试阶段已经做到了以上内容的检查和优化,那么系统已经进入了一个比较良性的健康工作状态。接下来的工作就可以进入到线上运维的监控期,而针对线上运维监控,建议监控如下的内容:

  • 基础网络监控:延时、抖动、丢包、平均响应时间、上传速率、下载速率;

  • DNS监控:解析时间、解析正确、匹配正确、可用性、错误率;

  • CDN监控:总响应时间、重定向时间、DNS时间、建立连接时间、SSL时间、后端响应时间、内容下载时间、可用率、错误率、下载速度、下载文件大小;

  • API监控:可用性、平均可用率、加载时间、不可用错误率、运营商指标、错误分类(连接超时、响应超时、连接失败、连接被断开)、监控阈值设定;

  • 事务监控:可用性、可用性区域、加载时间、不可用错误率、运营商指标、请求详细信息分析、监控阈值设定;

  • 业务可用性监控:业务响应时间、业务发送速率、业务接收速率、业务成功率、业务失败率、不同区域的业务运行状态、业务数据错误详细分析等。

综上所述,监控系统的核心要求就是能够及时对异常数据进行报警,以及对大量数据的秒级收集、分类、分析和展示。因此多维的通知体系和智能的告警通知是保证业务正常持续运行的重要环节。

作为国内领先的 IT 运维管理软件厂商。睿象科技始终秉承「让运维更加智能」的企业使命,致力于为中国的企业级用户提供一体化的智能运维解决方案。而业务可用性监测平台就能够很好的帮助企业实现7*24小时监控网站,真正为企业提供高效、稳定的智能运维管理服务。 


业务质量监测平台核心功能介绍


Ping监控:能够记录全国各个监控点访问服务的网络平均响应时间、可用性以及丢包率。

DNS监控:能够实时记录全国的监测点访问DNS服务器性能状态信息,包括平均响应时间、解析错误、DNS劫持状态等等,可以从运营商、地域信息不同维度进行数据分析。

CDN监控:主要指标包括平均响应时间、可用率、内容加载时间,错误监控信息主要包括HTTP错误、网络故障、访问超时等错误,业务质量监测平台能够智能分析CDN节点信息运行状态,自动白名单过滤功能可最大限度避免CDN被劫持修改,保证了外部用户访问系统的安全性。

API监控:监控全国区域调用API接口的平均响应时间、可用率、网络连接时间、错误率等信息。如果在 API 监控的结果里设置了匹配响应码,就会进行响应码内容比对操作,当响应码不匹配时就会在应答监控中提示错误,有效的监控了接口的实时可用性。


1事务监控:使用XUL和XPCOM技术及对应组件进行开发,业务质量监测平台通过模拟浏览器,记录用户访问过程中的操作行为,最终将采集数据整合,保存为运行脚本。脚本记录用户在浏览器中操作的一系列流程,事务监测过程中可调用不同区域的全国节点模拟用户的真实访问,记录每个步骤的成功失败状态和响应时间。


1业务可用性监控:可通过录制或手工编写业务脚本的方式,生成真实用户端的全流程业务监测脚本,通过线上多监测点测试生产系统的可用性,监测内容包含业务响应时间、业务吞吐量、业务成功率、业务失败率、错误详情等信息,详情分析页通过服务端的返回报文监测匹配功能可一键定位系统错误的真实原因。


1报警设置:所有业务类型均可设置报警阈值,阈值内容包括平均响应时间、可用性、错误类型等信息,当监测数据符合告警阈值时,告警数据可通过邮件、短信、微信、语音等多种通知方式实时通知运维人员,有效降低处理问题时间窗口,最大限度的降低企业损失。

1



总结

总的来说,业务可用性监测平台能够实现链路级、业务级的主动探测功能,同时能够按时、按需、按地域的定制化监控内容。此外,丰富的阈值设置也便于企业实现灵活、动态、全天候的监控管理,真正做到快速定位问题,精准分析故障,同步推送告警的一体化模式。