网络通信 频道

老司机剖析业务架构 教你玩转线上业务

  以下整理总结来自美图运维经理台祥广于6月4日下午在创客168沙龙的分享:如何掌控线上业务——剖析业务架构,希望能对大家了解业务架构有所帮助。

  在运维工作中我们要如何梳理业务架构,排查业务单点及隐患呢?如何才能完善监控覆盖,实现多维度监控体系的架设呢?如何利用工具进行数据统计,全面掌控用户分布和访问量变化趋势呢?今天,来自美图的“运维老司机” 台祥广将带领你走进运维的世界,从梳理业务架构、多维度监控覆盖、数据显示这三个方面谈谈他眼中的业务架构,教你轻松掌控线上业务。

  老司机介绍

老司机剖析业务架构 教你玩转线上业务

  台祥广,美图运维经理,负责美拍、美图商城等业务运维工作,专注于推进业务规范化及运维平台建设。曾就职于网易和美丽说,在网易任职期间,主要负责门户网站、新闻客户端等业务运维和高并发业务性能调优工作;在美丽说任职期间,主要负责用户产品及商业产品的运维工作,负责了2015年618大促相关保障、调优工作。

  梳理业务架构

  一名运维人员通常管理着上百台甚至上千台机器,但业务架构不是把管理的几千台机器集成起来、把线连起来、把各种服务部署好整个系统就可以了,还需知道用户是如何访问服务的,服务在后端是如何运作的。那么我们又该如何对业务架构进行梳理呢?

老司机剖析业务架构 教你玩转线上业务

  梳理业务架构,以用户的角度来看,各种服务就像云一样,他们不清楚也不关心背后的架构是什么,只要速度够快、服务够好就可以,但是作为运维人员要知晓其中的奥秘,了解背后的架构。

  首先要了解用户是如何访问业务的。当用户在浏览器或者手机APP上通过域名访问业务时,运维人员可以利用Firebug chrome httpwatch、charles等工具找到服务的入口,看浏览器调用了哪些接口、加载了哪些元素、每个域名对应的IP、页面加载过程各个元素的耗时、发出的请求及响应的内容等信息。然后根据页面布局,选出重要的接口,并进行性能优化,排查问题。利用nslookup、dig、ping等命令可以获取服务端IP,如果用户访问出现问题的话,我们第一时间检查的就是域名的IP地址是否是正确的、是否被劫持或者能否ping通等。

  当用户请求通过网络到达服务集群时,在服务端,入口设备一般采用高可用及负载均衡的架构设计,有多个节点,高可用架构一般采用F5设备、LVS软件。利用LVS软件和命令,可以知道用户的信息并获取到对应的realserver。

  接下来要了解服务在后端是如何运作的。运维人员可以通过nginx、haproxy等命令获取后端服务器设备监听了哪些端口、本地起了哪些服务、查看进程在占用哪些文件等信息,也可以直接在/proc/pid/路径下获取进程信息。然后通过strace 命令,查看命令的执行过程,找到配置文件位置。在nginx配置中,可以获得每个vhost对应的upstream server列表,并进一步查看后端服务部署情况。

老司机剖析业务架构 教你玩转线上业务

  根据业务不同,后端的服务器群在部署时会使用不同的软件,像Tomcat、PHP等。各个服务集群或者资源之间并非相互孤立,它们通过在网络中建立TCP或UDP连接相互通信,查看机器上监听的端口和机器上对外提供的服务;还可以通过Ss命令查看机器上的连接,获取服务和其他服务节点的依赖关系。通过服务节点对资源的依赖,可以查询到集群内部的主从关系和数据库的主从关系等。至此,服务之间的调用过程已经梳理完毕,整体的业务架构也已经清晰明朗,如果某台设备出现故障也能快速定位、解决问题。  

老司机剖析业务架构 教你玩转线上业务

  多维度监控覆盖

  多维度监控依赖于对业务的理解,如果不了解业务的逻辑、不清楚业务的模块,就没有办法做到多维度监控。以下两种方法可帮助理解业务架构:一种方法是选择用Visio类的工具,边梳理边绘图,缺点是依赖人工去维护,维护成本略高;另一种方法是选择dot画图类绘图语言,可结合脚本或者模板自动更新绘图。通过架构图可以快速看出数据走向、业务依赖关系和单点;结合配置中心,可以实现架构图实时更新,并及时掌握线上资源情况。若没有架构梳理,监控覆盖容易出现疏漏且不能马上定位问题原因。有了架构图,在检查监控覆盖时,可以按图索骥,找到每个服务器、每个服务节点。

老司机剖析业务架构 教你玩转线上业务

  要做到监控比较精确、完善,还需要从不同维度进行覆盖。监控包括基础监控、日志监控和语义监控。基础监控在网络、操作系统层,常用的监控工具是Zabbix、falcon等,也可以根据业务选择合适的工具。日志监控是对错误日志输出过滤,可以利用elk日志解决方案对日志实时收集,进行报表统计。日志监控是一种被动的方式,而语义监控是对服务进行主动访问。curl 主动访问url 接口,可以用shell脚本,也可以python php等整合。

  数据展示

  我们知道,在监控过程中会产生很多数据,这时就需要做数据展示。监控系统收集的数据包括各节点负载(cpu 内存 IO等)、各业务接口响应时间、访问量、nginx产生的日志以及后端服务记录的日志等。把同一个业务产生的数据都集中到一个页面后,就可以看到整套服务的情况,并根据业务数据流向,定制dashboard。除了监控数据外,还有日志信息等很多其他的信息。通过分析这些数据,可以比较完善的了解到用户数据的变化情况,也可以显示区域分布情况,定位各地、各运营商服务的情况。

老司机剖析业务架构 教你玩转线上业务

  小结:

  作为一名业务运维,接受一个新业务后第一件事就是了解它,在了解业务的基础上做多维度监控覆盖,进行信息筛选后展示数据。如果清楚了一个业务的情况,就可以更好的保证线上的服务,按照业务走向,一步一步的去匹配,达到事半功倍的效果。

0
相关文章