wlst获取weblogic数据源运行时信息

背景

weblogic能够经过console查看数据源运行时统计信息,如当前活动数,最大容量,最小容量等,若是Server数量庞大或者须要作数据源统计监控功能,那么须要经过程序定时获取数据源运行时信息,有两个方案能够获取到数据源运行时信息。html

  • 经过JMX获取weblogic运行时MBean信息,从MBean中获取数据源运行时信息。
  • 经过jython脚本获取数据源运行时信息,这也是本文要介绍的方法。

console上查看数据源运行时信息

wlst 脚本

基本思路就是经过链接服务器获取数据源运行时信息,经过csv格式输出到文件里,csv文件能够经过excel打开作统计分析,也能够将csv文件上传到服务器经过第三方程序进行统计分析。java

import sys
url=sys.argv[1]
username=sys.argv[2]
password=sys.argv[3]
connect(username,password,'t3://'+url)
file=open("datasource.csv",'a')
file.write("machine,server,Name,ActiveConnectionsAverageCount,ActiveConnectionsCurrentCount,ActiveConnectionsHighCount,ConnectionDelayTime,ConnectionsTotalCount,CurrCapacity,CurrCapacityHighCount,DeploymentState,FailedReserveRequestCount,FailuresToReconnectCount,HighestNumAvailable,HighestNumUnavailable,LeakedConnectionCount,NumAvailable,NumUnavailable,PrepStmtCacheAccessCount,PrepStmtCacheAddCount,PrepStmtCacheCurrentSize,PrepStmtCacheDeleteCount,PrepStmtCacheHitCount,PrepStmtCacheMissCount,Properties,ReserveRequestCount,State,WaitingForConnectionCurrentCount,WaitingForConnectionFailureTotal,WaitingForConnectionHighCount,WaitingForConnectionSuccessTotal,WaitingForConnectionTotal,WaitSecondsHighCount\n")
allServers=domainRuntimeService.getServerRuntimes();
if (len(allServers) > 0):
  for tempServer in allServers:
    jdbcServiceRT = tempServer.getJDBCServiceRuntime();
    dataSources = jdbcServiceRT.getJDBCDataSourceRuntimeMBeans();
    if (len(dataSources) > 0):
        for dataSource in dataSources:
            print "Server:" , tempServer
            print "Datasource:" , dataSource.getName()
            print "ActiveCount" , dataSource.getActiveConnectionsCurrentCount()
            file.write(url+",")
            file.write(str(tempServer.getName())+",")
            file.write(str(dataSource.getName())+",")
            file.write(str(dataSource.getActiveConnectionsAverageCount())+",")
            file.write(str(dataSource.getActiveConnectionsCurrentCount())+",")
            file.write(str(dataSource.getActiveConnectionsHighCount())+",")
            file.write(str(dataSource.getConnectionDelayTime())+",")
            file.write(str(dataSource.getConnectionsTotalCount())+",")
            file.write(str(dataSource.getCurrCapacity())+",")
            file.write(str(dataSource.getCurrCapacityHighCount())+",")
            file.write(str(dataSource.getDeploymentState())+",")
            file.write(str(dataSource.getFailedReserveRequestCount())+",")
            file.write(str(dataSource.getFailuresToReconnectCount())+",")
            file.write(str(dataSource.getHighestNumAvailable())+",")
            file.write(str(dataSource.getHighestNumUnavailable())+",")
            file.write(str(dataSource.getLeakedConnectionCount())+",")
            file.write(str(dataSource.getNumAvailable())+",")
            file.write(str(dataSource.getNumUnavailable())+",")
            file.write(str(dataSource.getPrepStmtCacheAccessCount())+",")
            file.write(str(dataSource.getPrepStmtCacheAddCount())+",")
            file.write(str(dataSource.getPrepStmtCacheCurrentSize())+",")
            file.write(str(dataSource.getPrepStmtCacheDeleteCount())+",")
            file.write(str(dataSource.getPrepStmtCacheHitCount())+",")
            file.write(str(dataSource.getPrepStmtCacheMissCount())+",")
            file.write(str(dataSource.getProperties())+",")
            file.write(str(dataSource.getReserveRequestCount())+",")
            file.write(str(dataSource.getState())+",")
            file.write(str(dataSource.getWaitingForConnectionCurrentCount())+",")
            file.write(str(dataSource.getWaitingForConnectionFailureTotal())+",")
            file.write(str(dataSource.getWaitingForConnectionHighCount())+",")
            file.write(str(dataSource.getWaitingForConnectionSuccessTotal())+",")
            file.write(str(dataSource.getWaitingForConnectionTotal())+",")
            file.write(str(dataSource.getWaitSecondsHighCount()))
            file.write("\n")

相关属性介绍

