使用Jyhon脚本和PMI模块监控WAS性能数据的优点有:

1、可以使用非交互的方式远程获取数据

2、不需要图形化模块支持

3、对各种was版本的兼容性较高

4、使用方便,官方自带

缺点也有很多:

1、官方文档不全,需要自己摸索

2、不同版本和设置环境不同时,可能会引起抛错

3、代码纠错功能很低,调试代码费时

每个jython脚本执行前最好都设置一下辅助参数,比如换行参数

lineSeparator = java.lang.System.getProperty('line.separator')

  一、获取性能前,需要明确监控对象。这里的示例方法会在部分环境中取不到数据,最好还是用遍历node或sever的方法获取到perfOName 这个监控对象。

perfName = AdminControl.completeObjectName ('type=Perf,process={server},node={node},cell={cell},*')
perfOName = AdminControl.makeObjectName (perfName)
print perfOName
print "Invoke getStatisticSet operation "

 二、明确监控对象以后,需要设定PMI监控范围和颗粒度。

staticSetType=AdminControl.invoke(perfName, 'getStatisticSet')#获取监控对象当前的性能监控范围
if staticSetType not in ('all','custom'):
pmi_server = AdminConfig.getid('/Cell:{cell}/Node:{node}/Server:{server}/')
print pmi_server
pmi = AdminConfig.list('PMIService', pmi_server)
print pmi
AdminConfig.modify(pmi, '[[synchronizedUpdate false] [enable true] [statisticSet custom]]')#修改监控范围并保存
AdminConfig.save()
#AdminNodeManagement.syncNode(node)#同步到所有节点,不建议使用,很可能引起系统报错
staticSetType='custom' if staticSetType=='custom':#设定指定的自定义监控对象
params = ['extended']
sigs = ['java.lang.String']
AdminControl.invoke_jmx (perfOName, 'setStatisticSet', params, sigs)

  三、获取监控数据

jvmName = AdminControl.completeObjectName ('type=JVM,process={server},node={node},cell={cell},*')#设定一个jvm监控对象
params = [AdminControl.makeObjectName(jvmName)]
sigs = ['javax.management.ObjectName']
configs= AdminControl.invoke_jmx(perfOName, 'getConfig', params, sigs)
print "Invoke getCustomSetString operation"
types=['UsedMemory','ProcessCpuUsage','HeapSize','GCTime','GCIntervalTime'] #选择jvm监控对象的监控指标
type_datas=[]
for type in types:
type_datas.append(configs.getDataId(type))#在日志文件里,监控指标只有一个数字代表,所以需要先用这个步骤把指标的文字名称转换为数字标号 print "Invoke setCustomSetString operation"
params = ['jvmRuntimeModule='+','.join(str(type_datas)), java.lang.Boolean ('false')]
sigs = ['java.lang.String', 'java.lang.Boolean']
AdminControl.invoke_jmx(perfOName, 'setCustomSetString', params, sigs)#给最初选定的监控对象设置选定的监控指标
print "Invoke getStatsObject operation" jvmName = AdminControl.completeObjectName ('type=JVM,process={server},node={node},cell={cell},*')
params = [AdminControl.makeObjectName (jvmName), java.lang.Boolean ('false')]
sigs = ['javax.management.ObjectName', 'java.lang.Boolean']
datas=AdminControl.invoke_jmx(perfOName, 'getStatsObject', params, sigs)#对已设定监控指标的监控对象开启监控操作,这步执行后就会开始生成新的监控日志

  

脚本调错和使用的一些小Tips:

was5.1不具备admintask命令

查看指定节点的一些JVM参数:AdminTask.showJVMProperties('[-nodeName myNode12 -serverName server1]')

列出服务器端口:AdminTask.listServerPorts('server1', '[-nodeName myNode01 -portName WC_adminhost]')

获取指定对象的id:server1 = AdminConfig.getid('/Cluster:Cluster_1/Member:myserver1/')

查看某对象类型的属性:AdminConfig.attributes('Server')  或AdminConfig.show('Server')#was5.1版本比较特殊

查看某对象类型的关联对象表:AdminConfig.defaults('Server')

列出某对象的下级属性关联对象,比如cell下面的各对象:AdminConfig.list("Cell"),上级对象是AdminConfig.parents('Node')

查看某对象的属性方法:print dir(AdminConfig)

获取对象完整名称(获取路径):print AdminConfig.getObjectName(server1)

获取帮助文档:AdminConfig.help()

获取某属性内容:memberList = AdminConfig.showAttribute(cluster, "name")

AdminServerManagement的特有方法:AdminServerManagement.showServerInfo("myNode01", "myServer1")  以及  AdminServerManagement.queryMBeans("myNode01", "myserver1", "SessionStats")

补充对象名称:server = AdminControl.completeObjectName('type=Server,*')

获取对象实例:serverOI = AdminControl.getObjectInstance(server)

官方文档参考地址:https://www.ibm.com/support/knowledgecenter/zh/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/tprf_command.html

