迅游科技:游戏监控实践分享

赵亚南,7年运维实践经验,早期主要负责过淘宝网淘江湖、浙江日报、银率网(北京)、广州宝洁、机电之家等网站的维护,2012年后加入重庆迅游,负责开服网、开区网及多个游戏项目的运维,务真求实,追求以公司项目实际状况出发,权衡成本、效率、安全和稳定,推进团队向最合理的方向发展。php

游戏玩家对游戏体验的要求是最苛刻的,任何因为服务器、数据库性能瓶颈、网络CDN形成的卡顿、崩溃都会影响游戏体验,并有可能形成玩家的流失和支付的减小,所以如何确保各地玩家在游戏过程当中得到最佳用户体验,第一时间发现系统、应用、网络故障并予以解决,是游戏公司对运维部门的基本要求。前端

重庆迅游科技成立于2009年,目前团队规模不到200人。自主运营开服网等资讯网站,自主研发端游《传奇正传》、页游《开天战神》、手游《满贯游戏》等产品,有专业的研发技术团队,是一家技术导向的公司,和兄弟公司小闲在线强强联手,在重庆游戏产业内颇具影响力!下面是迅游运维部门负责人赵亚南在云智慧[监控与性能优化]微信群分享的游戏监控经验。python

你们好,我是赵亚南,来自重庆迅游科技,今天分享一些游戏监控的实践经验,谢谢你们棒场。我我的在运维岗工做了7年,主要历程在前面都有介绍,2012年后加入重庆迅游,经验也从这里开始分享吧。mysql

重庆迅游的监控选择
监控的工具和方式太多,相信你们都能列举出不少,但永远是适合自已的才是最好的。由于游戏行业的业务需求,运维工做须要在监控上作到最好,不然就会直接影响公司收入。
常常会有人讲: “运维就是主动发现问题,变被动为主动”,说得在理,但其实是作不到100%主动的,这时候完善的监控体系就能帮助咱们更好地发现问题,定位问题。监控作得好很差,就很重要了。nginx

要用好的监控工具,并且不光要会用,还要去深刻研究、测试、验证,规划好,作好自动化设置,监控配置合理,报警效率高,发送给该发送的人,不紧要的就发邮件,紧要的那就发邮件和短信,甚至电话同时报警,不应报的不要报,不应发送的人不要发送。redis

很啰嗦吧。是啊,要作到这些,是要花不少时间和精力的,尤为是业务变更频繁,变更量大时,不但要承担业务的设备、服务等资源的调整,监控项、阈值也要按需调整,你敢保证此次调整的就必定合理吗?那过两天极可能须要再调整。sql

废话真多,直接说下咱们是怎么作的吧。(咱们就作得完美吗?也难讲)
最初迅游采用的是云智慧监控宝,用了不少年。后来监控需求愈来愈多,就写脚本监控,不过比较分散,管理不方便,因而把Zabbix也加进来。Zabbix优势包括灵活、稳定、有效、性能好、功能强大,最大的问题是帮助文件全英文,并且功能复杂,就是全翻译成中文看着也头大,因业务变更频繁,变更量大,只好一边用一边摸索,有特别需求时,去找官方文档相关的部分,或百度搜一下,下面说说整体思路。shell

