zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    【SICP练习】129 练习3.60
    【SICP练习】128 练习3.59
    【SICP练习】127 练习3.58
    【SICP练习】126 练习3.57
    【SICP练习】125 练习3.56
    【SICP练习】124 练习3.55
    【SICP练习】123 练习3.54
    【SICP练习】122 练习3.53
    【SICP练习】121 练习3.52
    【SICP练习】120 练习3.51
  • 原文地址:https://www.cnblogs.com/slqt/p/9132269.html
Copyright © 2011-2022 走看看