游戏服务器监控的设计与实现(一)

监控本来是为了方便运维维护游戏服务器,当服务器出现异常时能够及时提醒,并能够监视服务器的一些相关情况。然而需求是在不断变更的。这句话一点都没错,写这个工具的时候尤其如此了。

需求迭代,出现的很多情况开始都没有考虑清楚。对于需求做如下的罗列。

迭代一:

刚开始,运维说的比较简单,只要在服务器的机器上面写一个监控,能够监控服务器挂没挂,能够在挂的时候给邮箱发一封邮件。不就是一个监控工具嘛,简单!只要写个工具在,同一个物理主机上跟着服务器一起启动一个就行了,一旦服务器挂掉就能告警发送邮件,并且应运维要求还做了一个小界面供查看。监控了,游戏服务器进程,在线人数,ClientSession数,数据库连接情况等。

迭代二:

运维的需求变更了,因为游戏服务器会部署在多个物理主机上,需要做一个代理端来监视所有物理主机上的服务器运行情况并预警,并且能够测试游戏服务器所在的物理主机与数据库(另外一台服务器了)之间的连接情况。然而游戏服务器是运行在,windows上的,代理所在的系统是一个Linus系统。我就简单实现了如下这种:

迭代三:

这次大致的框架是有了,但是运维还是不很满意。他们的需求又发生了变化。这次主要是功能上。

1、邮件预警的及时性和错误原因

2、可以对游戏服务器一次挂掉实现跟踪,从发送邮件提示游戏服务器异常,到游戏服务器解决能够区分提示提醒。并且运维是多人轮班的,如果能够跟踪解决者更好,并发送邮件提醒其他人。

3、多台游戏服务器所在的物理主机,监控端程序配置简便化

4、Windows下做的UI界面不够美观,并且Linus平台操作存在问题需要调整

5、游戏服务器连接数据库方式不再是ODBC了,调整验证手段!

6、可以实现简单的游戏逻辑操作,查看游戏服务器是否运行正常,对于游戏服务器进入死循环挂死没有很好的监控到,如果能够测试一些游戏功能更好。

这个时候,这已经不是一个监控工具了,逐步向一个监控系统迈进了。但这还不是最恐怖,最恐怖的是还有个迭代四!

迭代四:

当我最终直到他的物理主机的分布模型的时候,我就觉得还是开始想太简单了,还是运维想的太神奇了!由于游戏是在韩国上线,所以游戏服务器是在韩国的物理机上,代理端是在国内的一台机器上,然而对代理端的查看是在另外一台机器上。并且由于涉及到国际通讯的不稳定性,有时候韩国的物理主机可能和国内的机器连接失效,但是其实本身游戏服务器所运作的网络没有什么问题。除了要保证迭代三,提到的功能外,还有如下的一些:

1、对于代理端和国外物理主机之间网络质量进行预警并能够邮件提醒。

2、要保证游戏服务器做停服关服维护的时候,能够不再提醒异常

3、增添删减游戏服务器的时候,能够很方便的配置

4、能够检测本地网络质量

5、提供分布式操作的要求(不紧要),可以实现一个基于Linux操作端的操作就可以了

6、可以分别对单个物理主机的游戏服务器的监控惊醒设置和操作

7、还要保证游戏服务器的独立性,不能占用很大的带宽量

8、对于检测周期等能够进行设置,并设置重查的轮训次数设置。不同的检测数据需要做出区分,有的是立即告警,有的则是需要检测几次仍然失败再告警发送邮件。

感觉这要是说监控系统估计也不太合适了,一个典型的分布式监控系统倒是真的。

时间: 2024-10-29 10:45:36

游戏服务器监控的设计与实现(一)的相关文章

游戏服务器监控的设计与实现(二)

结合上一次的拓扑结构,大部分游戏服务器采用C++实现,如果监控亦采用C++来做,在分布式上.web操作上.网络通讯.邮件功能上都得从底层重头开始构建封装并且并不便捷,需求又是不断向前迭代的,由于要保证一定的热部署和跨平台的特性(一些库是为了复用,需要兼顾平台特性),加之C++语言本身特点,开发效率反而会降低.加之本人对于C++熟悉程度不高,对于一些第三方库的不了解很难做一个合理化的选择和封装来确保稳定性,因此这个监控主要采用了Java语言实现. 系统实现目标: 实现游戏服务器的必要信息监控,统计

游戏服务器监控的设计与实现(三)

