当前位置:首页 » 存储配置 » jmx数据采集数据存储在哪里

jmx数据采集数据存储在哪里

发布时间: 2023-08-02 22:55:20

‘壹’ java的相关技术

JDBC(Java Database Connectivity)提供连接各种关系数据库的统一接口,作为数据源,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯Java API 编写数据库应用程序,同时,JDBC也是个商标名。 EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。 Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟机调用。这样,远程方法激活可以发生在对等的两端,也可以发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。 Java IDL(Java Interface Definition Language) 提供与CORBA(Common Object Request Broker Architecture)的无缝的互操作性。这使得Java能集成异构的商务信息资源。 JNDI(Java Naming and Directory Interface)提供从Java平台到的统一的无缝的连接。这个接口屏蔽了企业网络所使用的各种命名和目录服务。 JMAPI(Java Management API)为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。 JMS(Java Message Service)提供企业消息服务,如可靠的消息队列、发布和订阅通信、以及有关推拉(Push/Pull)技术的各个方面。 JTS(Java transaction Service)提供存取事务处理资源的开放标准,这些事务处理资源包括事务处理应用程序、事务处理管理及监控。 JMF(Java Media Framework API),她可以帮助开发者把音频、视频和其他一些基于时间的媒体放到Java应用程序或applet小程序中去,为多媒体开发者提供了捕捉、回放、编解码等工具,是一个弹性的、跨平台的多媒体解决方案。 Annotation(Java Annotation),在已经发布的JDK1.5(tiger)中增加新的特色叫Annotation。Annotation提供一种机制,将程序的元素如:类,方法,属性,参数,本地变量,包和元数据联系起来。这样编译器可以将元数据存储在Class文件中。这样虚拟机和其它对象可以根据这些元数据来决定如何使用这些程序元素或改变它们的行为。
在Java技术中,值得关注的还有JavaBeans,它是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。通常,在一个支持JavaBeans规范的开发环境(如Sun Java Studio 和IBM VisualAge for Java)中,可以可视地操作JavaBean,也可以使用JavaBean构造出新的JavaBean。JavaBean的优势还在于Java带来的可移植性。EJB (Enterprise JavaBeans) 将JavaBean概念扩展到Java服务端组件体系结构,这个模型支持多层的分布式对象应用。除了JavaBeans,典型的组件体系结构还有DCOM和CORBA,关于这些组件体系结构的深入讨论超出了本书的范围。 JavaFXSun刚刚发布了JavaFX技术的正式版,它使您能利用JavaFX 编程语言开发富互联网应用程序(RIA)。JavaFX Script编程语言(以下称为JavaFX)是Sun微系统公司开发的一种declarative,staticallytyped(声明性的、静态类型)脚本语言。JavaFX技术有着良好的前景,包括可以直接调用Java API的能力。因为JavaFXScript是静态类型,它同样具有结构化代码、重用性和封装性,如包、类、继承和单独编译和发布单元,这些特性使得使用Java技术创建和管理大型程序变为可能。
JavaFX从它2007年发布以来,表现一直差强人意。Oracle收购了Sun之后,在JavaFX中投入了大量的精力进行推广和更新。JavaFX比较出名的应用应该是在2010年温哥华冬奥会上,调整了JavaFX中的很多概念,以及重新设计和实现了很多重要组件之后,得到的就是现在的JavaFX 2.0。JavaFX 2.0的beta版已经发布,正式版则定于2010年第3季度发布。JavaFX 2.0的新特性使得开发人员应该需要重新审视它在RIA开发领域中的位置。在很多情况下,JavaFX 2.0也会是不错的选择。 JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入
管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。 JPA(Java Persistence API),JPA通过JDK 5.0注解或XML(标准通用标记语言的子集)描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。 Spring Framework【Java开源J2EE框架】
Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的 aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVCWeb框架。【SpringIDE:Eclipse平台下一个辅助开发插件】。
WebWork 【Java开源Web框架】
WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,WebWork2.x前身是Rickard Oberg开发的WebWork,但WebWork已经被拆分成了Xwork1和WebWork2两个项目。Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层Action类),session(会话)application(应用程序)范围的映射,request请求参数映射。WebWork2支持多视图表示,视图部分可以使用JSP,Velocity,FreeMarker,JasperReports,XML等。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上。【EclipseWork:用于WebWork辅助开发的一个Eclipse插件】
Struts【Java开源Web框架】
Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。【StrutsIDE:用于Struts辅助开发的一个Eclipse插件】
Hibernate 【Java开源持久层框架】
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的Hibernate辅助开发工具:【Hibernate Synchronizer】【MiddlegenIDE】
JDiy 【Java极速开发框架. 开源】
JDiy是一款java极速开发框架,无需ORM,极少的代码便可以完成数据库的CRUD(增删改查);
可同时用于javaEE或者javaSE开发环境;完美支持各大主流数据库,如:MySQL, SQL Server, Oracle, DB2, PostgreSQL,SQLite;
同时JDiy内置一套精简而不失强大的智能开发平台(开发者登录后,随心所欲地零代码生成网站管理系
JFinal【Java极速WEB+ORM框架】
jfinal是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、pythonphp等动态语言的开发效率!主要特点1.MVC架构,设计精巧,使用简单 2.遵循COC原则,零配置,无xml 3.独创Db + Record模式,灵活便利 4.ActiveRecord支持,使数据库开发极致快速 5.自动加载修改后的java文件,开发过程中无需重启web server 6.AOP支持,拦截器配置灵活,功能强大 7.Plugin体系结构,扩展性强 8.多视图支持,支持FreeMarker、JSP、Velocity9.强大的Validator后端校验功能 10.功能齐全,拥有struts2的绝大部分功能 11.体积小仅218K,且无第三方依赖
Quartz 【Java开源Job调度】
Quartz是OpenSymphony开源组织在Job scheling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或EJBs。Quartz的最新版本为Quartz 1.5.0。
Velocity 【Java开源模板引擎】
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。【VeloEclipse :Velocity在Eclipse平台下的一个辅助开发插件】
IBATIS 【Java开源持久层框架】
使用ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显得别具意义。
Compiere ERP&CRM 【Java开源ERP与CRM系统】
Compiere ERP&CRM为全球范围内的中小型企业提供综合型解决方案,覆盖从客户管理、供应链到财务管理的全部领域,支持多组织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性。易于安装、易于实施、易于使用。只需要短短几个小时,您就可以使用申购-采购-发票-付款、报价-订单-发票-收款、产品与定价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了。
Apache MINA 【java开源socket框架】
ApacheMINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可扩展性的网络应用程序。它提供了一个通过java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API。 IntelliJ IDEA【Java开发工具】
IntelliJ IDEA是JetBrains公司的产品,比老一代Java开发工具Eclipse更漂亮,更智能。Google官方Android开发工具Android Studio就是基于intellij IDEA开发的。Intellij IDEA拥有出色的界面设计,使用Darculah黑色界面主题会让你爱不释手。在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。IntelliJ IDEA分为商业版本,个人版本,与community社区版本。其中,community社区版本是免费的,但是功能性并不弱,对于学习者和个人开发者来说完全足够了。
Eclipse 【Java开源开发工具】
Eclipse平台是IBM向开放源码社区捐赠的开发框架,它之所以出名并不是因为IBM宣称投入开发的资金总数 —4千万美元,而是因为如此巨大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系结构。
NetBeans【Java开源开发工具】
NetBeans IDE 是一个为软件开发者提供的自由、开源的集成开发环境。您可以从中获得您所需要的所有工具,用Java、C/C++ 甚至是Ruby 来创建专业的桌面应用程序、企业应用程序、web 和移动应用程序。此IDE 可以在多种平台上运行,包括Windows、Linux、Mac OS X以及Solaris;它易于安装且非常方便使用。
XPlanner【Java开源项目管理】
XPlanner 一个基于Web的XP团队计划和跟踪工具。XP独特的开发概念如iteration、user stories等,XPlanner都提供了相对应的的管理工具,XPlanner支持XP开发流程,并解决利用XP思想来开发项目所碰到的问题。XPlanner特点包括:简单的模型规划,虚拟笔记卡(Virtual note cards),iterations、user stories与工作记录的追踪,未完成stories将自动迭代,工作时间追踪,生成团队效率,个人工时报表,SOAP界面支持。
HSQLDB【Java开源DBMS数据库】
HSQLDB(Hypersonic SQL)是纯Java开发的关系型数据库,并提供JDBC驱动存取数据。支持ANSI-92 标准SQL语法。而且他占的空间很小。大约只有160K,拥有快速的数据库引擎。
Liferay【Java开源Portal门户】
代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts 框架技术,基于XML的portlet配置文件可以自由地动态扩展,使用了Web Services来支持一些远程信息的获取,使用Apache Lucene实现全文检索功能。
JetSpeed 【Java开源Portal门户】
Jetspeed是一个开放源代码的企业信息门户(EIP)的实现,使用的技术是Java和XML。用户可以使用浏览器,支持WAP协议的手机或者其它的设备访问Jetspeed架设的信息门户获取信息。Jetspeed扮演着信息集中器的角色,它能够把信息集中起来并且很容易地提供给用户。
JOnAS 【Java开源J2EE服务器】
JOnAS是一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保符合Servlet 2.3和JSP 1.2规范。JOnAS服务器依赖或实现以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail。
JFox3.0 【Java开源J2EE服务器】
JFox是Open Source Java EE Application Server,致力于提供轻量级的Java EE应用服务器,从3.0开始,JFox提供了一个支持模块化的MVC框架,以简化EJB以及Web应用的开发! 如果您正在寻找一个简单、轻量、高效、完善的Java EE开发平台,那么JFox正是您需要的。 软件架构作为一个概念,体现在技术和业务两个方面。
从技术角度来说:软件架构随着技术的革新不断地更新其内容,软件架构建立于当前技术和一些基本原则的基础之上。
基本原则:分层原则、模块化原则、接口实现分离原则、细节隐藏原则、依赖倒置原则 平台
Java平台由Java虚拟机(Java Virtual Machine)和Java应用编程接口(Application ProgrammingInterface、简称API)构成。Java应用编程接口为此提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用 编程接口已经从1.1x版发展到1.2版。常用的Java平台基于Java1.5,最近版本为Java1.8。
Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。
Java SE Java SE(Java Platform,Standard Edition)。Java SE 以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。Java SE 包含了支持Java Web 服务开发的类,并为Java Platform,Enterprise Edition(Java EE)提供基础。 Java EE Java EE(Java Platform,Enterprise Edition)。这个版本以前称为J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web 2.0 应用程序。 Java ME Java ME(Java Platform,Micro Edition)。这个版本以前称为J2ME,也叫K-JAVA。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

‘贰’ 生产环境使用zabbix一般监控哪些

Zabbix支持的主要监控方式
Zabbix主要有Agent, Trapper, SNMP, JMX, IPMI这几种监控方式,下面主要就监控原理和优缺点介绍一下这几种方式。

Zabbix支持的主要监控方式
Agent监控方式
Trapper监控方式
SNMP监控方式
JMX监控方式
IPMI监控方式
结论

Agent监控方式
在Agent监控方式下,zabbix-agent会主动收集本机的监控信息并通过TCP协议与zabbix-server传递信息。Agent监控方式分为主动和被动模式。在被动模式下,zabbix-agent监听10050端口,等待zabbix-server的监控信息收集信息请求;在主动模式下,zabbix-agent收集监控信息并通过10050端口主动将数据传给zabbix-server所在服务器的10051端口。
优点:
是zabbix最常用的监控方式,监测指标深入细致有针对性。
内置监控功能强大,内置监控项目丰富。
TCP方式实现通讯,可靠性也有保证。
缺点:
需要在被监控机器上安装zabbix-agent客户端,部署相对麻烦,最初需要逐个机器安装代理软件。
zabbix-agent客户端运行在被监控机上,会收集本机信息。
Trapper监控方式
Trapper监控方式使用zabbix-sender程序主动向zabbix-server发送数据。key的名称和发送的数据内容都可以灵活定义。发送的信息采用JSON格式,遵循zabbix-sender协议。可以自定义脚本利用zabbix-sender协议来向zabbix-server发送信息。
优点:
不需要在被监控机器安装zabbix-agent
不收集被监控机器的信息
可以自定义发送的信息内容
可以使用自定义脚本发送信息
缺点:
需要自定义发送的信息内容
无内置监控项目
SNMP监控方式
SNMP全称Simple Network Management Protocol,即网络管理协议,包括进程管理和被管理设备两部分。作为一种国际通用的网络管理协议被广泛的应用于对各种交换机,路由器等网络设备的管理上,而现在也越来越多被用于对服务器的监控上。
优点:
服务器一旦部署SNMPAgent,任何能实现SNMP协议的软件都可对其进行监测。
通过这种手段进行监测不需知道被监测服务器的用户名与密码,比较安尺冲烂全。
缺点:
很多服务器并非默认安装SNMPAgent,如果要通过这种方式监测则需要对所有服务器安装部署。
能监测的参数指标比较固定不够深入,无法满足用户的特殊需求。
由于SNMP协议是通过UDP方式实现的,在网络状况不佳的情况下其可靠性难以保证。
JMX监控方式
JMX,全称Java Management Extensions,即Java管理拓展,是Java平台为应用程序,设备,系统等植入管理功能的框架。在zabbix中,JMX数据的获取由zabbix-java-gateway代理程序来负责数据的采陵漏集判亮。
优点:
可以详细地监控各类Java程序的运行状态。
缺点:
被监控机上需要安装zabbix-java-gateway
IPMI监控方式
IPMI,全称Intelligent Platform Management Interface,即智能平台管理接口,原本是Intel架构中企业系统的周边设备所采用的一种工业标准,后来成为业界通用的标准。用户可以利用IPMI监视服务器的物理特征,如温度,电压,电扇工作状态,电源供应以及机箱入侵等指标。
结论
根据以上对zabbix各主要监控方式的梳理,结论如下:
根据被监控机器的环境和客户要求选用适当的监控方式,可同时配合使用多种监控方式。
有条件在被监控机上部署zabbix-agent客户端时,该方法为第一选择,因为其功能强大且配置相对简便。
需要自定义脚本或者监控信息时,可使用trapper方式,即使用zabbix-sender程序或者自定义脚本遵循zabbix-sender协议,以JSON形式,通过TCP发送自定义信息。

‘叁’ jmx的入门准备工作

JMX学习总结 1.产生背景
要了解 JMX,我们就必须对当前的 IT 管理系统有一个初步的了解。随着企业 IT 规模的不断增长,IT 资源(IT resource)数量不断增加,IT 资源的分布也越来越分散。可以想象,甚至对于一家只有几百台 PC 公司的 IT 管理人员来说,分发一个安全补丁并且保证其在每台 PC 上的安装,如果只依赖人工来完成那简直就是一场噩梦。这样,IT 管理系统就应运而生。
然而,CPU、网卡、存储阵列是 IT 资源;OS、MS Office、Oracle database、IBM Websphere 也是 IT 资源。IT 管理系统若要对这些 IT 资源进行管理,就必须对这些管理对象有所了解:形形色色的 IT 资源就像是说着不同语言的人:Oralce 数据库表达内存紧张的方式和 Window XP 是绝然不同的, 而 IT 管理系统就像建造通天塔的经理,必须精通所有的语言, 这几乎是一个不可能完成的任务。

2.JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

3.

4.框架结构

图 1. 管理系统构架

上图分析了管理系统的基本构架模式。其中 Agent / SubAgent 起到的就是翻译的作用:把 IT 资源报告的消息以管理系统能理解的方式传送出去。

为什么需要 Agent 和 SubAgent 两层体系呢?这里有两个现实的原因:

管理系统一般是一个中央控制的控制软件,而 SubAgent 直接监控一些资源,往往和这些资源分布在同一物理位置。当这些 SubAgent 把状态信息传输到管理系统或者传达管理系统的控制指令的时候,需要提供一些网络传输的功能。
管理系统的消息是有一定规范的,消息的翻译本身是件复杂而枯燥的事情。
一般来说,管理系统会将同一物理分布或者功能类似的 SubAgent 分组成一组,由一个共用的 Agent 加以管理。在这个 Agent 里封装了 1 和 2 的功能。
JMX 和管理系统
JMX 既是 Java 管理系统的一个标准,一个规范,也是一个接口,一个框架。图 2 展示了 JMX 的基本架构。
图 2. JMX 构架

JMX 是管理系统和资源之间的一个接口,它定义了管理系统和资源之间交互的标准。
javax.management.MBeanServer 实现了 Agent 的功能,以标准的方式给出了管理系统访问 JMX 框架的接口。
javax.management.MBeans 实现了 SubAgent 的功能,以标准的方式给出了 JMX 框架访问资源的接口。
从类库的层次上看,JMX 包括了核心类库 java.lang.management 和 javax.management 包。
java.lang.management 包提供了基本的 VM 监控功能,
javax.management 包则向用户提供了扩展功能。

图 3 JMX 的操作模型

5.概念

>>>> MBeanManaged Bean的简称,是一个被管理的java对象,在JMX中MBean代表一个被管理的资源(设备,应用程序等)实例。通过操作MBean暴露一系列方法和属性来操作资源。MBean包含4种类型的MBean1.Standard MBeans标准MBeans的设计和实现是最简单的,MBean接口中定义需要暴露的属性和操作,约定MBean接口名字后添加后缀MBean,例如NameMBean.java,实现类名称 name.java2.Dynamic MBeans动态MBeans 在运行期暴露自己的管理接口,MBean实现类需要实现一个特定的接口DynamicMBean。接口中的方法用来动态获取MBean的属性和方法方法如图:3.Open MBean Open MBean也是一种dynamic MBeans,实现DynamicMBean接口。与dynamicMBean 不同的是 Open MBean使用了几种预定义的数据类型提供了更复杂的metadata数据。 Open MBean和dynamic MBean的区别在于是否返回OpenMBeanInfo,它是MBeanInfo的子类4.Model MBean Model MBean也是一种dynamic MBeans,它是预制的、通用的和动态的 MBean 类,已经包含了所有必要缺省行为的实现,并允许在运行时添加或覆盖需要定制的那些实现,JMX规范规定该类必须实现为javax.management.modelmbean.RequiredModelMBean,模型管理构件具有以下新的特点:
1)持久性
定义了持久机制,可以利用Java的序列化或JDBC来存储模型MBean的状态。
2)通知和日志功能
能记录每一个发出的通知,并能自动发出属性变化通知。
3)属性值缓存
具有缓存属性值的能力MBeanServer MBeanServer是MBean 的容器。MBeanServer管理这些MBean,并且通过代理外界对它们的访问。MBeanServer提供了一种注册机制,通过注册Adaptor和Connector,以及MBean到MBeanServer,并且通过代理外界对它们的访问。外界可以通过名字来得到相应的MBean实例。JMX agentAgent只是一个Java进程,它包括这个MBeanServer和一系列附加的MbeanService。当然这些Service也是通过MBean的形式来发布。JMX Agent通过各种各样的Adapter和Connector来与外界(JVM之外)进行通信。JMX Agent可以包含各种不同的协议适配器和连接器连接器 Connector连接器是可以连接MBeanServer,并使远程的java client可以访问该服务。连接器包含 客户端连接器(connector client)和服务器连接器(connector server).服务器连接器链接MBean Server 和 监听客户端的连接请求。客户端连接器任务是查找connector server服务并建立连接。client 和server通常在不同机器的不同JVM中。MX Remote API 定义了标准的连接器 RMI Connector,它通过 RMI 提供了对 MBeanServer 的远程访问。 使用 RMI 将客户端请求传输到远程 MBean 服务器。MX Remote API 还定义了一个可选协议,名为 JMXMP(JMX 消息协议)。JMXMP 基于 TCP 连接上的序列化 Java 对象(在可选包 javax.management.remote.message 中定义)。实现此协议的连接器称为 JMXMP Connector。也可以使用 JMXConnectorFactory 提供的用户定义的连接器协议和可选的通用连接器RMI Connector 使用 RMI 将客户端请求传输到远程 MBean 服务器,RMI Connector支持 RMI 的 JRMP(默认)和 IIOP 传输方式。连接器地址
服务器生成的连接器地址
service:jmx:rmi://host:port 返回如下所示的 JMXServiceURL:service:jmx:rmi://host:port/stub/XXXX
service:jmx:iiop://host:port 返回如下所示的 JMXServiceURL:service:jmx:iiop://host:port/ior/IOR:XXXX
基于目录条目的连接器地址
service:jmx:rmi://host:port/jndi/jndi-name
service:jmx:iiop://host:port/jndi/jndi-name
host 和 :port 均可忽略。
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname
第一个 rmi: 指定 RMI 连接器,第二个 rmi: 指定 RMI 注册表service:jmx:iiop://ignoredhost/jndi/ldap://dirhost:9999/cn=this,ou=that其中ldap://dirhost:9999/cn=this,ou=that 表示 LDAP 目录中的 cn=this,ou=that 条目,该目录在运行主机 dirhost 的端口 9999 上。协议适配器 Adapter协议适配器通过特定的协议提供了一张注册在MBean服务器的管理构件的视图。例如,一个HTML适配器可以将所有注册过的管理构件显示在Web 页面上。不同的协议,提供不同的视图。Adapter和Connector的区别在于:Adapter 是使用某种协议(HTTP或者SNMP)来与JMX Agent获得联系,Agent端会有一个对象(Adapter)来处理有关协议的细节。比如SNMP Adapter和HTTP Adapter。Connector 在Agent端和client端都必须有这样一个对象来处理相应的请求与应答。比如RMI Connector。RMI Remote Method Invocation 的简称,RMI是面向对象的远程调用, RMI采用JRMP(Java Remote Method Protocol)通讯协议,是构建在TCP/IP协议上的一种远程调用方法。RMI 允许一个对象使其方法调用对驻留在其它虚拟机,甚至其它主机上的对象可用。RMI调用机制 -----RMI 采用stubs 和 skeletons 来进行远程对象(remote object)的通讯。stub 充当远程对象的客户端代理,有着和远程对象相同的远程接口,远程对象的调用实际是通过调用该对象的客户端代理对象stub来完成的。 对于JNDI技术,所有的可用服务信息都将注册在JNDI服务器,让客户端通过RMI机制调用应用程序服务器远程接口时,应用程序服务器就会根据JNDI 服务器的服务注册信息定位到相应的服务提供连接,等待应用程序服务器与后台服务器连接形成之后,JNDI将不再参与到连接当中(JNDI可以理解为注册服 务提供)LDAP OSL X.500目录是基于OSI网络协议的目录服务协议 ,500的缺点是不支持TCP/IP,而是支持OSI协议 , 在此前提下,也就产生了访问X500目录的网关--LDAP . LDAP(Lightweight Directory Access Protocal, 轻型目录访问协议),是针对以X500目录为主的目录服务的前端访问协议,是OSL X.500目录访问网关. LDAP就被设计成使用TCP/IP访问OSI 目录服务的服务协议,而随着互联网成为网络的主流,LDAP也成为一个具备目录的大部分服务的协议。 LDAP主要解决目录服务的前端访问形式,而不是对 目录服务本身制定的的协议,理论上,LDAP支持后台的任何存储形式,包括X500,关系数据库,文本数据库或文件目录等。LDAP继承了X500目录的 大部分定义,无论是访问样式还是语法都与X500相似。JINIJini( Java Intelligent Network Infrastructure)是一个主动的、响应式的分布式基础结构,它提供了在分布式环境中进行服务的建立、查找、通讯和调用的一整套机制。
Jini系统架构HTTPHTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Application layer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和 HTTP协议等SNMPSNMP(Simple Network Management Protocol,简单网络管理协议)
>>>> 实现的协议适配器和连接器