名称 说明
名称 此配置的名称。WebLogic Server 使用 MBean 来实施并保存配置。
MBean 属性:
JDBCDataSourceRuntimeMBean.Name
服务器 部署此数据源的服务器。
活动链接平均计数 此数据源实例中的平均活动链接数。
活动链接是指应用程序使用的链接。仅当已将资源配置为容许收缩时,此值才有效。
MBean 属性:
JDBCDataSourceRuntimeMBean.ActiveConnectionsAverageCount
当前活动链接计数 当前正在由应用程序使用的链接数。
MBean 属性:
JDBCDataSourceRuntimeMBean.ActiveConnectionsCurrentCount
最大活动链接计数 实例化数据源以来数据源此实例中的活动数据库链接的最大数量。
活动链接是指应用程序使用的链接。
MBean 属性:
JDBCDataSourceRuntimeMBean.ActiveConnectionsHighCount
链接延迟时间 建立到数据库的物理链接所花费的平均时间 (毫秒)。
使用全部链接时间的总和除以总链接数来计算该值。
MBean 属性:
JDBCDataSourceRuntimeMBean.ConnectionDelayTime
链接总数 自部署数据源以来在其中累积建立的数据库链接的总数。
MBean 属性:
JDBCDataSourceRuntimeMBean.ConnectionsTotalCount
当前容量 当前数据源链接池中的 JDBC 链接的计数。
MBean 属性:
JDBCDataSourceRuntimeMBean.CurrCapacity
最大当前容量计数 自部署数据源以来数据源的此实例中可用或正在使用 (当前容量) 的数据库链接的最大数量。
MBean 属性:
JDBCDataSourceRuntimeMBean.CurrCapacityHighCount
已启用 指示数据源是处于启用仍是禁用状态:

若是已启用数据源。

