1.python的脚本如下:

  1. ###############################################################################
  2. #created on 2013-07-09
  3. #author : zhaolijun
  4. #used to get weblogic server runtime infomation
  5. #wls_ver:weblogic 10.3.5.0
  6. ###############################################################################
  7.  
  8. ###############################################################################
  9. # parameters define
  10. ###############################################################################
  11. username='weblogic'
  12. password='isp902isp'
  13. url='t3://10.200.36.210:17101'
  14. LOOPS=3
  15. IntervalTime=30000
  16. FILEPATH="e:/logs/"
  17. newline = "\n"
  18. ###############################################################################
  19. # define functions
  20. ###############################################################################
  21. def WriteToFile(ServerName, SubModule, LogString, LSTARTTIME, FILENAME):
  22.  
  23. if SubModule == "ServerCoreInfo":
  24. HeadLineInfo = "DateTime,ServerName,ExecuteThreadIdleCount,StandbyThreadCount,ExecuteThreadTotalCount,busythread,HoggingThreadCount"
  25. elif SubModule == "DataSourceInfo":
  26. HeadLineInfo = "DateTime,ServerName,DataSourceName,ActiveConnectionsCurrentCount,CurrCapacity,WaitingForConnectionCurrentCount,WaitingForConnectionTotal"
  27.  
  28. if not os.path.exists(FILENAME):
  29. print "path not exist, create log file by self."
  30. f = open(FILENAME, "a+")
  31. f.write(HeadLineInfo + newline)
  32. f.write(LSTARTTIME + "," + ServerName + "," + LogString + newline)
  33. f.close()
  34. f = None
  35. else:
  36. f = open(FILENAME, "a+")
  37. f.write(LSTARTTIME + "," + ServerName + "," + LogString + newline)
  38. f.close()
  39. f = None
  40.  
  41. def getCurrentTime():
  42. s=SimpleDateFormat("yyyyMMdd HHmmss")
  43. currentTime=s.format(Date())
  44. return currentTime
  45. def GetJdbcRuntimeInfo():
  46. domainRuntime()
  47. servers = domainRuntimeService.getServerRuntimes();
  48. print ' ******************DATASOURCE CONNECTION POOL RUNTIME INFORMATION*******'
  49. for server in servers:
  50. print 'SERVER: ' + server.getName();
  51. ServerName=server.getName()
  52. jdbcRuntime = server.getJDBCServiceRuntime();
  53. datasources = jdbcRuntime.getJDBCDataSourceRuntimeMBeans();
  54. for datasource in datasources:
  55. ds_name=datasource.getName()
  56. print('-Data Source: ' + datasource.getName() + ', Active Connections: ' + repr(datasource.getActiveConnectionsCurrentCount()) + ', CurrCapacity: ' + repr(datasource.getCurrCapacity())+' , WaitingForConnectionCurrentCount: '+repr(datasource.getWaitingForConnectionCurrentCount())+' , WaitingForConnectionTotal: '+str(datasource.getWaitingForConnectionTotal()));
  57. FILENAME=FILEPATH + ServerName +"_"+ ds_name + "_"+ "DataSourceInfo" +".csv"
  58. LSTARTTIME=getCurrentTime()
  59. dsLogString=ds_name +','+ str(datasource.getActiveConnectionsCurrentCount())+','+repr(datasource.getCurrCapacity())+','+str(datasource.getWaitingForConnectionCurrentCount())+','+str(datasource.getWaitingForConnectionTotal())
  60. WriteToFile(ServerName, "DataSourceInfo", dsLogString, LSTARTTIME, FILENAME)
  61.  
  62. def GetThreadRuntimeInfo():
  63. domainRuntime()
  64. servers=domainRuntimeService.getServerRuntimes();
  65. print ' ******************SERVER QUEUE THREAD RUNTIME INFOMATION***************'
  66. for server in servers:
  67. print 'SERVER: ' + server.getName()
  68. ServerName=server.getName()
  69. threadRuntime=server.getThreadPoolRuntime()
  70. hoggingThreadCount = str(threadRuntime.getHoggingThreadCount())
  71. idleThreadCount = str(threadRuntime.getExecuteThreadIdleCount())
  72. standbycount = str(threadRuntime.getStandbyThreadCount())
  73. threadTotalCount = str(threadRuntime.getExecuteThreadTotalCount())
  74. busythread=str(threadRuntime.getExecuteThreadTotalCount()-threadRuntime.getStandbyThreadCount()-threadRuntime.getExecuteThreadIdleCount()-1)
  75. print ('-Thread :' + 'idleThreadCount:' + idleThreadCount+' ,standbycount:'+standbycount+' , threadTotalCount: '+threadTotalCount+' , hoggingThreadCount:'+hoggingThreadCount+' ,busythread:'+busythread)
  76. FILENAME=FILEPATH + ServerName +"_"+ "ServerCoreInfo" +".csv"
  77. LSTARTTIME=getCurrentTime()
  78. serLogString=idleThreadCount+','+standbycount+','+threadTotalCount+','+busythread+','+hoggingThreadCount
  79. WriteToFile(ServerName, "ServerCoreInfo", serLogString, LSTARTTIME, FILENAME)
  80. ###############################################################################
  81. ############ main
  82. ###############################################################################
  83. if __name__ == '__main__':
  84. from wlstModule import *#@UnusedWildImport
  85. #import sys, re, os
  86. #import java
  87. from java.util import Date
  88. from java.text import SimpleDateFormat
  89. print 'starting the script ....'
  90. connect(username,password, url);
  91. try:
  92. for i in range(LOOPS) :
  93.  
  94. GetThreadRuntimeInfo()
  95. GetJdbcRuntimeInfo()
  96. java.lang.Thread.sleep(IntervalTime)
  97.  
  98. except Exception, e:
  99. print e
  100. dumpStack()
  101. raise
  102. disconnect()