当前已经实现的协议适配器和连接器包括:
1)RMI连接器
2)SNMP协议适配器
3)IIOP协议适配器
4)HTML协议适配器
5)HTTP连接器

JMX 标准提供了四种不同的 MBean:

Standard MBean 直接实现用于管理对象的方法,既可以通过实现一个由程序员定义的、类名以 “MBean” 结束的接口,也可以使用一个以一个类作为构造函数参数的 Standard MBean 实例,加上一个可选的接口类规范。这个接口可以开放用于管理的部分对象方法。
Dynamic MBean 用属性访问器动态地访问属性,并用一个一般化的 invoke() 方法调用方法。可用的方法是在 MBeanInfo 接口中指定的。这种方式更灵活,但是不具有像 Standard MBean 那样的类型安全性。它极大地降低了耦合性,可管理的 POJO(纯粹的老式 Java 对象)不需要实现特定的接口。
Model MBean 提供了一个改进的抽象层,并扩展了 Dynamic MBean 模型以进一步减少对给定实现的依赖性。这对于可能使用多个版本的 JVM 或者需要用松散耦合管理第三方类的情况会有帮助。Dynamic MBean 与 Model MBean 之间的主要区别是,在 Model MBean 中有额外的元数据。
Open MBean 是受限的 Model MBean,它限制类型为固定的一组类型,以得到最大的可移植性。通过限制数据类型,可以使用更多的适配器,并且像 SMTP 这样的技术可以更容易适应 Java 应用程序的管理。这种变体还指定了数组和表等标准结构以改进复合对象的管理。
如 果要同时控制客户机和服务器,那么 Standard MBean 是最容易实现的一种变体。它们的优点是有类型,但是如果在更一般化的管理控制台环境中使用时会缺少一些灵活性。如果计划使用 Dynamic MBean,那么您也可以更一步使用 Model MBean,在大多数情况下它会改善抽象层而几乎不会增加复杂性。Open MBean 是是可移植性最高的一种变体,如果需要开放复合对象,那么它是惟一的方法。不幸的是,在 Open MBean 中开放复合结构所需要的代码数量过多,只有在需要高级的商业管理解决方案时才合算。