系统信息采集方面,选择使用Sigar的第三方库. 对于Sigar做一个简单的梳理. 服务器监控,一方面要对游戏服务器的数据进行采集,另一方面也要对游戏服务器所在的系统信息进行采集.我打算使用sigar来获取系统信息的采集工作.其Demo非常完整,并且跨平台支持,本身对于.net,C++,php,python,java,perl,ruby都是支持的,为以后的扩展和更改留有很多的余地. sigar网址:https://support.hyperic.com/display/SIGAR/Home;js

H5十人牛牛架设游戏服务器架构: 内核设计

H5十人牛牛架设游戏服务器查看(aqiulian.com),内核设计分析Q_212303635:接下来讲解一下内核模块分析.内核的几个组件被设计成Service,也就是说这几个模块都要实现如下接口: 图1  IService接口 Start方法用来启动服务. Stop 方法用来关闭服务. IsService 方法用于查询当前服务是否正在工作. 内核中的几个Service都不能够直接创建,Applications在使用这些Service的时候首先要得到一个IServiceMgr的实例,这被实现成了

我是如何设计游戏服务器架构的

前言 现在游戏市场分为,pc端,移动端,浏览器端,而已移动端和浏览器端最为接近.都是短平快的特殊模式,不断的开服,合服,换皮.如此滚雪球! 那么在游戏服务器架构的设计方面肯定是以简单,快捷,节约成本来设计的. 来我们看一张图: 这个呢是我了解到,并且在使用的方式,而PC端的游戏服务器而言,往往是大量的数据处理和大量的人在线,一般地图也是无缝地图的完整世界观,所以不同的程序都是独立的进程并且在不同的server中运行! 而浏览器端和移动终端,在上面就说过了,它主要是不断的开服,合服,开服,合服,那

关于游戏服务器中缓存的设计方案的讨论

(只针对游戏服务器中的热数据)游戏服务器的缓存设计总体大概有三种类型:进程内缓存--如java的ehcahe. 进程内缓存--使用会话session Cache,通过语言的基础类型和基础的集合框架来定制 .分布式缓存-- 如redis ,memcahced. 这三种类型各有个的好处,根据不同的应用场景,可以单独使用,也可以相互结合处理. 通过三方框架来做进程内缓存,和定制session cache,在一定程度上有着快而且高效的显著效果,但是不利于做分布式,使用分布式缓存 在一定程度上会造成IO上

常见游戏服务器业务逻辑和模板

0. 背景 服务器框架设计者,如果设计的好,考虑到了这几种情况,无论是对于游戏服务器逻辑清晰度,还是对于写业务逻辑的程序员来说,是非常友好的.游戏服务器业务逻辑写多了,一个游戏策划提出的需求归纳到服务器业务逻辑开发上面,也就无非几种情况需要处理. 1. 业务逻辑模板 下面给出代码模板,无论何种语言开发,大体都类似. -- 数据结构 -- tbPlayer 常见字段 tbPlayer = { dSocketId = 0, time_rec = { -- 常见时间 birth = 0, login

教你从头写游戏服务器框架

本文由云+社区发表 作者:韩伟 前言 大概已经有差不多一年没写技术文章了,原因是今年投入了一些具体游戏项目的开发.这些新的游戏项目,比较接近独立游戏的开发方式.我觉得公司的"祖传"服务器框架技术不太适合,所以从头写了一个游戏服务器端的框架,以便获得更好的开发效率和灵活性.现在项目将近上线,有时间就想总结一下,这样一个游戏服务器框架的设计和实现过程. 这个框架的基本运行环境是 Linux ,采用 C++ 编写.为了能在各种环境上运行和使用,所以采用了 gcc 4.8 这个"古老

棋牌游戏服务器架构设计

转载自:简书一位同行的文章 一,棋牌类服务器的特点 1,棋牌类不分区不分服 一般来说,棋牌游戏都是不分区不分服的.所以棋牌类服务器要满足随着用户量的增加而扩展的需要. 2,房间模式 即在同一局游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息. 3,每个房间的操作必须是顺序性 这个特性类似与一般游戏的回合制,每个玩家的操作都是有顺序性的. 二,需要解决的技术点 1,数据共享 因为棋牌类游戏不分区不分服,我们在设计服务器的时候,是按世界服的思想去设计,即服务器是一个n多台物理机的集群

2016年netty/mina/java nio视频教程java游戏服务器设计教程

2016年netty/mina/Javanio视频教程Java游戏服务器设计教程 需要的加qq:1225462853,备注:程序员学习视频 其他视频都可以索要(Netty   NET    C++ 等等) 互联网架构师教程:http://blog.csdn.net/pplcheer/article/details/71887910 netty录制时间为2015.11-2016.2月份  netty教程为加密视频!      netty12个课程已全部录制完成,相信通过这12节课的分析能让大家对n