ColletRuntime.py

2.将脚本放到weblogic的安装目录D:\weblogic\bea\wlserver_10.3\common\bin下
3.修改collectionRuntime.py中的weblogic的用户名,密码,IP,端口,日志路径修改成正确的数据。

4.打开CMD窗口,切换到D:\weblogic\bea\wlserver_10.3\common\bin下,然后执行命令wlst.cmd CollectRuntime.py

5.在日志路径下会看到自动生成的CSV文件。能看到HoggingThread和busyThread的数据。

监控gc执行情况的方法如下:

1. 首先需要安装jdk,在jdk/bin目录下,例如:C:\Program Files (x86)\Java\jdk1.6.0_10\bin

2. 打开CMD窗口,切换到jdk/bin目录下,使用命令jstat -gcutil 4556 5s 100 >d:/jstat/text.log ,其中的4556为服务器的进程号。通过jconsole查询得出。

使用 > d:/jstat/text.log的方式可以将jstat的输出结果保存到文件中。

3. 在输出的结果中,可以看到full gc的输出结果。

4. 在监控full gc和hogging thread的过程中,adminserver是不用监控的。

计算方法:

1. full gc间隔,使用FGC列计算,最后一项减去第一项,除以场景时间(分)。

2. gc执行时间,使用FGCT列计算,最后一项减去第一项,除以场景的执行时间(秒)。

3. hogging  thread 和 busy thread都是找出最大值即可

至此,监控过程全部完成。