Zabbix的实践经验粗谈
【模板】
首先,监控这么庞大的量,一个一个去添加?不可能!因此创建模版很重要,并且模版只有一套也不行,咱们的服务器类型、配置,所在运营商不少,项目也多,创建多套模版颇有必要,甚至有时须要子模板。不要小看这个思路,这和各种软件架构的构成也是一脉相承的,有共性的监控项,可以使用同一套模版,按需关联便可。
这样,批量调整成为可能。好比调某个阈值,至少不用一台一台去改了吧。个别主机有少许不一样的地方,好比它的磁盘就只有50GB,CPU核就1个,或者它的带宽高达500Mbps,模板不适用了,单独作模板不太好,就把由模板关联进来的相关触发器停用,克隆一个,重调阈值便可。
【主机】
接着说主机的添加,主机按项目或运营商,进行交叉分组,方便查找。主机的命名很是讲究,直接和“动做”(触发报警后发送给那些人)有关系,根据关键字关联,同一项目的主机(设备)使用同一关键字打头。
为何puppet里面建议的主机名那么长,由于那才能准确的描述一台主机,它的IP、机房、用途、服务、功能,都是可能随业务而变化,每一个公司有不一样的状况。
【触发器】
触发器的名称包含主机名称便可,在模版中统一配置,就不用单独去想它怎么命名了。
【动做】
即把哪些报警发送到哪儿,根据问题的严重性,匹配名称,发送给对应的项目组运维岗的邮箱或短信,或电话告警。
例如迅游网站项目的动做截图:
图片描述
另外,把{ITEM.VALUE}包含到警报信息中,在非工做时间收到报警,具体监控值也许对你有帮助。
【用户和用户组】
动做只把告警发给用户组,咱们用户组按项目创建,用户添加到组中,方便批量管理。
【示警媒介】
咱们有自编脚本,自建邮件系统,触发告警发邮件,为何自建邮件系统呢,由于第三方邮件系统大多有限制,还不便宜。固然你的量真的不多,就不要紧了。
重要告警,结合飞信、微信、139邮箱,189邮箱,联通的wo邮箱,发送告警信息。喜欢手机长期连网的同事,直接经过互联网接收公司邮箱的告警也行。这里说个细节,最好尊重每一个人的习惯、选择,人性化一点嘛。在非上班时间接收告警和要求应急响应的必须是比较严重的问题,毕竟是对人家私人时间的侵占。严重故障,能够经过监控宝等第三方告警平台触发电话告警,这种状况一般还会发给领导。
【自动发现(或着叫探索)】
某些监控能够作成自动发现,好比某些主机的进程,重要端口,其监控量和维护量十分庞大,咱们的估约有几千项的,因此按json格式自动生成,增减自动完成(shell或python实现)。Zabbix服务端作个模版,配置自动发现,有须要的主机关联下模版便可,监控内容也自动增删,触发阈值统一配置,全程高度自动化。
【重要的业务监控】
举例一:好比网站,从玩家发起请求到最终成功响应正确内容,期间要通过DNS、边缘节点、父层节点、前端nginx服务、php服务、haproxy、mysql,咱们就作一个链接数据库并查询必要字串的php程序,Zabbix原本就能够部署在异地的,这样由Zabbix开始,经过公网解析后,从边缘节点监控起,获取到查询的正确字符串,而且响应时间不长,完成这一连串监控,哪一层有问题,报警都不会恢复。
举例二:模拟网站登录过程,网站功能那么多,能监控到的老是有限。咱们就监控常常有问题的、重要的地方,网站登录过程常常出问题,好,咱们结合监控宝分布式监测网络控件,在异地自动模拟登录过程。
举例三:太多监控都是从运维角度去发起的,只关注基础设施的运行情况。你们是否是遇到过这样的场景,就是咱们全部监控都没有发现问题,但业务部门反馈在线用户量就是降低了。最后查出来还真是运维的问题,没有监控到业务层的运行情况。若是你能主动监控公司业务的情况,并在发现问题的第一时间向业务部门反馈,如今在线量降低了,注意一下,也许同时我们就发现问题了并解决了,或者即便没解决业务部分对运维的印象仍是好的。因此能监控到业务数据就最好,幸亏迅游的在线人数写在了数据库中,直接取出来,配置触发器,还作成图,有异常,很容易发现。好比某台DB的监控:
图片描述
【总览图】
想一眼就直观的看到想关注的监控项目吗?这是由Zabbix的筛选和总览来实现的,其中总览能够按主机来查看,固然也不用一个一个去添,在主机模版中配置好筛选便可。筛选就是比较灵活的了,和监控宝的视图相似,能够组织任意你想观察的图表在一个界面中来。
图片描述
【各种应用监控】
Zabbix监控很容易扩展,默认的若是没有能够去网上找模板,或者自主编写监控脚本,咱们找了些模板,也自主编写或完善了一些,如nginx,memcache,redis,mysql,varnish,想关注的可用性或性能趋势,都作了上去。但说实话,若是业务量不大的话这些真没多少用,可是业务量很大的时候,这些应用服务就有出现性能瓶颈的可能,或者出错率上升,运维必须进行关注,作到心中有数。数据库

