首页 服务器管理监控系统

服务器管理监控系统

举报
开通vip

服务器管理监控系统服务器管理、监控系统摘要:现今互联网行业发展迅速,底层支撑互联网服务的服务器等各种硬件设备规模越来庞大。如何管理有效地管理这些设备、实时发现其潜在的隐患、获取其运行的状态,而显得至关重要。根据这些信息才能合理地决定设备上所运行系统、应用等服务的关闭与保留与挂起。本文介绍了利用Zabbix开源监控解决方案,以及对该方案的二次开发而实现对服务器机房的专家系统。关键字:机房运维服务器监控Zabbix目录摘要 21.引言 42.Zabbix监控原理与应用 52.1.Zabbix监控原理 52.2Zabbix用户配置 63....

服务器管理监控系统
服务器管理、监控系统摘要:现今互联网行业发展迅速,底层支撑互联网服务的服务器等各种硬件设备规模越来庞大。如何管理有效地管理这些设备、实时发现其潜在的隐患、获取其运行的状态,而显得至关重要。根据这些信息才能合理地决定设备上所运行系统、应用等服务的关闭与保留与挂起。本文介绍了利用Zabbix开源监控解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,以及对该方案的二次开发而实现对服务器机房的专家系统。关键字:机房运维服务器监控Zabbix目录摘要 21.引言 42.Zabbix监控原理与应用 52.1.Zabbix监控原理 52.2Zabbix用户配置 63.监控建立与二次开发 84.系统展示 104.1用户监控对象添加 105. 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 14参考文献: 15______________________________________________________________________________________________________________-可编辑修改-1.引言随着现今互联网行业的迅速发展,某些物联网服务的用户已经达到了亿级,如淘宝网注册用户已达到3.7亿,仅在2015年“双十一”当天活跃用户过亿[1]。支撑如此庞大用户使用的硬件基础是规模庞大的服务器群。如何获取每一台服务器的运行状态,及时获悉潜在隐患,出现问题及时锁定排除显得至关重要。机房运维人员以及高层决策人员只有在实时掌握这些信息后才可有效地对进行决策,如在访问流量过大或其他恶意攻击后是及时关闭服务还是启动备用服务,服务区瘫痪后是需要工作人员至机房处理硬件问题还是只需远程重启服务器等类似或简单或复杂的决策,都需要底层专家系统信息的支持。现今比较成熟的开源服务器底层数据的采集解决方案主要有Zabbix和Nagios。Nagios是一个监视系统运行状态和网络信息的监视系统,能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等[2]。Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的Web界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。Nagios可以监控的功能有:1、监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);2、监控主机资源(处理器负荷、磁盘利用率等);3、简单地插件 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 使得用户可以方便地扩展自己服务的检测方法;4、并行服务检查机制;5、具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;6、当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);7、可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用;8、自动的日志滚动功能;9、可以支持并实现对主机的冗余监控;10、可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等[2];______________________________________________________________________________________________________________11、可以通过手机查看系统监控信息;-可编辑修改-12、可指定自定义的事件处理控制器[3]。其他一些大型企业也有自己独立开发的服务器监控服务,如小米运维部的人性化互联网企业级监控系统Open-Falcon、淘宝运维部使用OpenTSDB等,它们也有各自的优点。本文第一章概述了服务器机房的专家,以及可提供这些服务的一些解决方案等;第二章介绍Zabbix所提供的监控原理即使用;第三章介绍Zabbix的实际监控应用以及二次开发;第四章进行专家的分析;第五章对服务器机房专家系统进行总结。2.Zabbix监控原理与应用Zabbix是一个B/S模式的企业级的监控服务解决方案,用户可以此获取服务器等硬件、操作系统、中间件等的运行状态,为应用层的决策提供决策信息。2.1Zabbix监控原理Zabbix由agent和server组成,其中agent负责采集服务器等监控对象的数据,server负责处理这些数据,判断异常等,并通过提供apache服务在web端实现对数据的可视化展示。其中agent的类型主要监控对象包括:(1)Zabbix-agent,根据Zabbix监控方式实现对操作系统层级的信息采集,实现对系统的监控。Zabbix-agent有sender和get两部分组成,分别通过命令来采集数据[4]。监控对象有CPU运行状态、磁盘I/O、内存使用、进程线程数等;同时可利用其他应用提供的端口实现对应用服务的监控,如MySQL数据库等。(2)、IPMI-agent,根据IPMI(IntelligentPlatformManagementInterface)接口实现对服务器等硬件设备的监控,监控对象包括CPU运行温度、风扇转速、环境温度等硬件信息的监控;(3)SNMP-agent,根据SNMP(SimpleNetworkManagementProtocol) 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 实现对交换机、路由器等网络设备的监控。监控对象包括各端口运行状态、流入流出流量等。(4)JMX-agent,根具JMX(JavaManagementExtensions)提供的接口实现对Java类应用的监控。监控对象包括Java虚拟机、Tomcat服务,Hadoop、Spark等分布式服务的监控等。当agent得到数据并发送给server后,server端将数组存放在位于服务端的数据库,然后前端服务调用数据库数据并将其可视化显示。显示给用户的只有browser页面,用户在前端进行服务器管理并据此进行相应决策。图(1)表示了Zabbix的监控原理。图1Zabbix监控原理图Zabbix的agent将数据发送给server并储存在数据库中,前端页面调用数据库中的数据与用户交互。2.2Zabbix用户配置Zabbixserver处理数据时为了便于用户操作按图(2)的方式处理、集成监控数据。图2数据处理、集成图其中host为用户监控的主机、设备或操作系统等;item为实际的监控个体,可能是某一个CPU的使用率,磁盘读写速度等,一个host上可能存在若干item;每一个item都可设定对应的trigger,根据阈值判断还item的使用情况是否达到报警值。Trigger发现报警后将会在主界面显示,也可都过短信、邮件、微信等向用户发送报警信息,并连接后续修复操作。因此用户在实际使用时主要需配置host,item和trigger,分别如图(3)、图(4)、图(5)所示。图3Host配置图用户配置监控方式即监控对象,包括监控Host配置图对象的名称、所在群组、监控方式、IP地址等。图4item配置图用户根据不同的监控类型配置监控的具体个体,可设置监控元素、监控周期、数据保存时限等。图5trigger配置图Trigger配置报警信息,其中Expression为表达式判断item的使用情况。如图所示为空闲内存与全部内存的比值,但可用内存的使用率小于20%时,将产生报警,警报级别为高。除了上述3种配置外,用户还可通过配置graph、map、screen等,分别配置数据展示图,host关系图、监控大屏等。3.监控建立与二次开发本监控与专家系统根据东海分局预报中心需要,利用Zabbix监控体系并结合Javaweb技术二次开发建立,为整个预报中心提高机房管理、监控专家服务。3.1搭建环境本系统选择Ubuntuserver作为Zabbixserver所在服务器,上文四种监控agent部署与客户端采集数据;数据库选择MySQLserver;网页服务选择apache开源服务;同时利用springboot框架进行javaweb开发,整合Zabbix的api,并直接处理Zabbix数据库,在交互更良好的页面实现管理与决策。3.2Zabbixserver建立根据Zabbix的监控原理,server的搭建主要包括数据库的建立,apacheweb服务的建立,Zabbixserver的建立等,另外Zabbixserver只能搭建在Linux系统中。本系统中Zabbixserver的安装都选择Ubuntu系统下的编译安装,具体建立流程不在赘述,详情参见Zabbix用户手册[5]。3.3二次开发Zabbix原始界面为英文界面,中文翻译的界面十分生硬,不便于中国用户使用。本系统对Zabbix进行了二次开发,在Zabbix上用封装了一层用户管理系统。本系统使用Javaweb技术,结合Zabbixapi操作Zabbix数据,同时根据用户需要添加了针对性的服务。系统界面如图6:图6平台界面如图所示,用户可添加硬件、中间件、操作系统等类型的host。图(7)为用户添加host的界面:图7后台host添加页面用户可在次添加设备信息,同时根据Zabbix的api可将添加的数据发送值Zabbixserver,实现Zabbix对该设备的监控。Host添加代码如下,host的添加选择了使用Zabbixapi实现:/***Createdbylighton2016/2/26.*/publicclassZbxHostServiceImpl{publicstaticIHostServicehostService=newHostServiceImpl();static{//登录Login.login();}//Type:1-Zbx_agent;2-SNMP;3-IPMI4-JMX.//Port:1-10050;2-161;3-12345;4-632publicstaticCreateDuplicatecreateDuplicate=newCreateDuplicate();Stringresponse;//创建防火墙publicStringcreateHostFw(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"161","10081",2);returnresponse;}//创建主机收集服务器性能信息:CPU、Memory等publicStringcreateHostHost(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"10050","10081",1);returnresponse;}//创建iis服务publicStringcreateHostIIS(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"10050","10081",1);returnresponse;}//创建jvmpublicStringcreateHostJava(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"12345","10081",4);returnresponse;}//创建oracle数据库publicStringcreateHostOracle(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"161","10081",2);returnresponse;}//创建ping监控changesneededherepublicStringcreateHostPing(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"10050","10081",1);returnresponse;}//创建路由publicStringcreateHostRouter(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"161","10081",2);returnresponse;}//收集服务器硬件信息:温度,转速等publicStringcreateHostServer(StringhostName,StringinterfaceIp,StringinterfacePort){response=createDuplicate.createHostEasy(hostName,interfaceIp,interfacePort,"10081",1);returnresponse;}//创建IPMIpublicStringcreateHostServerIPMI(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"623","10081",4);returnresponse;}publicStringcreateHostSqlserver(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"10050","10081",1);returnresponse;}//创建存储publicStringcreateHostStore(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"10050","10081",1);returnresponse;}//创建交换机WithGrouppublicStringcreateHostSwitchboard(StringhostName,StringinterfaceIp){response=createDuplicate.createHostWithGroup(hostName,interfaceIp,"9","161","10208",2);returnresponse;}//创建tomact服务publicStringcreateHostTomcat(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"12345","10081",4);returnresponse;}//创建虚拟机publicStringcreateHostVmware(StringhostName,StringinterfaceIp){response=createDuplicate.createHostEasy(hostName,interfaceIp,"10050","10081",1);returnresponse;}publicStringZbxDeleteServer(StringhostId){//数据准备HostDeleteRequestdelete=newHostDeleteRequest();delete.getParams().add(hostId);returnhostService.delete(delete);}publicJSONObjectgetHostIdAndName(){HostGetRequesthostGetRequestContent=newHostGetRequest();String[]outputs={"name"};hostGetRequestContent.getParams().setOutput(outputs);//hostGetRequestContent.getParams();returnhostService.get(hostGetRequestContent);}publicJSONObjectgetHostIdAndName(Stringhostid){HostGetRequesthostGetRequestContent=newHostGetRequest();String[]outputs={"name"};String[]hostids={hostid};hostGetRequestContent.getParams().setOutput(outputs);hostGetRequestContent.getParams().setHostids(hostids);returnhostService.get(hostGetRequestContent);}publicstaticclassHostArray{publicstaticArrayList<String>getHostId(){ZbxHostServiceImplzbxHostIds=newZbxHostServiceImpl();JSONObjecthostIdsJsb=zbxHostIds.getHostIdAndName();JSONArrayhostIdsJsa=hostIdsJsb.getJSONArray("result");ArrayList<String>hostIds=newArrayList<String>();for(inti=0;i<hostIdsJsa.length();i++){Objecthostid=hostIdsJsa.getJSONObject(i).get("hostid");hostIds.add(i,String.valueOf(hostid));}returnhostIds;}publicstaticArrayList<String>getHostName(){ZbxHostServiceImplzbxHostNames=newZbxHostServiceImpl();JSONObjecthostNamesJsb=zbxHostNames.getHostIdAndName();JSONArrayhostNameJsa=hostNamesJsb.getJSONArray("result");ArrayList<String>hostNames=newArrayList<String>();for(inti=0;i<hostNameJsa.length();i++){JSONObjectname=hostNameJsa.getJSONObject(i);Objectnames=name.get("name");hostNames.add(i,String.valueOf(names));}returnhostNames;}}}4.系统展示4.1用户监控对象添加用户添加host完毕后效果如图(8):图8Zabbix监控页面图(9)为测试阶段Zabbix的状态:图9Zabbix监控状态如图所示主机共144个,可用监控item3053个,可用trigger1319个。4.2可视化监控与专家图(10)Zabbix监控对象的状态:图10Zabbix监控对象的状态如图可显示trigger发出的报警,以及统计数据。同时可以直观的发现该界面设计并不美观,与中国用户的交互也是十分友好,不便于用户进行相应的决策。为了便于用户查看并获得有用的决策信息,二次开发过程的结果简化了监控对象的添加,对于Zabbix中复杂的item、与trigger添加,本系统事先根据服务器型号设定好模版,用户选择服务器是将自动加载模版实现监控,同时对于用户关心的监控报警阈值与报警提醒,系统对此也进行了简化。图(11)为用户添加报警信息的页面:图11平台trigger配置页面相比于Zabbix中添加trigger时复杂表达式的填写,在专家系统中用户可直接选择监控对象,并根据提示信息完成对阈值的填写,实现了告警规则简单明了的配置。Trigger后台配置代码如下:@RepositorypublicclassZbxTriggerRepository{@AutowiredJdbcTemplatejdbc;@TargetDataSource(name="zabbix")publicvoidupdTrigger(StringitemKeyToSearch,StringthresholdNew){//得到字段itemid,hostid,item_name,item_key,triggerid,expressionStringtriggerSql;if(itemKeyToSearch.equals("memoryusageisnotenough")){triggerSql="SELECTi.itemid,i.hostid,i.name,i.key_,fun.triggerid,trg.expression\n"+"FROMitemsasi,hosts_templatesasht,functionsasfun,triggersastrg\n"+"wherei.hostid=ht.hostid\n"+"andtrg.description='"+itemKeyToSearch+"'\n"+"andi.itemid=fun.itemid\n"+"andtrg.triggerid=fun.triggerid\n"+"andht.hostid>10084;";}else{triggerSql="SELECTi.itemid,i.hostid,i.name,i.key_,fun.triggerid,trg.expression\n"+"FROMitemsasi,hosts_templatesasht,functionsasfun,triggersastrg\n"+"wherei.hostid=ht.hostid\n"+"andi.key_='"+itemKeyToSearch+"'\n"+"andi.itemid=fun.itemid\n"+"andtrg.triggerid=fun.triggerid\n"+"andht.hostid>10084;";}List<Map<String,Object>>list=jdbc.queryForList(triggerSql);Stringexpression=list.get(1).get("expression").toString();//因为是一个模版出来的,所有操作符都一样inta=expression.lastIndexOf("}");Stringoperator=expression.substring(a+1,a+2);//得到运算符List<String>str=newArrayList<>();for(Map<String,Object>map:list){StringexpressionOld=map.get("expression").toString();StringthresholdOld=expressionOld.substring(a+2,expressionOld.length());StringexpressionNew=expressionOld.replace(operator+thresholdOld,operator+thresholdNew);map.put("expression",expressionNew);Stringtriggerid=map.get("triggerid").toString();StringupdTriggers="updatetriggerssetexpression='"+expressionNew+"'wheretriggerid="+triggerid+";\n";str.add(updTriggers);//jdbc.update(updTriggers);}String[]sql=str.toArray(newString[str.size()]);jdbc.batchUpdate(sql);}}4.3决策分析本系统对Zabbix的决策功能进行了大面积二次开发与包装,Zabbix系统中的信息可视化页面相对简陋,如图(12):图12Zabbix图标页面Zabbix中不便于同时查看多个图表,二次开发中对图表也进行了优化,图(13)为二次开发的数据监控页面:图13数据展示图从二次开发的图中用户可以更加方便地获取所需的信息,并且同时监控到多个监控要素。如果某项监控要素出现问题,专家系统将第一时间用短信通知用户,短信截图如图(14):图14报警短信发送用户根据短信信息可准确定位问题所在,便与应对决策。短信功能的实现代码如下:importcn.edu.shou.monitor.service.impl.ZbxTriggerServiceImpl;importcn.edu.shou.monitor.spring.TargetDataSource;importorg.json.JSONArray;importorg.json.JSONObject;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.jdbc.core.JdbcTemplate;importorg.springframework.stereotype.Repository;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;/***Createdbylighton2016/4/14.*/@RepositorypublicclassPhoneMessage{@AutowiredJdbcTemplatejdbcTemplate;@TargetDataSource(name="predict")publicStringsendMessage(Stringhostid){//result中Arraysize为2ZbxTriggerServiceImpltrigger=newZbxTriggerServiceImpl();JSONObjecttriggerRs=trigger.getTriggerForSms(hostid);JSONArrayresult=triggerRs.getJSONArray("result");//结果信息Stringcontent=null;if(!result.toString().equals("[]")){Stringdescription=result.getJSONObject(0).getString("description");Stringpriority=result.getJSONObject(0).getString("priority");StringselectSqlName="SELECThostsFROMpredict.zbx_hostswherehost_id='"+hostid+"';";StringselectSqlDesc="SELECTdesc_zhFROMpredict.alarm_descriptionwheredesc_en='"+description+"';";StringsqlType="SELECTSMS_nameFROMzbx_hosts_smswherehost_id='"+hostid+"';";List<Map<String,Object>>listName=newArrayList<Map<String,Object>>();listName=jdbcTemplate.queryForList(selectSqlName);Stringname=listName.get(0).get("hosts").toString();List<Map<String,Object>>listDesc=newArrayList<Map<String,Object>>();listDesc=jdbcTemplate.queryForList(selectSqlDesc);Stringdesc_zh=listDesc.get(0).get("desc_zh").toString();List<Map<String,Object>>listType=newArrayList<Map<String,Object>>();listType=jdbcTemplate.queryForList(sqlType);Stringtype=listType.get(0).get("SMS_name").toString();content="机房主机出现报警,请尽快处理。详细信息为:"+type+"编号:"+name+",报警内容:"+desc_zh+",警报等级"+priority+"。";}returncontent;}publicStringtestSendSms(Stringhostid){StringselectSql="SELECThostsFROMpredict.zbx_hostswherehost_id='"+hostid+"';";List<Map<String,Object>>list=newArrayList<Map<String,Object>>();if(jdbcTemplate==null){jdbcTemplate=newJdbcTemplate();}list=jdbcTemplate.queryForList(selectSql);Stringname=list.get(0).get("hosts").toString();returnname;}}5.总结本文简要介绍了针对于用于需要设计的一套服务器机房管理监控与专家系统。整个系统利用Zabbix开源服务器监控解决方案,同时进行二次开发并添加了其他服务。实现了一套可管理、可监控、可报警的服务器监控专家系统。本系统实现了用户对机房的管理与监控,更重要的是利用这些信息来与其兄弟单位、子单位以及服务单位的数据对接联通情况。保证了用户可以实时、清晰、准确地了解预报中心各级业务环节的运行状态。一旦出现问题,用户可以及时根据这些信息进行决策,保证业务信息点及时发布。参考文献:[1]:http://www.itrustdata.cn/,《2015年双十一中国移动互联网电商行业发展分析 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 》.[2]:http://www.oschina.net/p/nagios,监控系统Nagios.[3]:http://www.searchdatacenter.com.cn/software/content_10170.htm,Nagios网络监控工具最新版本.[4]:https://www.Zabbix.com/documentation/3.2/manpages/Zabbix_get,Zabbixdocumentation.[5]:https://www.Zabbix.com/documentation/3.2/manual/installation/install,Zabbix安装手册。WelcomeToDownload!!!欢迎您的下载,资料仅供参考!
本文档为【服务器管理监控系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
金水文库
鑫淼网络科技有限公司主要经营:PPT设计 、课件制作,软文策划、合同简历设计、计划书策划案、各类模板等。公司秉着用户至上的原则服务好每一位客户
格式:doc
大小:1MB
软件:Word
页数:23
分类:
上传时间:2020-04-23
浏览量:0