JMX 还支持使用带过滤器和广播器的事件模型的通知。为此目的,Standard MBean 需要声明一个 MBeanInfo 元数据描述。 Standard MBean 实现通常在内部构造这些内容,开发人员不能直接看到它们。在本文后面,您会看到如何用 Model MBean 元数据的 XML 描述符格式和 Spring 的 JMX 支持进行实际上透明的配置。

>>>>使用 MBean 的过程1.创建一个 MBServer:MBeanServe2.获得管理资源用的 MBean:serverBean3.给这个 MBean 一个 ObjectName:serverMBeanName4.将 serverBean 以 serverMBeanName 注册到 mBeanServer 上去>>>>通知机制要让MBean能发出通知,MBean必须实现接口NotificationBroadcaster或它的子接口NotificationEmitter.发送通知时要做的是构建javax.management.Notification类的实例或Notification 的子类,然后以参数形式传递这个实例到.sendNotification.方法中
>>>>JMX 代理内幕

揭示了典型 JMX 代理的内部构造。请注意,代理内部的四种主要组件是 MBean 服务器、一组代理服务、连接器和协议适配器以及定制代理逻辑。

MBean 服务器

MBean 服务器是代理内部的核心组件。所有 MBean 在可以通过远程应用程序访问之前都必须向 MBean 服务器注册。当使用 MBean 服务器时,通过唯一的对象名对已注册的 MBean 进行寻址。远程管理器应用程序(或分布式服务)只能通过 MBean 的管理接口(已公开的属性、操作和事件)发现和访问 MBean。