使用python脚本监控weblogic的更多相关文章

  1. Redis之使用python脚本监控队列长度

    编辑python脚本redis_conn.py #!/usr/bin/env python #ending:utf-8 import redis def redis_conn(): pool = re ...

  2. zabbix 调用python脚本监控 磁盘剩余空间(创建模版,创建监控项,创建触发器)

    主要 记录一下  使用zabbix 自己创建模版.监控项.触发器,并调用python脚本. 需求: 监控备份机磁盘剩余空间(windows系统) 一.安装zabbix_agent 比较简单 修改配置文 ...

  3. python脚本监控股票价格钉钉推送

    关注股市,发家致富 问题:一天天盯着股市多累,尤其上班,还不能暴露,股票软件,红红绿绿,这么明显的列表页面,一看就知道在摸鱼.被领导发现饭碗就没了 解决:搞个脚本监听一下自己关注的股票,一到价格就发个 ...

  4. Python 脚本 监控数据库状态

    打算用这个脚本通过zabbix 监控Mariadb的,无奈要等Mariadb完全上线才行,所以先写一个粗略大致功能的版本. #coding:utf-8 #author:shiyiwen #versio ...

  5. 在nagios中使用python脚本监控linux主机

    在被监控端192.168.5.1101.先把getload.py放到/usr/local/nagios/libexec内[root@nhserver1 ~]# vim /usr/local/nagio ...

  6. 写一个python脚本监控在linux中的进程

    在虚拟机中安装Linux中的CentOS7系统 https://baijiahao.baidu.com/s?id=1597320700700593557&wfr=spider&for= ...

  7. python脚本监控获取当前Linux操作系统[内存]/[cpu]/[硬盘]/[登录用户]

    此脚本应用在linux, 前提是需要有python和python的psutil模块 脚本 #!/usr/bin/env python # coding=utf-8 import sys import ...

  8. linux:使用python脚本监控某个进程是否存在(不使用crontab)

    背景: 需要每天定时去检测crontab进程是否启动,所以不能用crontab来启动检测脚本了,直接使用while 循环和sleep方式实现定时检测 # coding:utf-8 import os ...

  9. WebLogic口令猜解工具【Python脚本】

    WebLogic 默认端口7001 可以通过如下链接访问控制台 http://10.9.1.1:7001/console/login/LoginForm.jsp 写了一个简单的猜解脚本,半成品,做个记 ...

随机推荐

  1. ArcEngine和GDAL读写栅格数据机制对比(二)—— IPixelBlock读写栅格

    以下是设定一个矩形框,用IPixelBlock将256*256瓦片tile拼接成一个整块影像的代码,row1, col1, row2, col2是一个矩形框行列号范围.level是瓦片的金字塔等级.这 ...

  2. javascript设计模式学习之十——组合模式

    一.组合模式定义及使用场景 组合模式将对象组合成树形结构,用以表示“部分—整体”的层次结构,除了用来表示树形结构之外,组合模式还可以利用对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性. ...

  3. 转: 利用 DEBUG_NEW 来追溯 Memory leak 内存泄漏

    参考: https://msdn.microsoft.com/en-us/library/tz7sxz99.aspx http://www.cnblogs.com/taoxu0903/archive/ ...

  4. 深入理解CSS3 Animation 帧动画 ( steps )

    作者:Aaron的博客 网址:http://www.cnblogs.com/aaronjs/p/4642015.html --------------------------------------- ...

  5. mongodb的基本操作与插入文档(document)

    一.mongodb的基本操作: 1.查看mongodb当前所有的databases : show dbs 2.选择数据库(database) : use databaseName(该数据库不存在则会自 ...

  6. mysql:批量更新

    (优化前)一般使用的批量更新的方法: foreach ($display_order as $id => $ordinal) {     $sql = "UPDATE categori ...

  7. Angular.js+Bootstrap实现表格分页

    最近一直学习Angular.js,在学习过程中也练习了很多的Demo,这里先贴一下表格+分页. 先上图看看最终结果: 不得不说Angular.js代码风格很受人欢迎,几十行代码清晰简洁的实现了上面的功 ...

  8. 从零开始攻略PHP(9)——错误和异常处理

    1.Exception类 这个类是PHP为异常处理提供的内置类.构造函数的两个参数分别是错误消息和错误代码. 除了构造函数之外,该类还提供了如下的内置方法: · getCode() 返回传递给构造函数 ...

  9. Jenkins自动构建

    Jenkins is an award-winning, cross-platform, continuous integration and continuous delivery applicat ...

  10. Effective C++ 4.设计与声明

    //条款18:让接口容易被正确使用,不易被误用 // 1.如果客户企图使用某个接口而却没有获得他所预期的行为,那么这个代码就不该通过编译. // 2.促进正确使用的方法包括接口的一致性,以及与内置类型 ...