参考地址2:https://www.ibm.com/support/knowledgecenter/zh/SSEQTP_8.5.5/com.ibm.websphere.base.iseries.doc/ae/rxml_7libserver2.html?pos=2

使用Jyhon脚本和PMI模块监控WAS性能数据的更多相关文章

  1. nGrinder二次开发之监控机器性能数据

    转载:https://blog.csdn.net/neven7/article/details/53909256 1.背景 做性能测试时,统计性能数据分为被压系统的数据和被压系统所在机器的数据,被压系 ...

  2. Python监控进程性能数据并画图保存为PDF文档

    引言 利用psutil模块(https://pypi.python.org/pypi/psutil/),可以很方便的监控系统的CPU.内存.磁盘IO.网络带宽等性能參数,下面是否代码为监控某个特定程序 ...

  3. 通过python脚本和zabbix配合监控zookeeper的节点数

    通过python脚本和zabbix配合监控zookeeper的节点数 需求描述: 在日常zabbix监控zookeeper的时候,无法通过shell来获取zookeeper的具体节点信息,没有开放具体 ...

  4. linux基础 -nginx和nfs代理 开发脚本自动部署及监控

    开发脚本自动部署及监控 1.编写脚本自动部署反向代理.web.nfs: (1).部署nginx反向代理三个web服务,调度算法使用加权轮询:  (2).所有web服务使用共享存储nfs,保证所有web ...

  5. linux开发脚本自动部署及监控

    linux开发脚本自动部署及监控 开发脚本自动部署及监控一.编写脚本自动部署反向代理.web.nfs:要求:1.部署nginx反向代理三个web服务,调度算法使用加权轮询: #!/bin/sh ngx ...

  6. 使用 Auditbeat 模块监控 shell 命令

    使用 Auditbeat 模块监控 shell 命令 Auditbeat Audited 模块可以用来监控所有用户在系统上执行的 shell 命令.在终端用户偶尔才会登录的服务器上,通常需要进行监控. ...

  7. 优化系统资源ulimit《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》

    优化系统资源ulimit<高性能Linux服务器构建实战:运维监控.性能调优与集群应用> 假设有这样一种情况,一台Linux 主机上同时登录了10个用户,在没有限制系统资源的情况下,这10 ...

  8. 分布式数据存储 - Zabbix监控MySQL性能

    Zabbix如何监控mysql性能,我们可以使用mysql自带的模板,可以监控如下内容:OPS(增删改查).mysql请求流量带宽,mysql响应流量带宽,最后会附上相应的监控图! 编写check_m ...

  9. JS脚本加载与执行对性能的影响

    高性能JavaScript-JS脚本加载与执行对性能的影响 在web产品优化准则中,很重要的一条是针对js脚本的加载和执行方式的优化.本篇文章简单描述一下其中的优化准则. 1. 脚本加载优化 1.1 ...

随机推荐

  1. HGOI 20190218 题解

    /* 又是AK局... hjc又双叒叕AK了... Hmmm...我侥幸 */ Problem A card 给出无序序列a[]可以选择一个数插入到合适的位置作为一次操作,至少多少次操作后可以把序列变 ...

  2. 超越LLMNR /NBNS欺骗 - 利用Active Directory集成的DNS

    利用名称解析协议中的缺陷进行内网渗透是执行中间人(MITM)攻击的常用技术.有两个特别容易受到攻击的名称解析协议分别是链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBNS).攻击者可以 ...

  3. Android log 方法

    package test; public abstract class Logger { private static Class<? extends Logger> mLoggerCla ...

  4. eclipse启动速度优化

    1. 在eclipse.ini文件中添加如下参数(红色部分) -startup plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.ja ...

  5. [luoguU42591][小T的面试题]

    luoguU42591 题意: n个不超过n的正整数中,其中有一个数出现了两次,其余的数都只出现了一次, 求这个出现两次的数. 思路: 这个题的亮点在于内存限制1MB.明显不能再用数组储存了,肯定是用 ...

  6. MIME 类型(HttpContext.Response.ContentType)列表

    按照内容类型排列的 Mime 类型列表 类型/子类型 扩展名 application/envoy evy application/fractals fif application/futurespla ...

  7. mapping生成sam文件时出现[mem_sam_pe] paired reads have different names错误

    用以下命令修复: bbrename.sh in1=read1.fq in2=read2.fq out1=renamed1.fq out2=renamed2.fq bbrename.sh 下载地址网上自 ...

  8. JavaSE学习总结(二)——Java语言基础

    一.Java程序预览 Java的语法与C非常类似,这里先使用几个非常简单的程序以点带面来区分C语Java的区分再细讲每个知识点.该文仅针对有编程基础的朋友参考. 1.1.Hello World 创建j ...

  9. vue 中this指向遇到的坑

    vue中的this指向问题 如果方法中没有使用箭头函数,记得把this赋值给另一个变量再使用.

  10. SQL记录-资源正忙online或nowait

    1.多个tomcat 修改3个端口 2.oracle-00054:资源正忙 被锁住了 建立索引加online参数 1:创建索引时会产生的锁 2:dml 语句会产生的锁 3:索引创建时加上关键字 onl ...