代理服务

代理还提供了一组代理服务,定制代理逻辑可以使用它们在 MBean 服务器中对已注册的 MBean 进行操作。为了符合 JMX 1.1,这些服务是必需的 ―所有代理都必须提供它们。 有趣的是,可以用 MBean 本身的形式实现这些服务。以 MBean 的形式实现服务有几个优点:

可以通过 Manager 组件或 EMS 远程访问该服务的操作。
通过从远程管理器应用程序进行访问,EMS 可以远程地管理服务本身。
可以通过下载 MBean 在运行时动态地执行服务逻辑的更新。
表 3 显示了 JMX 1.1 规范中定义的一组代理服务。

表 3. JMX 1.1 所需的代理服务

m-let 或管理 Applet 服务 支持跨网络从 URL 位置装入动态类(请参阅 javax.management.loading.MLetMBean 和相关联的类/接口)。
监视器服务 将代价高昂的远程轮询操作转换成本地操作;监控 MBean 属性的特定更改并在观察到更改时发送事件。
计时器服务 经历了指定的时间量后发送事件,或以指定时间间隔定期发送事件(请参阅 javax.management.monitor.MonitorMBean 和相关的类/接口)。
关系服务 支持 MBean 之间的关系定义,并强制关系的完整性(请参阅 javax.management.relation.RelationServiceMBean 和相关的类/接口)。