领导都喜欢看图表,因此咱们使用了大屏展现Zabbix的数据,Grafana能够从Zabbix中取数据,定制灵活,图形展现很是好,可作大屏展现,一目了然,它的正则很好用,但有个缺点就是查询时间跨度太大,甚至超过半个月,就会形成Zabbix数据库极大的压力,因此开放给非运维岗的同事查询太不明智了,看看结果就好了。json

监控宝的实践经验粗谈
Zabbix主要用于基础设施和应用层的可用性监控,但Zabbix的分布式监控仍是比较弱的,而且即便好用,其成本投入也很大。因此网络层的监控就要靠监控宝了,监控宝的监控点在国内、国外处处都有,若是有部分服务器或用户在境外,那监控宝更是值得推荐的第三方监控服务了,因此接下来聊聊监控宝。

若是要关心特定地区的网络状况,监控宝是很容易作到的,这个功能很是好:
图片描述
若是有不少边缘节点,又不肯花钱买更多的监控宝“网站监控项”服务,那就针对分布式监测点设置为1~2个,几乎就能监控到各个边缘节点了。若是设置了好几个,并且都报警了,业务部门问起来,你就有分析参考的依据了,和同运营商的其它监控以及不一样运营商的监控一对比,就能明白发生什么事儿了,若是骨干网的事,也许能够提早松口气说:“还好不是个人事儿”。
固然这只是监控宝最具价值的功能之一,短信告警、电话语音告警、用户体验监控都是其核心功能,此外若是大量使用了API,那么监控宝API监控一样是不能错过的,这些也是其它监控服务商或自建监控平台难以替代的,这是老实话。

有的人还在提各类免费监控,确实免费监控很长一段时间好像还能够用,但从企业业务需求的角度出发,过去两年的经验告诉我们,免费的可靠性确实不高。对于不想在监控方面投入太多人力物力,或者技术能力达不到使用Zabbix的,或者监控量不大的,均可以考虑监控宝,省事还好用。

最后分享一个案例
我们举个在监控宝上使用的案例,咱们购买了2个监控宝帐号,按业务需求须要对重点区域和重要运营商的可用性、网络质量进行监控,因此我们建了多个监测点:
图片描述
每一个监测点均精心选择,两个帐号选的监测点互不相同,覆盖重点区域和重要运营商。监控服务目前主要以“网站监控”为主,每一个监测项均精巧配置,均有不一样意义,避免重复配置:
图片描述
全国CDN节点那么多,咱们是这样监控的:
图片描述
全国CDN监控,我们就在两个帐号分别配置了一个任意点延时就告警。有的人要问了,10秒延时才告警是否是太慢了?是的,但这是有效监控的追求,而且网页加载过程当中已经不影响访客浏览了,而监控宝必定要等他加载完啊,这是人机的区别。

如今监控宝绑定的告警邮箱只有一个,我们就使用一个公共邮箱,全部的人都能收到。若是您的监控要分类发送到不一样的接收人,那能够考虑监控宝的企业版服务,比你自已去研究Zabbix来得可靠,节省时间和精力,专一于业务。

固然也有一些偏方,好比邮件过滤转发,foxmail过滤转发,这个过程增长了告警成功的依赖,其可靠性理论上确定要低一些。
谢谢你们,分享结束。

问: Zabbix和监控宝有没有业务冲突,你两个都有用?
答:基本上没有冲突,只在最最重要的业务监控上,作了重复监控。

问:游戏产品的监控有没有特别须要注意的监控点?他们的监控阈值能否给咱们一个参考。
答:游戏产品的监控,仍是应该根据每款游戏的特色来。一些基础项目包括游戏登录服是否存活,游戏服务端各重要端口,是否在正常侦听,数据库及其所在服务器各项性能(和网站数据库同样的监控了)。一般还有平台,最好配备这两项监控:机器人模拟登录游戏,模拟一个重要操做,和真实玩家的操做流程越接近越好。

此外要关注平台各项数据是否有大的波动,好比在线玩家,是否有忽然掉线、人数大减,若是其它指标都没变就人数变了,确定须要人工去处理了。另外充值数据也是一个重要监控项,常常是什么都好的,就有几个小时没有进帐了,直到早上有玩家反馈。一般充值过程很复杂的,涉及到第三方支付接口,因此必须监控到它的一连串服务是否正常,这就能够用到监控宝API事务流监控。

相关文章
相关标签/搜索