`
yunzhu
  • 浏览: 1147134 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
B2b19957-cda7-3a9e-83a0-418743feb0ca
监控应用服务器
浏览量:110204
2e8be8be-e51f-346c-bcdd-12623c9aa820
Web前端开发
浏览量:119887
Bfa5df64-a623-34b9-85b8-ef3ce2aed758
经典异常的解决
浏览量:204810
社区版块
存档分类
最新评论

监控WebSphere解决方案(监控应用服务器系列文章)

阅读更多

前言:做了一个监控应用服务器的项目(支持Tocmat、WebSphere、WebLogic各版本), 过程也算是磕磕绊绊,由于网上缺少相关资料,或者深陷于知识的海洋难以寻觅到有效的资料,因而走过不少弯路,遇过不少困难。为了留下点印记,给后来人留下 点经验之谈,助之少走弯路,故将这些经验整理出来,与大家分享。水平有限,难免疏漏,还望指正。如有疑问,欢迎留言 

 

 

监控WebSphere常见的有两种方案,如下:

 

方案一、通过perfServletApp进行监控

      perfServletApp项目是由WebSphere提供的(在安装目录下可以找到PerfServletApp.ear ,默认没有部署),用于简单的端对端检索性能数据, IBM或第三方供应商提供的任何工具都可以处理此性能数据。通过servlet访问,返回XML 格式的信息,然后解析XML即可获得相应的监控数据。

方案二、使用JMX 接口开发监控程序
      通过使用PerfMBean或个别MBean,您可使用AdminClient API获取性能监控基础结构( PMI )数据。

两种方案优劣比较

通过 perfServletApp 进行监控

使用 JMX 接口开发监控程序

可以使用现有的成熟代码,减少工作量

全部代码需要从零开始

支持各不同版本时无差别

支持各不同版本比较麻烦,每个版本用的 JAR 包不一样,实现机制也不一样

可能存在特殊需求而 perfServlet 不能满足的情况

可支配性强,可以访问到 WAS 提供的所有 MBean

 

一、 通过 perfServletApp 进行监控

perfServletApp 项目是由 WebSphere 提供的(在安装目录下可以找到 PerfServletApp.ear ,默认没有部署),用于简单的端对端检索性能数据, IBM 或第三方供应商提供的任何工具都可以处理此性能数据。通过 servlet 访问,返回 XML 格式的信息。

 

安装 perfServletApp

1.   安装 perfServletApp.ear

在管理控制台,点击左侧树中的应用程序 节点。点击企业应用程序

右侧的表中将列出已安装的所有应用程序。检查 perfServletApp 是否存在。如果不存在,则点击安装 以安装 perfServletApp.ear 文件(默认情况下该文件位于 <WebSphere Installed Location>/WebSphere/AppServer/installableApps 目录下,例如: D:/Program Files/WebSphere/AppServer/installableApps/perfServletApp.ear )。然后启动这个应用程序。

2.    在浏览器中打开 http://127.0.0.1:9080/wasPerfTool/servlet/perfservlet 链接,可以看到返回的 XML 文件,第一行是这样的格式:

      < PerformanceMonitor responseStatus =" success " version =" 7.0.0 .5 "> ,这说明 perfServletApp 安装成功了。

 

配置 perfServletApp

如果是 WAS6.1 ,打开 http://127.0.0.1:9080/wasPerfTool/servlet/perfservlet 会返回 XML 格式的错误信息,第一行是这样的格式:

     < PerformanceMonitor responseStatus =" failed " version =" 6.1.0 .0 ">

并且后面会带有“由于凭证不足或凭证为空”之类的错误提示。

 

这时需要进行一些配置:

 

1 ■  启用应用程序安全性

 

 

 

2 ■  perfServletApp下进行安全用户的配置





 

3 ■  保存修改后重启WAS即可

 

通过perfServletApp获取监控数据

启动WAS后打开下面的链接可以查看帮助文档:

http://127.0.0.1:9080/wasPerfTool/servlet/

 

获取监控数据的URL格式为:

http://perfServlet_Host:port/wasPerfTool/servlet/perfservlet[?node=<node>&server=<server>&module=<module>&version=5]

 

在浏览器地址栏中输入此 URL ,转向此地址后提示输入用户名密码,然后就可以看到返回了 XML格式的信息。

 

注意:加上 &version=5  则返回的格式是5.x ,如果不加,则返回的格式6.0

 

 

例子:获取JVM运行时性能数据

 

URL 为,可以通过浏览器打开,项目中则通过Java代码访问URL:

http://127.0.0.1:9080/wasPerfTool/servlet/perfservlet?node=IE361-PCNode01&server=server1&module=jvmRuntimeModule

 

返回 XML 格式的 JVM 运行时性能数据:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE PerformanceMonitor (View Source for full doctype...)>
<PerformanceMonitor responseStatus="success" version="7.0.0.5">
<Node name="IE361-PCNode01">
<Server name="server1">
<Stat name="JVM 运行时">
<BoundedRangeStatisticID="1" highWaterMark="91147" integral="0.0" lastSampleTime="1294795486836" lowWaterMark="51200" lowerBound="51200" mean="0.0" name="HeapSize" startTime="1294794248020" unit="千字节" upperBound="262144" value="91147" />
<CountStatisticID="3" count="57698" lastSampleTime="1294795830112" name="UsedMemory" startTime="1294794248020" unit="千字节" />
<CountStatisticID="4" count="1582" lastSampleTime="1294795830112" name="UpTime" startTime="1294794248020" unit="SECOND" />
<CountStatisticID="5" count="0" lastSampleTime="1294795830112" name="ProcessCpuUsage" startTime="1294794248020" unit="不适用" />
</Stat>
</Server>
</Node>
</PerformanceMonitor>

 

在Java程序中对获得XML进行解析,即可获得相关的监控数据。

 

在Java程序中访问perfServletApp

通过浏览器访问perfServletApp时会提示输入用户名密码,那么在Java程序中又如何访问呢?

如果像访问一般的URL一样,直接访问,会提示鉴权错误,因为perfServletApp的URL是被保护的。

 

以下代码演示如何访问受保护的URL:

URL url = "http://127.0.0.1:9080/wasPerfTool/servlet/perfservlet?node=IE361-PCNode01&server=server1&module=jvmRuntimeModule");
URLConnection conn = (URLConnection) url.openConnection();

// URL授权访问 -- Begin
String password = "admin:chenfeng"; // manager角色的用户
String encodedPassword = new BASE64Encoder()
		.encode(password.getBytes());
conn.setRequestProperty("Authorization", "Basic " + encodedPassword);
// URL授权访问 -- End

InputStream is = conn.getInputStream();
BufferedReader bufreader = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = bufreader.readLine()) != null) {
	System.out.println(line);
}

 

 

二、使用JMX接口开发监控程序

通过使用 PerfMBean 或个别 MBean ,您可使用 AdminClient API 获取性能监控基础结构( PMI )数据。

 

所需要的JAR包:

    ◆ com.ibm.ws.admin.client_7.0.0.jar

    ◆ ibmjgssprovider.jar

    ◆ ibmkeycert.jar

1 . WebSphere不启用管理安全性

如果WebSphere不启用管理安全性的话很简单,直接就能访问AdminClient API,看下面的代码:

Properties adminProps = new Properties();
adminProps.setProperty("type", "soap");
adminProps.setProperty("host", "127.0.0.1");
adminProps.setProperty("port", "8880");
AdminClient adminClient = AdminClientFactory.createAdminClient(adminProps);
String domainName = adminClient.getDomainName();

 

注意:要使上面的代码运行正确,必须关闭 WAS6.1 的管理安全性。

 

关闭WAS6.1的管理安全性的方法

登录 WebSphere 的集成解决方案控制台,进入安全性  --> 全局安全性  --> 去除“启用管理安全性”的勾选  --> 点击“应用”  --> 保存到主配置  --> 重启 WAS

 

不过出于安全性考虑,一般实际环境下的WebSphere是不可能关闭管理安全性的。

2 . WebSphere启用管理安全性

如果WebSphere已启用管理安全性,则需要先配置证书才能访问AdminClient API。在WAS6.0 里面,这个步骤很简单,默认的证书能直接用,但是 WAS6.1 就不行,默认的证书不能用,必须生成自己的证书并配置到WAS6.1里面。

 

WAS6.1生成和配置证书的方法

该部分本来是直接加入到本文中的,但是导致文章太长,可读性差,所以单独分了出去,地址如下,请移驾:

http://yunzhu.iteye.com/blog/1825874

 

 

使用证书监控WebSphere的示例代码 

Properties adminProps = new Properties();
adminProps.setProperty(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
adminProps.setProperty(AdminClient.CONNECTOR_HOST, "localhost");
adminProps.setProperty(AdminClient.CONNECTOR_PORT, "8880");
adminProps.setProperty(AdminClient.USERNAME, "chenfeng");
adminProps.setProperty(AdminClient.PASSWORD, "chenfeng");
adminProps.setProperty(AdminClient.CACHE_DISABLED, "false");

// WebSphere服务器是否已启用管理安全性
adminProps.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, "true");

adminProps.setProperty(AdminClient.CONNECTOR_AUTO_ACCEPT_SIGNER, "true");
adminProps.setProperty("javax.net.ssl.trustStore","D:/JavaTools/IBM/MyKey/trust.jks");
adminProps.setProperty("javax.net.ssl.keyStore","D:/JavaTools/IBM/MyKey/store.jks");
adminProps.setProperty("javax.net.ssl.trustStorePassword","chenfeng222");
adminProps.setProperty("javax.net.ssl.keyStorePassword", "chenfeng111");

AdminClient adminClient = AdminClientFactory.createAdminClient(adminProps);

String domainName = adminClient.getDomainName();
System.out.println("domainName" + domainName );

ObjectName objName = new ObjectName("WebSphere:name=JVM,process=server1,platform=proxy,node=YNF-PCNode01,j2eeType=JVM,J2EEServer=server1,version=6.1.0.0,type=JVM,mbeanIdentifier=JVM,cell=YNF-PCNode01Cell,spec=1.0"); 
Object freeMemory= adminClient.getAttribute(objName, "freeMemory");
System.out.println("freeMemory" + freeMemory);

 

上面的例子只是简单地获取DomainName和空闲内存,实际开发中采集具体的数据,则需要查询API,以获得详细的ObjectName。 

 

几个重要的官方文档地址

(注:如果网址变更了导致无法访问,请自行根据标题搜索)

 

一、官方教程:开发管理客户机程序
http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.nd.doc%2Finfo%2Fae%2Fae%2Ftjmx_develop.html

 

二、官方教程:使用JMX接口开发自己的监视应用程序
http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Ftprf_pmijmx.html

 

三、官方AdminClient接口文档
http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.javadoc.doc%2Fpublic_html%2Fapi%2Fcom%2Fibm%2Fwebsphere%2Fmanagement%2FAdminClient.html

 

四、官方Mbean接口API
http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.javadoc.doc/public_html/mbeandocs/index.html

 

相信有了以上的入门教程,加上这几个地址,剩下的就没有什么大的技术问题了,剩下的就是程序的架构和编码的实现了。希望对你有所帮助。 

 

  • 大小: 78.2 KB
  • 大小: 61.4 KB
  • 大小: 11.6 KB
  • 大小: 71.1 KB
  • 大小: 60.9 KB
5
1
分享到:
评论
12 楼 小也爱吃鱼 2016-12-17  
可以把底下那四份文档发我邮箱吗,链接失效了,百度上也搜不到
11 楼 hlr5688 2016-11-01  
给个was的安装包吧~谢谢~~
10 楼 yunzhu 2014-07-29  
SangBillLee 写道
was7安装perfServletApp时,是不是不用设置安全用户。

应该是不用的,was 6.1才要
9 楼 SangBillLee 2014-07-29  
was7安装perfServletApp时,是不是不用设置安全用户。
8 楼 yunzhu 2014-03-31  
di1984HIT 写道
第一个方案好

是的,只要需求满足的情况下,第一个方案是最省事方便的
7 楼 di1984HIT 2014-03-31  
第一个方案好
6 楼 fncj 2013-12-18  
不错    
5 楼 zys08 2013-01-31  
was8.5都可以的啊
4 楼 yunzhu 2013-01-23  
焦志广 写道
AdminClient在那个jar包里面啊?谢谢

这个问题很有点奇怪了,方案二开头就罗列了所需要的jar包了,难道你照做了却不行吗?
3 楼 yunzhu 2013-01-23  
焦志广 写道
有监控WAS7 的么?

这个没有深究,因为我后来选择了方案一,方案二只在WAS6.1上做过技术调查。不过我猜想应该跟6.1差不多吧。
2 楼 焦志广 2013-01-23  
AdminClient在那个jar包里面啊?谢谢
1 楼 焦志广 2013-01-23  
有监控WAS7 的么?

相关推荐

    jmx监控weblogic,tomcat,websphere源码

    首先,WebLogic是由Oracle公司提供的一个全面的企业级Java应用服务器,它支持JMX来暴露管理接口,允许管理员远程监控服务器的状态、配置以及执行管理操作。通过JMX,你可以获取到WebLogic服务器的运行时信息,如JVM...

    WebSphere-应用服务器-中间件

    这款强大的服务器平台提供了全面的集成解决方案,包括应用程序服务器、交易监控、消息传递、安全性和集群等功能。 【WebSphere 应用服务器的核心概念】: 1. **Java EE**: WAS 是 Java EE 规范的实现者,它支持诸如...

    基于Apache Tomcat的一站式Java应用服务器解决方案.pdf

    基于Apache Tomcat的一站式Java应用服务器解决方案,包括系统整体架构设计以及监控运维管理平台Open Tomcat的构建。Open Tomcat通过松散耦合的方式对各应用节点进行管理,并集成了开源监控工具PsiProbe,同时为了...

    websphere解决方案

    【标题】:“Websphere解决方案”揭示了IBM的中间件技术在企业级应用集成中的核心作用,为企业构建高效、可扩展的IT基础设施提供了强大的支持。Websphere作为全球广泛采用的企业级应用服务器平台,它的解决方案旨在...

    WebSphere 应用服务器环境搭建实践指南

    WebSphere 应用服务器是IBM提供的一个强大且功能丰富的企业级Java应用程序服务器,常用于部署和管理复杂的Web应用程序。在搭建WebSphere应用服务器的生产环境时,需要考虑多个因素以确保系统的稳定性和安全性。以下...

    Apache WebSphere服务器部署方案

    Apache WebSphere服务器是业界广泛采用的一种解决方案,它能够提供强大的处理能力和灵活的扩展性。本文将详细介绍如何在Linux环境下部署Apache Web服务器,并与IBM WebSphere Application Server (WAS)集成,实现高...

    经典:WebSphere应用服务器故障诊断上机实验

    - **应用服务器**:WebSphere Application Server 6.1,这是实验的核心组件之一,也是IBM提供的高性能企业级应用服务器解决方案; - **工具**:IBM Support Assistant 4.1 及其插件,作为支持工具,用于辅助问题的...

    websphere 应用websphere 应用

    Websphere应用服务器支持多种部署模型,包括传统的J2EE模型以及更现代的微服务架构,这使得它成为众多企业的首选解决方案之一。 ### Websphere应用服务器的功能特性 1. **高性能与高可用性**:通过负载均衡、故障...

    监控启用全局安全后ND环境下的WebSphere6.1.

    - 使用JMX监控WebSphere实例的方法,包括暴露JMX MBeans、配置JMX客户端连接以及解析返回的数据。 - 如何通过管理控制台进行集群管理,例如添加或移除服务器实例,设置负载均衡策略。 - 遇到的安全问题和解决方案,...

    IBM 软件及方案演示 WebSphere3

    总的来说,IBM WebSphere不仅是一个强大的应用服务器,还是一个全面的企业级解决方案,为企业提供了一站式的应用开发、集成、管理和迁移服务。结合HATS,WebSphere能够帮助企业在保持与传统系统连接的同时,逐步迈向...

    IBM websphere 7.0 监控

    通过上述对 WebSphere Application Server 7.0 监控功能的详细介绍,我们可以看出,IBM 在这一版本中引入了许多新的特性和改进,旨在提供更加全面和灵活的性能监测解决方案。这对于那些依赖于 WebSphere 应用程序...

    IBM门户整合解决方案、存储管理解决方案、网络管理介绍

    首先,IBM WebSphere门户整合解决方案是一种先进的企业级平台,用于构建、部署和管理集成的Web应用程序和门户。它提供了一个统一的入口点,让用户能够访问多种业务应用、信息资源和协作工具。WebSphere门户支持个性...

    Websphere服务器管理和配置.pdf

    - **故障排除:** 了解常见问题及其解决方案,提高故障处理能力。 综上所述,Websphere Application Server V6不仅在技术层面具备强大的功能支持,在实际应用场景中也能为用户提供灵活且高效的管理手段。通过深入...

    resin web服务器 weblogic websphere

    WebLogic和WebSphere则是由Oracle公司和IBM公司分别推出的强大企业级Java应用服务器,它们提供了全面的集成解决方案,包括应用部署、管理、集群、安全和事务处理等功能。 **Resin 3.1.7a** Resin 3.1.7a是Resin 3...

    websphere java 部署

    WebSphere是IBM推出的一款强大的企业级应用服务器,它在Java平台上提供了一整套完善的电子商务解决方案。WebSphere的主要特点是基于开放标准、服务器为中心、可伸缩、兼容现有系统、易于部署和管理。它由多个组件...

    WebSphere应用部署手册

    同时,错误处理和日志分析也是重要的部分,手册可能提供了故障排查的技巧和常见问题解决方案。 最后,手册可能还会讨论性能调优和监控策略,包括JVM参数调整、内存管理、线程池配置等,以确保WebSphere应用在生产...

    WebSphere入门教程大合集

    WebSphere提供了全面的集成解决方案,涵盖了从开发、测试到生产的一系列生命周期管理。 二、WebSphere安装与配置 学习WebSphere,首先需要了解如何安装和配置服务器。这包括选择合适的版本(如WebSphere ...

    websphere ppt

    WebSphere是IBM提供的一个全面的集成软件平台,其核心是应用服务器,为构建、运行和监控高度可用的Web应用程序和跨平台解决方案提供了必要的中间件基础设施。本篇将重点介绍WebSphere Application Server 6.0及其...

    WebSphere

    WebSphere是IBM提供的一款强大的企业级应用程序服务器,它在IT行业中扮演着至关重要的角色,尤其在构建、部署和管理企业级Web应用程序方面。WebSphere作为IBM的中间件产品,是其软件栈的核心部分,旨在帮助企业实现...

    Websphere6.1 Edge+ND集群安装和应用部署详细说明

    在实际操作中,详细说明.pdf文档可能涵盖了每个步骤的详细过程,包括命令行选项、特定配置文件的修改、可能遇到的问题及解决方案等。由于篇幅限制,这里仅提供了一个简化的概述。在实际操作时,务必参照文档的详细...

Global site tag (gtag.js) - Google Analytics