增值代理逻辑

增值代理逻辑通常是编写的代码。它是能够提供本地化智能的定制代理逻辑,用来管理向该代理注册的 JMX 可管理资源。例如,如果我们有两个冗余的应用程序服务器群集,就可以创建定制代理,监控负载级别并且动态地将入站请求重定向到不同的群集 ― 通过对已注册的服务器的 MBean 进行操作。通常,NMS 的供应商也会提供定制逻辑。一旦分布式服务的规范得以充实,可以预言,某种特定的定制代理逻辑将可以与定制远程 JMX 管理器组件良好地协作,以提供更高级别的网络管理功能。

连接器和协议适配器

代理不与分布式服务、NMS 或其它管理应用程序直接通信。而是使用连接器和协议适配器。这种体系结构与 J2EE 连接器体系结构(J2EE Connector Architecture)是一致的(请参阅 参考资料)。协议适配器是一种软件组件,它通过标准化协议(如 HTTP 和 SNMP)提供对代理管理的资源的访问。

连 接器是一种专用软件组件,它提供了到代理和/或该代理上的受管资源的远程接口(通常使用诸如 CORBA 或 RMI 这样的远程过程调用技术来完成 ― 为了安全性通常通过 SSL)。当代理有多个活动的连接器和协议时,可以通过多个异构的应用程序或 NMS 同步地访问受管资源。可以用协议适配器来提供对现有的和已建立的 NMS 的向后兼容性。例如,我们可以为支持这个标准的 NMS 创建 通用信息模型/基于 Web 的企业管理(CIM/WEBM)适配器,或者可以创建 电信管理网络(TMN)协议适配器来启用由 JMX 代理管理的电信资源上的 操作、管理和维护(OAM)。JMX 连接器和协议适配器的精确规范属于正在同时开发的规范的范畴(请参阅 参考资料)。

