重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在性能测试中,对机器资源使用情况的监控几乎是必不可少的,如何从本地windows主机同时监控多台linux服务器的性能指标?如何方便、快捷、又近似实时的观察到每个被监控主机的运行情况,而不需要提前做侵入式的操作?这些问题就是我写res-monitor的初衷。
成都创新互联长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为澄海企业提供专业的网站制作、成都网站建设,澄海网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。res-monitor是轻量的多机性能指标监控工具,打开即用,无需在被监控主机安装所谓的 ”agent”, 完全基于linux自带命令,如top、free、dstat完成资源的监控和采集。 res-monitor的目标是用在性能测试中,方便、近似实时的监控多台服务器的性能指标数据,为后期的性能瓶颈定位或分析提供依据。
没有说哪个工具不好用,主要考虑实际应用场景或需求。Nmon是一款方便、轻量、全面的资源监控工具,非常喜欢,它也是我写性能自动化框架中使用的资源监控工具。在那个框架工具中,实现了性能场景执行自动化、监控自动化、结果分析自动化,nmon的作用功不可没,公众号有篇文章对该框架的设计思路做过介绍,感兴趣可以关注了解。但在新环境、新项目测试时,需要每台机器提前部署nmon(其实很简单),而且一般需要保存数据用在测试报告中,所以通常使用nmon写入文件的方法,测试完成后再事后分析(当然nmon是支持命令交互实时输出的),这样就额外增加了整理、分析数据的工作量。可以粗略想一下,同时监控5台中间件的4大基础资源的后期时间成本,5个nmon文件4组指标(cpu\mem\net\io)1分钟(每项指标分析、求值)≈20分钟….
Glances\Nagios\Zabbix这类监控系统,虽然相当强大,但对我们日常性能测试显的过于笨重了,安装麻烦、而且很多被监控机器是未配置外网连接的,缺少什么或要更新什么都很费劲,不是一句yum或apt-get所能解决的。我更偏向”瑞士×××”等犀利、便携式的,能达到目的就行。
Res-monitor应该是一款打开即用、无需被监控系统安装额外工具(除了top\free\dstat),这些命令都是linux发行包里自带的,当然如果真的没有,那就yum install –y xxx一下吧。
Res-monitor使用paramiko完成ssh连接和命令执行;这是python里成熟的ssh方案;
Res-monitor使用rrdtool存储数据和绘制图形,其中rrdtool是一款复杂却好用的环形数据库,后面有空专门介绍一下它;
Res-monitor使用logging完成操作日志记录,同时应该支持将每次监控数据保存;
Res-monitor使用html网页展示监控数据,使用js完成页面的自动刷新;
Res-monitor应该在某台监控出现异常时,主动停止所有机器的监控,设置一个用于保存状态的类变量即可解决;
Res-monitor需要考虑linux发行版、命令命令等不同造成的输出差异化,通过使用awk、cut、tail等完成输出形式的兼容性处理;
Res-monitor需要考虑多被监控服务器可能存在多网卡的情形、网卡、磁盘命名等可能差异较大。为了工具的通用性,网卡数据取total值,即不区分哪个网卡的流量;磁盘利用率,同样不区分磁盘,只统计采集时刻大的利用率作为结果值,这样设计的考量是,性能测试中,如果大值就在可接受范围,那结果就无需多关心,如果有异常,最终还是要靠性能人员去定位,而不是工具。
Res-monitor可以轻松完成对多服务器的性能指标监控,无需额外安装,不依赖环境,打开即用,数据结果保存及图形化输出。
如下图是监控一台linux服务器的结果,html报告近似实时输出cpu\mem\net\io数据和图形,只所以说是近似,是因为工具支持配置监控采集间隔,默认5s,间隔太短可能对性能有干扰。
关于python学习、分享、交流,笔者开通了微信公众号【小蟒社区】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学python。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。