使用Jyhon脚本和PMI模块监控WAS性能数据
使用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性能数据的更多相关文章
- nGrinder二次开发之监控机器性能数据
转载:https://blog.csdn.net/neven7/article/details/53909256 1.背景 做性能测试时,统计性能数据分为被压系统的数据和被压系统所在机器的数据,被压系 ...
- Python监控进程性能数据并画图保存为PDF文档
引言 利用psutil模块(https://pypi.python.org/pypi/psutil/),可以很方便的监控系统的CPU.内存.磁盘IO.网络带宽等性能參数,下面是否代码为监控某个特定程序 ...
- 通过python脚本和zabbix配合监控zookeeper的节点数
通过python脚本和zabbix配合监控zookeeper的节点数 需求描述: 在日常zabbix监控zookeeper的时候,无法通过shell来获取zookeeper的具体节点信息,没有开放具体 ...
- linux基础 -nginx和nfs代理 开发脚本自动部署及监控
开发脚本自动部署及监控 1.编写脚本自动部署反向代理.web.nfs: (1).部署nginx反向代理三个web服务,调度算法使用加权轮询: (2).所有web服务使用共享存储nfs,保证所有web ...
- linux开发脚本自动部署及监控
linux开发脚本自动部署及监控 开发脚本自动部署及监控一.编写脚本自动部署反向代理.web.nfs:要求:1.部署nginx反向代理三个web服务,调度算法使用加权轮询: #!/bin/sh ngx ...
- 使用 Auditbeat 模块监控 shell 命令
使用 Auditbeat 模块监控 shell 命令 Auditbeat Audited 模块可以用来监控所有用户在系统上执行的 shell 命令.在终端用户偶尔才会登录的服务器上,通常需要进行监控. ...
- 优化系统资源ulimit《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》
优化系统资源ulimit<高性能Linux服务器构建实战:运维监控.性能调优与集群应用> 假设有这样一种情况,一台Linux 主机上同时登录了10个用户,在没有限制系统资源的情况下,这10 ...
- 分布式数据存储 - Zabbix监控MySQL性能
Zabbix如何监控mysql性能,我们可以使用mysql自带的模板,可以监控如下内容:OPS(增删改查).mysql请求流量带宽,mysql响应流量带宽,最后会附上相应的监控图! 编写check_m ...
- JS脚本加载与执行对性能的影响
高性能JavaScript-JS脚本加载与执行对性能的影响 在web产品优化准则中,很重要的一条是针对js脚本的加载和执行方式的优化.本篇文章简单描述一下其中的优化准则. 1. 脚本加载优化 1.1 ...
随机推荐
- Quadratic.java
/****************************************************************************** * Compilation: javac ...
- office 激活教程
首先在我的百度云里下载:http://pan.baidu.com/share/link?shareid=2200272243&uk=1985086665激活工具安装包 如果遇到问题,可以加我Q ...
- 浅谈Python闭包
闭包是在其词法上下文中引用了自由变量的函数. 通俗地说,就是函数嵌套(后续称之为外层函数)另外一个函数(后续称之为内层函数),在内层函数中,引用外层函数的变量,每次对内层函数的调用,外层函数变量的值都 ...
- ip更换
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- Golang的防坑小技巧
Golang的防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名小白,在之前没有接触到编程的小伙伴,难免会踩到一些坑,比如说刚刚入门的时候你需要安装环境,学习Gol ...
- exportfs命令
exportfs命令:功能说明 :NFS共享管理 语法格式 exportfs [必要参数][选择参数][目录] 功能描述 exportfs 命令:用于管理NFS(Network File System ...
- 使用sed替换指定文件指定行的指定文本
下面是将85行的127.0.0.1替换为192.168.10.108 sed -i '85{s/127.0.0.1/192.168.10.108/}' /etc/zabbix/zabbix_agent ...
- 记录一个elasticsearch 的索引templates
搞了好长时间终于成了. { "order": 0, "version": 50001, "template": "click.*& ...
- myisamchk命令修复表操作
myisamchk命令使用总结 myisamchk实用程序可以用来获得有关你的数据库表的统计信息或检查.修复.优化他们 1.常用于myisamchk的检查选项--information, -i打印所检 ...
- CM记录-操作系统调优
1.避免使用swap分区---将hadoop守护进程的数据交换到磁盘的行为可能会导致操作超时:物理内存(交换)--Swap分区 2.调整内存分配策略---操作系统内核根据vm.overcommit_m ...