>>>> 安全性

到目前为止都还不错。现在是面对被甩在一边的重要问题 —— 安全性 —— 的时候了。不如果不想让谁的应用程序代码访问和修改虚拟机,该怎么办?有什么选项可用么? 可以设置一些系统属性,来控制访问级别和虚拟机数据从 JMX 代理向管理客户机传递虚拟机数据的方式。这些属性分成两类:口令认证 和安全套接字层(SSL)。

使用命令行选项

为了让 5.0 兼容的虚拟机可以被监视和管理,需要用以下命令行选项设置平台 JMX 代理的端口号:

-Dcom.sun.management.jmxremote.port=<number>

如果不介意谁通过这个端口访问虚拟机,也可以添加以下两个选项,关闭口令认证和 SSL 加密(这两项默认都是开启的):

-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false

在开发 java.lang.management 客户机代码,而且想方便地监视另一台虚拟机时,一起使用这三个选项会很方便。在生产环境中,则需要设置口令控制或 SSL(或者两者都要设置)。

口令认证

在JDK 的 jre/lib/management 目录中,可以找到一个叫做 jmxremote.password.template 的文件。这个文件定义了两个角色的用户名和口令。第一个是监视 角色,允许访问只读的管理函数;第二个是控制 角色,允许访问读写函数。取决于需要的访问级别,客户可以用 monitorRole 或 controlRole 用户名进行认证。为了确保只有认证的用户才能访问,需要做以下工作:

把 jmxremote.password.template 的内容拷贝到叫做 jmxremote.password 的文件中,并取消掉文件末尾定义用户名和口令部分的注释,根据需要修改口令。
修改 jmxremote.password 的许可,只让所有者能够读取和修改它。(在 UNIX 和 UNIX 类的系统上,把许可设置成 600。在 Microsoft Windows 上,请按照 “How to secure a password file on Microsoft Windows systems” 一文中的说明操作,可以在 参考资料 中找到这篇文章的链接。)
在启动虚拟机时,用以下命令行选项指定要使用的口令文件的位置:
-Dcom.sun.management.jmxremote.password.file=<file-path>

从管理客户的角度来说,需要提供正确的用户名/口令组合来访问开启了认证的虚拟机。如果客户是 JConsole,这很简单:在初始的 Connection 选项卡中提供了用户名和口令字段

热点内容
滑板鞋脚本视频 发布:2025-02-02 09:48:54 浏览:432
群晖怎么玩安卓模拟器 发布:2025-02-02 09:45:23 浏览:557
三星安卓12彩蛋怎么玩 发布:2025-02-02 09:44:39 浏览:743
电脑显示连接服务器错误 发布:2025-02-02 09:24:10 浏览:537
瑞芯微开发板编译 发布:2025-02-02 09:22:54 浏览:146
linux虚拟机用gcc编译时显示错误 发布:2025-02-02 09:14:01 浏览:232
java驼峰 发布:2025-02-02 09:13:26 浏览:651
魔兽脚本怎么用 发布:2025-02-02 09:10:28 浏览:532
linuxadobe 发布:2025-02-02 09:09:43 浏览:212
sql2000数据库连接 发布:2025-02-02 09:09:43 浏览:726