程序能力训练测试平台是一个评估和提高用户编程水平和软件素养的平台。这个平台由一个拥有海量题目的题库、一个快速执行用户代码并比对正确答案的判题系统和一个用户能力评价系统构成。
本文实验使用了南京理工大学程序能力训练测试平台,icpc.njust.edu.cn。本平台拥有丰富的题目,不仅包含了本地题库Local,还代理的包括北京大学、浙江大学、杭州电子科技大学等高校的平台题库。本平台还拥有性能强大的判题系统,支持千人以上同时在线提交的工作负荷。此外本平台还有具体的个人程序能力评测指标。是非常优秀的程序能力训练测试平台。此程序能力训练测试平台基于Linux操作系统,使用了Uwsgi服务器来完成用户题目的拉取、用户代码的提交、执行和结果返回、多平台题目代理。是本文主要需要监控的两个部分。
2.1 开源系统监控解决方案Zabbix
2.1.1 Zabbix的相关背景和特性
Zabbix是一个企业级服务器及应用监控解决方案。它的创始人是Alexei Vladishev。它被用以监控和追踪各类网络服务、服务器和其他的网络硬件的运行状态以及各种网络参数,保证服务器系统的正常运营。同时Zabbix还提供了强大灵敏的报警机制让运维人员可以在第一时间发现问题、定位问题并且辅助解决问题。此外,Zabbix还拥有优秀的可视化能力,它能将收集到的参数通过图形、图表的形式表现出来,降低了运维人员的技术要求,提高了用户体验。
Zabbix从1998发布了第一个正式版本——Zabbix 1.0,最初应用于一个银行的内部系统。直到2016年,Zabbix经过不停的演变和进化,已经推出了Zabbix3.2的最新版本。
Zabbix的后端基于C语言设计,而它的前端基于基于Apache的PHP框架。Zabbix拥有良好的兼容性,不仅在系统层面适用于Windows、Ubuntu、Linux、Unix、Aix、OpenBSD等大部分操作系统,还对数据库、web架构有着很强的兼容性。
Zabbix十分轻量,不需要安装任何其他工具就可以对基于HTTP或者SMTP的服务器进行监控。Zabbix还提供了丰富的性能参数监控,包括:CPU、Diskdevice、Vmstat、IO等监控。
作为一个开源免费的企业级解决方案,Zabbix在系统监控领域做出了很大的贡献,也为开发者们提供了强大的功能模块、完整的架构和先进的理念。
2.1.2 Zabbix的设计架构
Zabbix系统的架构如图2.1所示。Zabbix的必要组件分为2部分:Zabbix_Server和Zabbbix_Agent。
Zabbix的服务器端,负责接收客户端或者代理发送的被监控目标的参数、日志记录等数据,然后将其存入本地数据库中,再通过Web页面将处理后的数据以各种形式展示出来。Server包括三个模块:Zabbix_server、Zabbix_database和Zabbix_webserver。Zabbix_server负责接收处理客户端发送的数据,处理过后通过Zabbix_database存入本地数据库。Zabbix_webserver负责PHP框架下的web前端,展示监控到的所有信息。
Agent是整个系统的客户端,负责收集被监视对象的数据,然后将这些数据发送至Server。Agent包含2个模块:Zabbix_collector和Zabbix_sender。Zabbix_collect负责收集被监视系统的性能、日志能数据。Zabbix_sender负责将这些数据按照特定格式发送给Zabbix_Server。
此外,Zabbix还提供了可选的代理项,Zabbix_proxy。它可以分担Zabbix服务器端一部分工作,在大数据环境和分布式环境下是十分高效的选择。
图2.1 Zabbix架构图
2.1.3 Zabbix在本文中的应用
在本文之中,需要对客户端发送到服务器端的信息进行合理的存储,然后再通过web前端将这些数据可视化。而Zabbix的Server端包含了完善的数据存储方式、数据接收器和强大的前端UI及可视化能力。我们利用Zabbix_Server模块接收客户端发送的被监控设备的CPU、Diskdevice、Memory和IO等数据,还有被监控应用所生成的有效日志。然后使用Zabbix_database存入对应的mysql数据库中。然后使用Server提供的Zabbix_webserver模块,在Apache的PHP框架下完成这些数据的可视化,利用表格和图形将性能参数、日志信息表现出来。 zabbix程序能力训练测试平台分布式服务器维护监控系统(4):http://www.chuibin.com/jisuanji/lunwen_205642.html