若是已禁用数据源。
MBean 属性:
JDBCDataSourceRuntimeMBean.Enabled
失败的保留请求计数 没法完成的今后数据源发出的链接请求的累积动态计数。
MBean 属性:
JDBCDataSourceRuntimeMBean.FailedReserveRequestCount
从新链接失败计数 数据源尝试刷新数据库链接并失败的次数。
若是数据库不可用或到数据库的网络链接中断,链接就会失败。
MBean 属性:
JDBCDataSourceRuntimeMBean.FailuresToReconnectCount
最大可用数量 部署数据源以来,任意时刻此数据源实例中的空闲并可供应用程序使用的数据库链接的最大数量。
MBean 属性:
JDBCDataSourceRuntimeMBean.HighestNumAvailable
泄漏链接计数 泄漏链接数。泄漏链接是指在数据源中保留但在调用 close() 时未返回给数据源的链接。
MBean 属性:
JDBCDataSourceRuntimeMBean.LeakedConnectionCount
可用数量 此数据源实例中当前空闲并可供应用程序使用的数据库链接数。
MBean 属性:
JDBCDataSourceRuntimeMBean.NumAvailable
不可用数量 当前由应用程序使用的链接数,或在此数据源实例中测试的链接数。
MBean 属性:
JDBCDataSourceRuntimeMBean.NumUnavailable
预约义语句高速缓存访问计数 访问语句高速缓存的次数的累积动态计数。
MBean 属性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheAccessCount
预约义语句高速缓存添加计数 添加到语句高速缓存的语句的累积动态计数。
链接池中的每一个链接都有其本身的语句高速缓存。此数字是添加到链接池中全部链接的高速缓存的语句数之和。
MBean 属性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheAddCount
预约义语句高速缓存当前大小 当前高速缓存在语句高速缓存中的预约义语句和可调用语句的数量。
链接池中的每一个链接都有其本身的语句高速缓存。此数字是链接池中全部链接的高速缓存的语句数之和。
MBean 属性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheCurrentSize
预约义语句高速缓存删除计数 从高速缓存丢弃的语句的累积动态计数。
链接池中的每一个链接都有其本身的语句高速缓存。此数字是从链接池中全部链接的高速缓存丢弃的语句数之和。
MBean 属性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheDeleteCount
预约义语句高速缓存命中计数 高速缓存中的语句使用次数的累积动态计数。
MBean 属性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheHitCount
预约义语句高速缓存未命中计数 没法使用高速缓存中的语句知足语句请求的次数。
MBean 属性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheMissCount
保留请求计数 今后数据源发出的链接请求的累积动态计数。
MBean 属性:
JDBCDataSourceRuntimeMBean.ReserveRequestCount
状态 数据源的当前状态。
可能的状态有:
正在运行
- 数据源已启用 (已部署而且未挂起)。这是数据源的正常状态。此状态包括如下情形:数据库服务器不可用而且建立了数据源 (必须启用建立重试),或者全部链接均未经过链接测试 (包括建立、保留或按期测试时进行的测试)。
已挂起
- 已禁用数据源。
关闭
- 已关闭数据源而且已关闭全部数据库链接。
超载
- 池中的全部资源都处于使用状态。
未知
- 数据源状态未知。
MBean 属性:
JDBCDataSourceRuntimeMBean.State
成功的基于 RCLB 的借用计数 发现现有的链接知足运行时链接负载平衡策略的保留请求数。
MBean 属性:
JDBCOracleDataSourceRuntimeMBean.SuccessfulRCLBBasedBorrowCount
失败的基于 RCLB 的借用计数 根据运行时链接负载平衡策略未找到链接的保留请求数。
MBean 属性:
JDBCOracleDataSourceRuntimeMBean.FailedRCLBBasedBorrowCount
成功的基于关系的借用计数 发现现有的链接知足关系策略的保留请求数。
MBean 属性:
JDBCOracleDataSourceRuntimeMBean.SuccessfulAffinityBasedBorrowCount
失败的基于关系的借用计数 未找到关系策略的现有链接的保留请求数。
MBean 属性:
JDBCOracleDataSourceRuntimeMBean.FailedAffinityBasedBorrowCount
JDBC 驱动程序 用于建立数据库链接的 JDBC 驱动程序的驱动程序类名称。
MBean 属性:
JDBCDataSourceRuntimeMBean.VersionJDBCDriver
最长等待秒数 自实例化链接池以来,应用程序等待此链接池实例中的链接的最大秒数 (最长链接保留等待时间)。
已完成的 getConnection 请求返回链接所花费的时间长于任何之前的请求时,将会更新此值。
MBean 属性:
JDBCDataSourceRuntimeMBean.WaitSecondsHighCount
等待链接当前计数 等待数据库链接的链接请求数。
MBean 属性:
JDBCDataSourceRuntimeMBean.WaitingForConnectionCurrentCount
等待链接失败总数 今后数据源发出的必须等待才能得到链接而最终又未能得到链接的链接请求的累积动态计数。
等待的链接请求失败的缘由有多种,其中包括等待时间超过了 ConnectionReserveTimeoutSeconds。
MBean 属性:
JDBCDataSourceRuntimeMBean.WaitingForConnectionFailureTotal
最大等待链接计数 当前同时等待此数据源实例中的链接的最大应用程序请求数。
MBean 属性:
JDBCDataSourceRuntimeMBean.WaitingForConnectionHighCount
等待链接成功总数 今后数据源发出的必须等待才能得到链接而最终成功得到链接的链接请求的累积动态计数。
MBean 属性:
JDBCDataSourceRuntimeMBean.WaitingForConnectionSuccessTotal
等待链接总数 今后数据源发出的必须等待才能得到链接的链接请求 (包括最终得到或未得到链接的链接请求) 的累积动态计数。
MBean 属性:
JDBCDataSourceRuntimeMBean.WaitingForConnectionTotal
实例名 此实例的名称。
MBean 属性:
JDBCOracleDataSourceInstanceRuntimeMBean.InstanceName
签名 惟一标识实例的签名。
MBean 属性:
JDBCOracleDataSourceInstanceRuntimeMBean.Signature
当前权重 实例的当前权重。
MBean 属性:
JDBCOracleDataSourceInstanceRuntimeMBean.CurrentWeight
最大不可用数量 自数据源部署以来数据源的此实例中由应用程序使用或由系统测试的最大数据库链接数。
MBean 属性:
JDBCOracleDataSourceRuntimeMBean.HighestNumUnavailable

运行脚本

要执行wlst脚本,你须要有weblogic环境,建议在服务器上执行。python

  • 先进入到$DOMAIN_HOME/bin/目录,执行setDomainEnv.sh脚本,设置weblogic环境
cd /u01/Middleware/user_projects/domains/portal_domain/bin
. ./setDomainEnv.sh
注意第二行脚本以 .开头,若是没有这个点,设置不生效。
  • 将脚本上传至服务器,经过wlst工具执行脚本
cd /home/oracle/scripts
java weblogic.WLST datasource.py localhost:7001 weblogic password

脚本须要指定console地址,管理员帐号,管理员密码,脚本执行成功后,会在当前目录生成一个datasource.csv文件,能够直接用excel打开,也能够将文件经过curl命令上传至远程服务器。web

统计多台服务器

若是要统计多台服务器,能够再写一个调用脚本,屡次调用datasource.py便可。数据库

cd /u01/Middleware/user_projects/domains/portal_domain/bin
. ./setDomainEnv.sh
cd /home/oracle/scripts
java weblogic.WLST datasource.py localhost:7001 weblogic password
java weblogic.WLST datasource.py localhost:7002 weblogic password
java weblogic.WLST datasource.py localhost:7003 weblogic password
java weblogic.WLST datasource.py localhost:7004 weblogic password
java weblogic.WLST datasource.py localhost:7005 weblogic password
# ...

写在最后

jython属于偏小众的语言,网上资料较少,但用法和python大部分一致,若是查不到jython的资料能够试试查python。缓存

相关文章
相关标签/搜索